aboutsummaryrefslogtreecommitdiff
path: root/web/app/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/app/models.py')
-rw-r--r--web/app/models.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/web/app/models.py b/web/app/models.py
new file mode 100644
index 0000000..e4bbb00
--- /dev/null
+++ b/web/app/models.py
@@ -0,0 +1,36 @@
+from flask_login import UserMixin
+from tinydb import TinyDB, Query
+
+db = TinyDB('db.json')
+users_table = db.table('users')
+UserQuery = Query()
+
+class User(UserMixin):
+ def __init__(self, username, admin):
+ self.id = username
+ self.admin = admin
+
+ @staticmethod
+ def get(username):
+ result = users_table.get(UserQuery.username == username)
+ if result:
+ return User(username, result['admin'])
+ return None
+
+ @staticmethod
+ def validate_login(username, password):
+ user = users_table.get((UserQuery.username == username) & (UserQuery.password == password))
+ if user:
+ return User(username, user['admin'])
+
+ return None
+
+ @staticmethod
+ def create(username, password, admin=False):
+ if users_table.get(UserQuery.username == username):
+ return None
+
+ users_table.insert({'username': username, 'password': password, 'admin': admin})
+ return User(username, admin)
+
+User.create('admin', 'dontguessthisplzahh', admin=True)