--- /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')