78 lines
2.0 KiB
Python
Executable File
78 lines
2.0 KiB
Python
Executable File
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'
|
|
__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 |