X-Git-Url: http://git.veekun.com/zzz-spline-users.git/blobdiff_plain/3a7f952ac7dde642522438b8508c176f89f73b71..d35134c7784acce4172ed7bc8800e2fe866d084c:/spline/plugins/users/controllers/accounts.py diff --git a/spline/plugins/users/controllers/accounts.py b/spline/plugins/users/controllers/accounts.py index 09ca1ac..e38a4cd 100644 --- a/spline/plugins/users/controllers/accounts.py +++ b/spline/plugins/users/controllers/accounts.py @@ -10,6 +10,7 @@ from routes import request_config from spline import model from spline.model import meta +from spline.lib import helpers as h from spline.lib.base import BaseController, render log = logging.getLogger(__name__) @@ -61,18 +62,36 @@ class AccountsController(BaseController): sreg_res = SRegResponse.fromSuccessResponse(res) try: username = sreg_res['nickname'] - except KeyError: + except (KeyError, TypeError): + # KeyError if sreg has no nickname; TypeError if sreg is None username = 'Anonymous' # Create db records user = model.User(name=username) meta.Session.add(user) + openid = model.OpenID(openid=res.identity_url) user.openids.append(openid) + meta.Session.commit() # Remember who's logged in, and we're good to go session['user_id'] = user.id session.save() - return "Hello, %s" % user.name + h.flash(u"""Hello, {0}!""".format(user.name), + icon='user') + + redirect_to('/', _code=303) + + def logout(self): + """Logs the user out.""" + + if 'user_id' in session: + del session['user_id'] + session.save() + + h.flash(u"""Logged out.""", + icon='user-silhouette') + + redirect_to('/', _code=303)