Merge pull request #150 from vmalloc/fix-147

#147: only get by email_or_id if it is numeric
This commit is contained in:
Matt Wright
2013-08-12 06:58:35 -07:00
+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()