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.
 
 
 
 
 

47 lines
1.6 KiB

  1. from pyramid.view import view_config
  2. from pyramid.security import remember, forget
  3. from pyramid.httpexceptions import HTTPFound
  4. from .models import User, DBSession
  5. @view_config(route_name='auth', match_param="action=login", renderer="jm2l:templates/login.mako")
  6. def login(request):
  7. return {}
  8. @view_config(route_name='bymail', renderer="string")
  9. def bymail(request):
  10. myhash = request.matchdict.get('hash', "")
  11. user = User.by_hash(myhash)
  12. if user:
  13. user.last_logged=datetime.datetime.now()
  14. DBSession.merge(user)
  15. headers = remember(request, user.uid)
  16. return HTTPFound(location=request.route_url('jm2l'),
  17. headers=headers)
  18. else:
  19. headers = forget(request)
  20. return HTTPFound(location=request.route_url('auth', action='login'),
  21. headers=headers)
  22. @view_config(route_name='auth', match_param="action=in", renderer="string",
  23. request_method="POST")
  24. @view_config(route_name='auth', match_param="action=out", renderer="string")
  25. def sign_in_out(request):
  26. username = request.POST.get('username')
  27. if username:
  28. user = User.by_name(username)
  29. if user and user.verify_password(request.POST.get('password')):
  30. user.last_logged=datetime.datetime.now()
  31. DBSession.merge(user)
  32. headers = remember(request, user.uid)
  33. return HTTPFound(location=request.route_url('jm2l'),
  34. headers=headers)
  35. else:
  36. headers = forget(request)
  37. else:
  38. headers = forget(request)
  39. return HTTPFound(location=request.route_url('home'),
  40. headers=headers)