mid-kid
3 weeks ago
2 changed files with 94 additions and 23 deletions
@ -0,0 +1,56 @@ |
|||
from threading import Lock |
|||
import sqlite3 |
|||
import contextlib |
|||
|
|||
class Authentication: |
|||
def __init__(self, database): |
|||
self.db = database |
|||
self.create() |
|||
|
|||
def connect(self): |
|||
return contextlib.closing(sqlite3.connect(self.db)) |
|||
|
|||
def create(self): |
|||
with self.connect() as c: |
|||
c.execute( |
|||
"CREATE TABLE IF NOT EXISTS users(profileId, token, user)") |
|||
c.execute( |
|||
"CREATE TABLE IF NOT EXISTS new(user)") |
|||
|
|||
def check_token(self, profileId, token): |
|||
token = token.split(".")[-1] |
|||
if len(token) != 43: |
|||
return False |
|||
with self.connect() as c: |
|||
res = cur.execute("SELECT token FROM users WHERE profileId=?", |
|||
(profileId,)).fetchone() |
|||
if res is not None and res[0] != token: |
|||
return False |
|||
return True |
|||
|
|||
def check_user(self, profileId, token, user): |
|||
with self.connect() as c: |
|||
res = c.execute("SELECT user FROM users WHERE profileId=?", |
|||
(profileId,)).fetchone() |
|||
if res is not None: |
|||
return res[0] == user |
|||
|
|||
# Check if new user can be created |
|||
res = c.execute("SELECT 1 FROM new WHERE user=?", |
|||
(user,)).fetchone() |
|||
if res is None and res[0] != 1: |
|||
return False |
|||
c.execute("DELETE FROM new WHERE user=?", (user,)) |
|||
|
|||
# Create new user |
|||
c.execute("INSERT INTO users VALUES (?, ?, ?)", |
|||
(profileId, token, user)) |
|||
return True |
|||
|
|||
def get_user(self, profileId): |
|||
with self.connect() as c: |
|||
res = c.execute("SELECT user FROM users WHERE profileId=?", |
|||
(profileId)).fetchone() |
|||
if res is None or not isinstance(res[0], str): |
|||
return None |
|||
return res[0] |
Loading…
Reference in new issue