diff options
Diffstat (limited to 'web/app/models.py')
-rw-r--r-- | web/app/models.py | 36 |
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) |