aboutsummaryrefslogtreecommitdiff
path: root/app/func/generate_api_key.py
diff options
context:
space:
mode:
authorParker <contact@pkrm.dev>2024-02-26 20:55:05 -0600
committerParker <contact@pkrm.dev>2024-02-26 20:55:05 -0600
commitbce756b9aa51dfdfa2c2e6cdef4f88f660b80148 (patch)
treed2e7a238b04d4339bedf05f626bff15d48a61945 /app/func/generate_api_key.py
parenta0bfa5440603841c40e6a29495ca49c09a5d8c83 (diff)
Overhaul: Flask -> FastAPI
Diffstat (limited to 'app/func/generate_api_key.py')
-rw-r--r--app/func/generate_api_key.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/app/func/generate_api_key.py b/app/func/generate_api_key.py
new file mode 100644
index 0000000..a40c96a
--- /dev/null
+++ b/app/func/generate_api_key.py
@@ -0,0 +1,23 @@
+import sqlalchemy
+from sqlalchemy import exc
+import random
+import string
+
+from db import engine
+
+"""
+Generate and return a randomized API key string for the user
+Keys are composed of 20 uppercase ASCII characters
+"""
+def generate_api_key():
+ with engine.begin() as conn:
+ while True:
+ try:
+ api_key_string = ''.join(random.choices(string.ascii_uppercase, k=20))
+ conn.execute(sqlalchemy.text('INSERT INTO keys(api_key) VALUES(:api_key)'), [{'api_key': api_key_string}])
+ conn.commit()
+ break
+ except exc.IntegrityError:
+ continue
+
+ return api_key_string \ No newline at end of file