#147: only get by email_or_id if it is numeric

This commit is contained in:
Rotem Yaari
2013-08-11 16:56:44 +03:00
committed by Rotem Yaari
parent f401eac496
commit 7d6b42e960
+14 -3
View File
@@ -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()