Le repo des sources pour le site web des JM2L
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

56 lines
2.1 KiB

  1. # -*- coding: utf8 -*-
  2. from pyramid.view import view_config
  3. from pyramid.security import remember, forget
  4. from pyramid.httpexceptions import HTTPFound
  5. from .models import User, DBSession
  6. import datetime
  7. @view_config(route_name='auth', match_param="action=login", renderer="jm2l:templates/login.mako")
  8. def login(request):
  9. return {}
  10. @view_config(route_name='auth', match_param="action=forgot", renderer="jm2l:templates/login.mako")
  11. def forgot(request):
  12. return {'forgot':True}
  13. @view_config(route_name='bymail', renderer="string")
  14. def bymail(request):
  15. myhash = request.matchdict.get('hash', "")
  16. user = User.by_hash(myhash)
  17. if user:
  18. user.last_logged=datetime.datetime.now()
  19. DBSession.merge(user)
  20. headers = remember(request, user.uid)
  21. return HTTPFound(location=request.route_url('jm2l'),
  22. headers=headers)
  23. else:
  24. headers = forget(request)
  25. return HTTPFound(location=request.route_url('auth', action='login'),
  26. headers=headers)
  27. @view_config(route_name='auth', match_param="action=in", renderer="string",
  28. request_method="POST")
  29. @view_config(route_name='auth', match_param="action=out", renderer="string")
  30. def sign_in_out(request):
  31. username = request.POST.get('username')
  32. if username:
  33. user = User.by_slug(username)
  34. if user and user.verify_password(request.POST.get('password')):
  35. user.last_logged=datetime.datetime.now()
  36. DBSession.merge(user)
  37. headers = remember(request, user.uid)
  38. return HTTPFound(location=request.route_url('jm2l'),
  39. headers=headers)
  40. else:
  41. headers = forget(request)
  42. else:
  43. headers = forget(request)
  44. if request.matchdict.get('action')=='in':
  45. request.session.flash(('error',u'Vous avez entré un mauvais couple identifiant/password !'))
  46. return HTTPFound(location="/sign/login",
  47. headers=headers)
  48. return HTTPFound(location=request.route_url('home'),
  49. headers=headers)