feat(auth): seed/update default admin (ruslan/1234) on startup
This commit is contained in:
38
main.py
38
main.py
@@ -16,6 +16,44 @@ app.secret_key = 'sk_f098a9f7206d40f89bc2a0dd1d2d9182' # нужен для се
|
||||
app.jinja_env.filters['from_json'] = json.loads
|
||||
initialize_db()
|
||||
|
||||
# Ensure default admin exists (for dev/tests). Controlled via env, with defaults.
|
||||
import os
|
||||
|
||||
def ensure_default_admin():
|
||||
username = os.environ.get('ADMIN_USERNAME', 'ruslan')
|
||||
password = os.environ.get('ADMIN_PASSWORD', '1234')
|
||||
email = os.environ.get('ADMIN_EMAIL', 'ruslan@example.com')
|
||||
|
||||
user = User.get_or_none(User.username == username)
|
||||
if user:
|
||||
changed = False
|
||||
if not user.is_admin:
|
||||
user.is_admin = True
|
||||
changed = True
|
||||
# If password differs, reset to provided one
|
||||
try:
|
||||
# check_password_hash is available from werkzeug
|
||||
if not check_password_hash(user.password_hash, password):
|
||||
user.password_hash = generate_password_hash(password)
|
||||
changed = True
|
||||
except Exception:
|
||||
user.password_hash = generate_password_hash(password)
|
||||
changed = True
|
||||
if changed:
|
||||
user.save()
|
||||
else:
|
||||
User.create(
|
||||
username=username,
|
||||
email=email,
|
||||
full_name='Администратор',
|
||||
password_hash=generate_password_hash(password),
|
||||
is_admin=True
|
||||
)
|
||||
|
||||
# Seed admin on startup unless explicitly disabled
|
||||
if os.environ.get('SEED_ADMIN_DISABLED') != '1':
|
||||
ensure_default_admin()
|
||||
|
||||
login_manager = LoginManager()
|
||||
login_manager.init_app(app)
|
||||
login_manager.login_view = 'login'
|
||||
|
||||
Reference in New Issue
Block a user