diff options
| author | Santo Cariotti <dcariotti24@gmail.com> | 2020-03-20 10:11:03 +0000 |
|---|---|---|
| committer | Santo Cariotti <dcariotti24@gmail.com> | 2020-03-20 10:11:03 +0000 |
| commit | a79bca799a5830b035df818d7e87425c25d081df (patch) | |
| tree | 2089b30b66f0022cae889cb7739860dc143d5314 /src/frest/auth/models.py | |
| parent | 6f3c1d94a6a8858369256b63cec90d42d61706ae (diff) | |
chore: move frest dir into src
Diffstat (limited to 'src/frest/auth/models.py')
| -rw-r--r-- | src/frest/auth/models.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/frest/auth/models.py b/src/frest/auth/models.py new file mode 100644 index 0000000..ea79def --- /dev/null +++ b/src/frest/auth/models.py @@ -0,0 +1,52 @@ +from database import db +from datetime import datetime +import string +import random +from hashlib import sha256 +from pytz import timezone +import os + + +def generate_token(): + chars = string.ascii_uppercase + string.ascii_lowercase + string.digits + return "".join(random.choice(chars) for _ in range(18)) + + +class User(db.Model): + userId = db.Column(db.Integer, primary_key=True) + email = db.Column(db.String(30)) + password = db.Column(db.String(30)) + is_admin = db.Column(db.Boolean, default=False) + name = db.Column(db.String(30)) + created_at = db.Column(db.DateTime) + + def __init__(self, **kwargs): + self.email = kwargs.get("email") + psw_hash = sha256(kwargs.get("password").encode()) + self.password = psw_hash.hexdigest() + self.name = kwargs.get("name") + self.is_admin = kwargs.get("is_admin") + self.created_at = datetime.now( + timezone(os.getenv("FREST_TIMEZONE", "Europe/Rome")) + ) + + def __repr__(self): + return f"<User '{self.userId}'>" + + +class Token(db.Model): + tokenId = db.Column(db.Integer, primary_key=True) + string = db.Column(db.String(20)) + created_at = db.Column(db.DateTime) + expired = db.Column(db.Boolean) + user_id = db.Column(db.Integer, db.ForeignKey("user.userId"), nullable=False) + user = db.relationship("User", backref=db.backref("tokens", lazy=True)) + + def __init__(self, user): + self.user = user + self.string = f"{generate_token()}==" + self.created_at = datetime.utcnow() + self.expired = False + + def __repr__(self): + return f"<Token '{self.string}'>" |
