python - flask-security login via username and not email -
i wanted have field in user
model through user logs in username
instead of email
i defined:
app.config['security_user_identity_attributes'] = 'username'
but i'm still getting:
user_datastore.add_role_to_user(name, 'mgmt') file "/users/boazin/sentinal/sentinel-cloud/.env/lib/python2.7/site-packages/flask_security/datastore.py", line 105, in add_role_to_user user, role = self._prepare_role_modify_args(user, role) file "/users/boazin/sentinal/sentinel-cloud/.env/lib/python2.7/site-packages/flask_security/datastore.py", line 72, in _prepare_role_modify_args user = self.find_user(email=user) file "/users/boazin/sentinal/sentinel-cloud/.env/lib/python2.7/site-packages/flask_security/datastore.py", line 203, in find_user return self.user_model.query.filter_by(**kwargs).first() file "/users/boazin/sentinal/sentinel-cloud/.env/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1333, in filter_by key, value in kwargs.items()] file "/users/boazin/sentinal/sentinel-cloud/.env/lib/python2.7/site-packages/sqlalchemy/orm/base.py", line 383, in _entity_descriptor (description, key) invalidrequesterror: entity '<class 'flask_app.models.user'>' has no property 'email'
it seems email hardcoded flask-security...
can change it?
edit: user model (as requested in comment):
class user(db.model, usermixin): id = db.column(db.integer, primary_key=true) username = db.column(db.string(255), unique=true, index=true) password = db.column(db.string(255)) token = db.column(db.string(255), unique=true, index=true) active = db.column(db.boolean()) confirmed_at = db.column(db.datetime()) roles = db.relationship('role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
from https://pythonhosted.org/flask-security/models.html
fields id, email, password, active
essential.so add
email = db.column(db.string(255), unique=true)
just add custom username
field along this.
Comments
Post a Comment