mirror of
https://github.com/Xevion/v1.xevion.dev.git
synced 2025-12-08 18:09:13 -06:00
Updated roles, db migrate, @require_role v1
This commit is contained in:
@@ -11,6 +11,7 @@ class User(UserMixin, db.Model):
|
||||
password_hash = db.Column(db.String(64))
|
||||
posts = db.relationship('Post', backref='author', lazy='dynamic')
|
||||
search_history = db.relationship('Search', backref='user', lazy='dynamic')
|
||||
uroles = db.Column(db.String(80), default='')
|
||||
|
||||
def set_password(self, password):
|
||||
self.password_hash = generate_password_hash(password)
|
||||
@@ -19,6 +20,33 @@ class User(UserMixin, db.Model):
|
||||
if self.password_hash is None:
|
||||
raise "{} has no password_hash set!".format(self.__repr__())
|
||||
return check_password_hash(self.password_hash, password)
|
||||
|
||||
def get_roles(self):
|
||||
return self.uroles.split(' ')
|
||||
|
||||
def add_roles(self, roles):
|
||||
user_roles = self.uroles.split(' ')
|
||||
if type(roles) == str:
|
||||
user_roles.append(roles)
|
||||
elif type(roles) == list:
|
||||
user_roles.extend(roles)
|
||||
user_roles = ' '.join(user_roles)
|
||||
self.uroles = user_roles
|
||||
|
||||
# Input: ['Insane', ['Fortunate', 'Blessed']]
|
||||
# Meaning: Must have 'Insane' role, as well as 'Fortunate' or 'Blessed' roles.
|
||||
def has_roles(self, roles):
|
||||
user_roles = self.uroles.split(' ')
|
||||
for reqrole in roles:
|
||||
# If we have this role
|
||||
if type(reqrole) == str:
|
||||
if reqrole not in user_roles:
|
||||
return False
|
||||
# If we have any of these roles
|
||||
elif type(reqrole) == list:
|
||||
if not any([subreqrole in user_roles for subreqrole in reqrole]):
|
||||
return False
|
||||
return True
|
||||
|
||||
def __repr__(self):
|
||||
return '<User {}>'.format(self.username)
|
||||
|
||||
Reference in New Issue
Block a user