class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) active = db.Column(db.Boolean(), default=True, nullable=False) def __init__(self, name, description): self.name = name self.description = description self.active = True
class Alex(db.Model): __tablename__ = "test" id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(32), nullable=False, unique=True) properties = db.Column(db.String(512), nullable=False, unique=False) active = db.Column(db.Boolean(), default=True, nullable=False) def __init__(self, name, properties): self.name = name self.properties = properties self.active = True
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(191), unique=True) password = db.Column(db.String(191)) username = db.Column(db.String(191)) full_name = db.Column(db.String(191)) phone = db.Column(db.String(191)) avatar = db.Column(db.String(191)) socketio_session_id = db.Column(db.String(191)) active = db.Column(db.Boolean(), default=True) created_at = db.Column(db.DateTime(), default=datetime.utcnow()) verified_at = db.Column(db.DateTime()) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) permissions = db.relationship('Permission', secondary=permissions_users, backref=db.backref('users', lazy='dynamic')) def get_password_reset_token(self, expires_sec=1800): s = Serializer(app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_password_reset_token(token): s = Serializer(app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.query.get(user_id) def has_role(self, role_name): role = Role.query.filter_by(name=role_name).first() return True if role in self.roles else False def has_permission(self, permission_name): p = Permission.query.filter_by(name=permission_name).first() if p in self.permissions: return True for role in self.roles: if p in role.permissions: return True return False def assign_role(self, role_name): r = Role.query.filter_by(name=role_name).first() self.roles.append(r) def assign_permission(self, permission_name): p = Permission.query.filter_by(name=permission_name).first() self.permissions.append(p)
class User(db.Model, UserMixin): # 用户表 id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(11), nullable=False, unique=True) password = db.Column(db.String(128), nullable=False) active = db.Column(db.Boolean(), default=True, nullable=False) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) def __init__(self, username=None, password=None, active=True): self.username = username self.password = django_pbkdf2_sha256.encrypt(password) self.active = True @staticmethod def authenticate(username, password): user = User.query.filter(User.username == username).one() if user and django_pbkdf2_sha256.verify(password, user.password): # 自行选择密码算法 return user