AuthController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Typemill\Controllers;
  3. use Slim\Views\Twig;
  4. use Slim\Http\Request;
  5. use Slim\Http\Response;
  6. use Typemill\Models\Validation;
  7. use Typemill\Models\User;
  8. class AuthController extends Controller
  9. {
  10. public function redirect(Request $request, Response $response)
  11. {
  12. if(isset($_SESSION['login']))
  13. {
  14. return $response->withRedirect($this->c->router->pathFor('settings.show'));
  15. }
  16. else
  17. {
  18. return $response->withRedirect($this->c->router->pathFor('auth.show'));
  19. }
  20. }
  21. /**
  22. * show login form
  23. *
  24. * @param obj $request the slim request object.
  25. * @param obj $response the slim response object.
  26. * @param array $args with arguments past to the slim router
  27. * @return obj $response and string route.
  28. */
  29. public function show(Request $request, Response $response, $args)
  30. {
  31. $this->c->view->render($response, '/auth/login.twig');
  32. }
  33. /**
  34. * signin an existing user
  35. *
  36. * @param obj $request the slim request object with form data in the post params.
  37. * @param obj $response the slim response object.
  38. * @return obj $response with redirect to route.
  39. */
  40. public function login(Request $request, Response $response)
  41. {
  42. $params = $request->getParams();
  43. $validation = new Validation();
  44. if($validation->signin($params))
  45. {
  46. $user = new User();
  47. $userdata = $user->getUser($params['username']);
  48. if($userdata && password_verify($params['password'], $userdata['password']))
  49. {
  50. $user->login($userdata['username']);
  51. return $response->withRedirect($this->c->router->pathFor('settings.show'));
  52. }
  53. }
  54. $this->c->flash->addMessage('error', 'Ups, credentials were wrong, please try again.');
  55. return $response->withRedirect($this->c->router->pathFor('auth.show'));
  56. }
  57. /**
  58. * log out a user
  59. *
  60. * @param obj $request the slim request object
  61. * @param obj $response the slim response object
  62. * @return obje $response with redirect to route
  63. */
  64. public function logout(Request $request, Response $response)
  65. {
  66. if(isset($_SESSION))
  67. {
  68. session_destroy();
  69. }
  70. return $response->withRedirect($this->c->router->pathFor('auth.show'));
  71. }
  72. }