mirror of
https://github.com/wassname/flask-security.git
synced 2026-07-05 17:30:14 +08:00
#147: only get by email_or_id if it is numeric
This commit is contained in:
@@ -180,9 +180,20 @@ class SQLAlchemyUserDatastore(SQLAlchemyDatastore, UserDatastore):
|
||||
UserDatastore.__init__(self, user_model, role_model)
|
||||
|
||||
def get_user(self, id_or_email):
|
||||
return (self.user_model.query.get(id_or_email) or
|
||||
self.user_model.query.filter(
|
||||
self.user_model.email.ilike(id_or_email)).first())
|
||||
returned = None
|
||||
if self._is_numeric(id_or_email):
|
||||
returned = self.user_model.query.get(id_or_email)
|
||||
if not returned:
|
||||
returned = self.user_model.query.filter(
|
||||
self.user_model.email.ilike(id_or_email)).first()
|
||||
return returned
|
||||
|
||||
def _is_numeric(self, value):
|
||||
try:
|
||||
int(value)
|
||||
except ValueError:
|
||||
return False
|
||||
return True
|
||||
|
||||
def find_user(self, **kwargs):
|
||||
return self.user_model.query.filter_by(**kwargs).first()
|
||||
|
||||
Reference in New Issue
Block a user