Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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