aboutsummaryrefslogtreecommitdiffstats
path: root/jm2l/auth.py
diff options
context:
space:
mode:
authortr4ck3ur <tr4ck3ur@style-python.fr>2015-02-13 02:29:37 +0100
committertr4ck3ur <tr4ck3ur@style-python.fr>2015-02-13 02:29:37 +0100
commitfa4a9859c57de6b7894ff4b84b75d242f2b796f5 (patch)
treec6ec352fdd634ca3e645cb2db897a127fcff299b /jm2l/auth.py
downloadjm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.gz
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.bz2
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.tar.xz
jm2l-fa4a9859c57de6b7894ff4b84b75d242f2b796f5.zip
first drop
Diffstat (limited to 'jm2l/auth.py')
-rw-r--r--jm2l/auth.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/jm2l/auth.py b/jm2l/auth.py
new file mode 100644
index 0000000..41f16b6
--- /dev/null
+++ b/jm2l/auth.py
@@ -0,0 +1,42 @@
+
+from pyramid.view import view_config
+from pyramid.security import remember, forget
+from pyramid.httpexceptions import HTTPFound
+from .models import User
+
+@view_config(route_name='auth', match_param="action=login", renderer="jm2l:templates/login.mako")
+def login(request):
+ return {}
+
+@view_config(route_name='bymail', renderer="string")
+def bymail(request):
+ myhash = request.matchdict.get('hash', "")
+ user = User.by_hash(myhash)
+ if user:
+ headers = remember(request, user.uid)
+ return HTTPFound(location=request.route_url('jm2l'),
+ headers=headers)
+ else:
+ headers = forget(request)
+ return HTTPFound(location=request.route_url('auth', action='login'),
+ headers=headers)
+
+@view_config(route_name='auth', match_param="action=in", renderer="string",
+ request_method="POST")
+@view_config(route_name='auth', match_param="action=out", renderer="string")
+def sign_in_out(request):
+ username = request.POST.get('username')
+ if username:
+ user = User.by_name(username)
+ if user and user.verify_password(request.POST.get('password')):
+ headers = remember(request, user.uid)
+ return HTTPFound(location=request.route_url('jm2l'),
+ headers=headers)
+ else:
+ headers = forget(request)
+ else:
+ headers = forget(request)
+ return HTTPFound(location=request.route_url('home'),
+ headers=headers)
+
+