Files
eamco_office_api/app/classes/auth.py
2024-02-28 16:10:40 -05:00

79 lines
2.0 KiB
Python

from flask_login import UserMixin, AnonymousUserMixin
from app import db, ma, login_manager
from datetime import datetime
from uuid import uuid4
def get_uuid():
return uuid4().hex
class Auth_User(UserMixin, db.Model):
__tablename__ = 'auth_users'
__bind_key__ = 'eamco'
__table_args__ = {"schema": "public"}
id = db.Column(db.Integer,
autoincrement=True,
primary_key=True,
unique=True)
uuid = db.Column(db.String(32), default=get_uuid)
api_key = db.Column(db.TEXT)
username = db.Column(db.VARCHAR(40))
password_hash = db.Column(db.TEXT)
member_since = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
email = db.Column(db.VARCHAR(350))
last_seen = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
admin = db.Column(db.INTEGER)
admin_role = db.Column(db.INTEGER)
confirmed = db.Column(db.INTEGER)
def __init__(self,
username,
api_key,
password_hash,
member_since,
email,
last_seen,
admin,
admin_role,
confirmed,
):
self.username = username
self.api_key = api_key
self.password_hash = password_hash
self.member_since = member_since
self.email = email
self.last_seen = last_seen
self.admin = admin
self.admin_role = admin_role
self.confirmed = confirmed
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return self.id
class Auth_User_Schema(ma.SQLAlchemyAutoSchema):
class Meta:
model = Auth_User
user_schema = Auth_User_Schema()
users_schema = Auth_User_Schema(many=True)
class AnonymousUser(AnonymousUserMixin):
def __init__(self):
self.username = 'Guest'
login_manager.anonymous_user = AnonymousUser