about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--main.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/main.py b/main.py
index 1c810a1..fc12755 100644
--- a/main.py
+++ b/main.py
@@ -1,5 +1,8 @@
 """Main entry point for project"""
+import sys
+import uuid
 import json
+import click
 from math import ceil
 from datetime import datetime
 
@@ -84,6 +87,26 @@ def init_dev_clients():
     with db.connection(app.config["AUTH_DB"]) as conn, db.cursor(conn) as cursor:
         cursor.executemany(dev_clients_query, dev_clients)
 
+
+@app.cli.command()
+@click.argument("user_id", type=click.UUID)
+def assign_system_admin(user_id: uuid.UUID):
+    dburi = app.config["AUTH_DB"]
+    with db.connection(dburi) as conn, db.cursor(conn) as cursor:
+        cursor.execute("SELECT * FROM users WHERE user_id=?",
+                       (str(user_id),))
+        row = cursor.fetchone()
+        if row:
+            cursor.execute(
+                "SELECT * FROM roles WHERE role_name='system-administrator'")
+            admin_role = cursor.fetchone()
+            cursor.execute("INSERT INTO user_roles VALUES (?,?)",
+                           (str(user_id), admin_role["role_id"]))
+            return 0
+        print(f"ERROR: Could not find user with ID {user_id}",
+              file=sys.stderr)
+        sys.exit(1)
+
 ##### END: CLI Commands #####
 
 if __name__ == '__main__':