feat: SSO

This commit is contained in:
2026-05-28 23:59:14 +00:00
parent fc5699a04c
commit 7526736e80
9 changed files with 442 additions and 27 deletions
+31
View File
@@ -540,6 +540,16 @@ def init_db(app=None):
logging.info("Database indexes created successfully")
cursor.execute('''
CREATE TABLE IF NOT EXISTS AppSettings (
id INTEGER PRIMARY KEY,
is_sso_enabled BOOLEAN DEFAULT FALSE
)
''')
cursor.execute('SELECT id FROM AppSettings WHERE id = 1')
if not cursor.fetchone():
cursor.execute('INSERT INTO AppSettings (id) VALUES (1)')
run_v2_migrations(cursor, conn)
conn.commit()
@@ -596,3 +606,24 @@ def run_v2_migrations(cursor, conn):
logging.info("Removed orphaned permission: %s", perm_name)
logging.info("v2 database migrations complete")
def get_app_settings(conn):
cursor = conn.cursor(dictionary=True)
cursor.execute('SELECT is_sso_enabled FROM AppSettings WHERE id = 1')
row = cursor.fetchone()
if not row:
return {'is_sso_enabled': False}
return row
def update_app_settings(conn, **fields):
allowed = {'is_sso_enabled'}
updates = {k: v for k, v in fields.items() if k in allowed}
if not updates:
return
columns = ', '.join(f'{k} = %s' for k in updates)
values = list(updates.values())
cursor = conn.cursor()
cursor.execute(f'UPDATE AppSettings SET {columns} WHERE id = 1', values)
conn.commit()