diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | db.py | 80 |
2 files changed, 77 insertions, 5 deletions
diff --git a/README.md b/README.md index c77441c..8549224 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ soktdeer rewrite - [ ] account deletion - [ ] password changes - [ ] inbox (getting) -### moderation (From hydrogen) +### moderation (from hydrogen) - [ ] bans - [ ] invite codes - [ ] kicking diff --git a/db.py b/db.py index de28d7a..3feef6c 100644 --- a/db.py +++ b/db.py @@ -20,7 +20,79 @@ except Exception as e: print(e) exit() -database = client["SoktDeer"] -postsd = database["Posts"] -usersd = database["Users"] -inboxd = database["Inbox"] \ No newline at end of file +database = client[os.getenv("DATABASE_NAME")] +postsd = database[os.getenv("POST_COLLECTION")] +usersd = database[os.getenv("USER_COLLECTION")] +inboxd = database[os.getenv("INBOX_COLLECTION")] + +class acc: + def get(username): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + else: + return user + + def add(data, username=None): + user = usersd.find_one({"username": username}) + if user: + return "exists" + try: + usersd.insert_one(data) + except Exception as e: + return "fail" + return True + + def edit(data, username): + filter = { 'username': username } + endr = { '$set': data } + try: + usersd.update_one(filter, endr) + except Exception as e: + print(e) + return False + return True + + def remove(username): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + try: + usersd.delete_one({"username": username}) + except: + return "fail" + return True + + def verify(username, token): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + if user["banned_until"] > round(time.time()): + return "banned" + elif user["secure"]["token"] != token: + return "unauthorized" + else: + return True + + def verify_pswd(username, password): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + if user["banned_until"] > round(time.time()): + return "banned" + elif not scrypt.verify(password, user["secure"]["password"]): + return "unauthorized" + else: + return {"token": user["secure"]["token"]} + + def get_ban(username): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + return {"banned_until": user["banned_until"], "ban_reason": user["secure"]["ban_reason"]} + + def get_perms(username): + user = usersd.find_one({"username": username}) + if not user: + return "notExists" + return user["permissions"] \ No newline at end of file |