diff -r b0b8942cdb80 -r 00e5cb9771c5 pyramid_cubicweb/login.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyramid_cubicweb/login.py Mon Aug 04 13:04:19 2014 +0200 @@ -0,0 +1,41 @@ +from pyramid import security +from pyramid.httpexceptions import HTTPSeeOther + +import cubicweb + +from pyramid_cubicweb.core import render_view + + +def login(request): + repo = request.registry['cubicweb.repository'] + + response = request.response + user_eid = None + + if '__login' in request.params: + login = request.params['__login'] + password = request.params['__password'] + + try: + with repo.internal_cnx() as cnx: + user = repo.authenticate_user(cnx, login, password=password) + user_eid = user.eid + except cubicweb.AuthenticationError: + raise + + if user_eid is not None: + headers = security.remember(request, user_eid) + + raise HTTPSeeOther( + request.params.get('postlogin_path', '/'), + headers=headers) + + response.headerlist.extend(headers) + + response.text = render_view(request, 'login') + return response + + +def includeme(config): + config.add_route('login', '/login') + config.add_view(login, route_name='login')