refactor security to Flask-Security - Part 1
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from ..extensions import db
|
||||
from flask_security import UserMixin, RoleMixin
|
||||
|
||||
|
||||
class Tenant(db.Model):
|
||||
@@ -28,7 +29,24 @@ class Tenant(db.Model):
|
||||
return '<Tenant %r>' % self.name
|
||||
|
||||
|
||||
class User(db.Model):
|
||||
class Role(db.Model, RoleMixin):
|
||||
__bind_key__ = 'public'
|
||||
__table_args__ = {'schema': 'public'}
|
||||
|
||||
id = db.Column(db.Integer(), primary_key=True)
|
||||
name = db.Column(db.String(80), unique=True)
|
||||
description = db.Column(db.String(255))
|
||||
|
||||
|
||||
class RolesUsers(db.Model):
|
||||
__bind_key__ = 'public'
|
||||
__table_args__ = {'schema': 'public'}
|
||||
|
||||
user_id = db.Column(db.Integer(), db.ForeignKey('public.user.id', ondelete='CASCADE'), primary_key=True)
|
||||
role_id = db.Column(db.Integer(), db.ForeignKey('public.role.id', ondelete='CASCADE'), primary_key=True)
|
||||
|
||||
|
||||
class User(db.Model, UserMixin):
|
||||
"""User model"""
|
||||
|
||||
__bind_key__ = 'public'
|
||||
@@ -46,17 +64,19 @@ class User(db.Model):
|
||||
first_name = db.Column(db.String(80), nullable=False)
|
||||
last_name = db.Column(db.String(80), nullable=False)
|
||||
is_active = db.Column(db.Boolean, default=True)
|
||||
is_tester = db.Column(db.Boolean, default=False)
|
||||
is_admin = db.Column(db.Boolean, default=False)
|
||||
is_super = db.Column(db.Boolean, default=False)
|
||||
fs_uniquifier = db.Column(db.String(255), unique=True, nullable=False)
|
||||
confirmed_at = db.Column(db.DateTime, nullable=True)
|
||||
valid_to = db.Column(db.Date, nullable=True)
|
||||
|
||||
# Login Information
|
||||
last_login = db.Column(db.DateTime, nullable=True)
|
||||
authenticated = db.Column(db.Boolean, default=False)
|
||||
# Security Trackable Information
|
||||
last_login_at = db.Column(db.DateTime, nullable=True)
|
||||
current_login_at = db.Column(db.DateTime, nullable=True)
|
||||
last_login_ip = db.Column(db.String(255), nullable=True)
|
||||
current_login_ip = db.Column(db.String(255), nullable=True)
|
||||
login_count = db.Column(db.Integer, nullable=False, default=0)
|
||||
|
||||
# Relations
|
||||
roles = db.relationship('Role', secondary='public.roles_users', backref=db.backref('users', lazy='dynamic'))
|
||||
tenant_id = db.Column(db.Integer, db.ForeignKey('public.tenant.id'), nullable=False)
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
Reference in New Issue
Block a user