added basic openid - need error message output for further work
git-svn-id: http://yolanda.mister-muffin.de/svn@370 7eef14d0-6ed0-489d-bf55-20463b2d70db
This commit is contained in:
parent
cd9b5f9565
commit
2cba7d55f9
2 changed files with 45 additions and 7 deletions
|
@ -1,13 +1,51 @@
|
|||
import logging
|
||||
|
||||
from yolanda.lib.base import *
|
||||
from openid.consumer.consumer import Consumer, SUCCESS, FAILURE, DiscoveryFailure
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
class AccountController(BaseController):
|
||||
def __before__(self):
|
||||
self.openid_session = session.get("openid_session", {})
|
||||
|
||||
# @validate(schema=something, form='login')
|
||||
def login(self):
|
||||
#FIXME: do not operate in stateless mode - replace store with local
|
||||
# openid store (app global) to make login faster with less overhead
|
||||
self.consumer = Consumer(self.openid_session, None)
|
||||
openid = request.params.get('username', None)
|
||||
if openid is None:
|
||||
return render('/login/form.mako')
|
||||
try:
|
||||
authrequest = self.consumer.begin(openid)
|
||||
except DiscoveryFailure, e:
|
||||
return render('/login/form.mako')
|
||||
|
||||
redirecturl = authrequest.redirectURL(
|
||||
h.url_for('',qualified=True),
|
||||
return_to=h.url_for('/account/verified',qualified=True),
|
||||
immediate=False
|
||||
)
|
||||
session['openid_session'] = self.openid_session
|
||||
session.save()
|
||||
return redirect_to(redirecturl)
|
||||
|
||||
def verified(self):
|
||||
#FIXME: do not operate in stateless mode - replace store with local
|
||||
# openid store (app global) to make login faster with less overhead
|
||||
self.consumer = Consumer(self.openid_session, None)
|
||||
info = self.consumer.complete(request.params, (h.url_for('/account/verified', qualified=True)))
|
||||
if info.status == SUCCESS:
|
||||
session['openid'] = info.identity_url
|
||||
session.save()
|
||||
session.clear()
|
||||
return redirect_to('/index')
|
||||
else:
|
||||
return redirect_to('/login')
|
||||
|
||||
def logout(self):
|
||||
c.title = 'logged out'
|
||||
session.clear()
|
||||
session.save()
|
||||
return render('/login/logout.mako')
|
||||
|
||||
def index(self):
|
||||
# Return a rendered template
|
||||
# return render('/some/template.mako')
|
||||
# or, Return a response
|
||||
return 'account'
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
|
||||
<h1>To upload videos, login.</h1>
|
||||
|
||||
${h.form(h.url_for('account_login'), method='post')}
|
||||
${h.form(h.url_for('account/login'), method='post')}
|
||||
|
||||
${h.text_field('username')}
|
||||
${h.submit('Login (OpenID)')}
|
||||
|
|
Loading…
Reference in a new issue