summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--db.py80
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