рдирдорд╕реНрддреЗ, рдореИрдВ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (UserMIxin рдЙрджрд╛рд╣рд░рдг) рдореЗрдВ рднреВрдорд┐рдХрд╛рдПрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП ..
my_user = UserMixin()
my_user.add_roles('admin', 'superadmin')
db.session.add(my_user)
db.session.commit()
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдХрд░рддрд╛ рд╣реВрдВ
my_user = User(name="xxx", email="[email protected]", pass="1234")
db.session.add(my_user)
db.session.commit()
рдореЗрд░рд╛ рдореЙрдбрд▓ рдЗрд╕ рддрд░рд╣ рд╣реИ:
class User(UserMixin):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
password = db.Column(db.String(50), nullable=False)
def __init__(self, name, email, password, roles=None):
"""Setting params to the object."""
self.name = name
self.email = email.lower()
self.password = bcrypt.hashpw(
password.encode('utf-8'), bcrypt.gensalt())
UserMixin.__init__(self, roles)
.... other methods ...
рдореИрдВ рд╕рд╣реА рдХреИрд╕реЗ рдХрд░реВрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕реБрдЭрд╛рд╡? :)
(рдореИрдВ @bepetersn рдХрд╛рдВрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ)
рд╣рд╛рдп рд▓рд┐рдпреЛ, рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛, рдФрд░ рдореБрдЭреЗ рдЖрдкрдХреА рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИред рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрдЦрд╛, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ (рдиреАрдЪреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ https://github.com/bepetersn/flask-permissions-ex рдкрд░ рдЖрдкрдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рджреЗрдЦреЗ рд╣реБрдП рдХреБрдЫ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкрд░рд┐рд╡рд░реНрддрди (рдкреБрдирдГ: рдЙрдкрд░реНрдпреБрдХреНрдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ) рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдм UserMixin рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдПрдХ рд╕рд╛рд░ рдореЙрдбрд▓ рдЖрдзрд╛рд░ рд╣реИред рддреЛ рдЖрдк рдКрдкрд░ рдЕрдкрдиреЗ рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд╕реЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ -- рднреВрдорд┐рдХрд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЖрдкрд╕реЗ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред
рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдореБрдЭреЗ рдмрддрд╛рдУред
рд╣рд╛рдп рдмреНрд░рд╛рдпрди,
рдореЗрд░реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рднреВрдорд┐рдХрд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ .. рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ :)
from app import db
from flask_permissions.models import UserMixin, Role
db.create_all()
superadmin.add_abilities(
'create_admin', 'edit_admin_user', 'delete_admin_user')
db.session.add(superadmin)
db.session.commit()
#....
first_user = UserMixin
first_user.add_roles('superadmin') ###triggers the error
db.session.add(first_user)
db.session.commit()
рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдорд╛рдирддрд╛ рд╣реВрдВ ...
first_user = UserMixin
рдЖрдкрдХрд╛ рдорддрд▓рдм рдЗрд╕рд╕реЗ рд╣реИ...
first_user = UserMixin()
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ ...
first_user = User()
(рдЬрд╣рд╛рдВ User
рдЖрдкрдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ UserMixin
рдЙрдкрд╡рд░реНрдЧ рд╣реИ)ред
рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ UserMixin рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ UserMixin рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдореИрдВ рдЗрд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рднреА рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдкреАрдЖрд░ рдЕрдВрддрддрдГ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдорд╛рдирддрд╛ рд╣реВрдВ ...
first_user = UserMixin
рдЖрдкрдХрд╛ рдорддрд▓рдм рдЗрд╕рд╕реЗ рд╣реИ...
first_user = UserMixin()
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ ...
first_user = User()
(рдЬрд╣рд╛рдВ
User
рдЖрдкрдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛UserMixin
рдЙрдкрд╡рд░реНрдЧ рд╣реИ)редрдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ UserMixin рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ UserMixin рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдореИрдВ рдЗрд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рднреА рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдкреАрдЖрд░ рдЕрдВрддрддрдГ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛!