[PATCH] auth: let users log in using their email address
Mads Kiilerich
mads at kiilerich.com
Fri May 15 17:52:27 EDT 2015
On 05/15/2015 07:06 PM, Andrew Shadura wrote:
> # HG changeset patch
> # User Andrew Shadura <andrew at shadura.me>
> # Date 1431709586 -7200
> # Fri May 15 19:06:26 2015 +0200
> # Node ID 1a7787acd1276557128ac6f8cd274b39c86ebbae
> # Parent 95bffe63997d40bfab5ae6b8d1a54859d6275471
> auth: let users log in using their email address
Nice and simple - thanks!
This will however crash if the user specifies an invalid email address.
This feature also seems a bit half-baked when it only is for web login.
Hg/git login should work the same way.
FWIW: The only other place where users have to care about their (and
others) "login" is in @mention. It would be nice to be able to specify
email addresses there too. @username at example.com should work in the
scanner (regexp) and auto completer. Some users would perhaps prefer to
avoid exposing their email address so it should perhaps be configurable
somehow ... but I'm pretty sure we already expose email addresses in
other places so such a "privacy" option would be a separate feature.
/Mads
>
> diff --git a/kallithea/controllers/login.py b/kallithea/controllers/login.py
> --- a/kallithea/controllers/login.py
> +++ b/kallithea/controllers/login.py
> @@ -121,9 +121,15 @@ class LoginController(BaseController):
> session.invalidate()
> c.form_result = login_form.to_python(dict(request.POST))
> # form checks for username/password, now we're authenticated
> +
> + username = c.form_result['username']
> + if '@' in username:
> + username = User.get_by_email(username).username
> + remember = c.form_result['remember']
> +
> headers = self._store_user_in_session(
> - username=c.form_result['username'],
> - remember=c.form_result['remember'])
> + username=username,
> + remember=remember)
> raise HTTPFound(location=c.came_from, headers=headers)
> except formencode.Invalid, errors:
> defaults = errors.value
> diff --git a/kallithea/model/validators.py b/kallithea/model/validators.py
> --- a/kallithea/model/validators.py
> +++ b/kallithea/model/validators.py
> @@ -316,6 +316,9 @@ def ValidAuth():
> password = value['password']
> username = value['username']
>
> + if '@' in username:
> + username = User.get_by_email(username).username
> +
> if not auth_modules.authenticate(username, password):
> user = User.get_by_username(username)
> if user and not user.active:
> _______________________________________________
> kallithea-general mailing list
> kallithea-general at sfconservancy.org
> http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
More information about the kallithea-general
mailing list