UserController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\UserEloquent;
  5. class UserController extends Controller
  6. {
  7. /**
  8. * Show the signin page
  9. *
  10. * @param \Illuminate\Http\Request $request
  11. * @return \Illuminate\Http\Response
  12. */
  13. public function signin( Request $request )
  14. {
  15. return view('signin')->with( 'message', $request->session()->get('message') );
  16. }
  17. /**
  18. * Show the signup page
  19. *
  20. * @param \Illuminate\Http\Request $request
  21. * @return \Illuminate\Http\Response
  22. */
  23. public function signup( Request $request )
  24. {
  25. return view('signup')->with( 'message', $request->session()->get('message') );
  26. }
  27. /**
  28. * Show the change password form
  29. *
  30. * @param \Illuminate\Http\Request $request
  31. * @return \Illuminate\Http\Response
  32. */
  33. public function formpassword( Request $request )
  34. {
  35. return view('formpassword')->with( 'message', $request->session()->get('message') );
  36. }
  37. /**
  38. * Signout
  39. *
  40. * @param \Illuminate\Http\Request $request
  41. * @return \Illuminate\Http\Response
  42. */
  43. public function signout( Request $request )
  44. {
  45. $request->session()->flush();
  46. return redirect('signin');
  47. }
  48. /**
  49. * Show the welcome page
  50. *
  51. * @param \Illuminate\Http\Request $request
  52. * @return \Illuminate\Http\Response
  53. */
  54. public function welcome( Request $request )
  55. {
  56. return view('welcome')
  57. ->with('user',$request->session()->get('user'))
  58. ->with('message',$request->session()->get('message'));
  59. }
  60. /**
  61. * Authenticate the user.
  62. *
  63. * @param \Illuminate\Http\Request $request
  64. * @return \Illuminate\Http\Response
  65. */
  66. public function authenticate( Request $request )
  67. {
  68. // On vérifie qu'on a bien reçu les données en POST
  69. if ( !$request->has(['login','password']) )
  70. return redirect('signin')->with('message','Some POST data are missing.');
  71. // On récupère l'utilisateur en BDD
  72. try {
  73. $user = UserEloquent::where('user',$request->input('login'))->firstOrFail();
  74. }
  75. catch ( \Illuminate\Database\Eloquent\ModelNotFoundException $e ) {
  76. return redirect('signin')->with('message','Wrong login.');
  77. }
  78. // On vérifie que les mots de passe correspondent
  79. if ( !password_verify($request->input('password'), $user->password) )
  80. return redirect('signin')->with('message','Wrong password.');
  81. // Si tout est ok, on se connecte et se rend sur welcome
  82. $request->session()->put('user',$user->user);
  83. return redirect('admin/welcome');
  84. }
  85. /**
  86. * Create a new account.
  87. *
  88. * @param \Illuminate\Http\Request $request
  89. * @return \Illuminate\Http\Response
  90. */
  91. public function addUser( Request $request )
  92. {
  93. // On vérifie qu'on a bien reçu les données en POST
  94. if ( !$request->has(['login','password','confirm']) )
  95. return redirect('signup')->with('message',"Some POST data are missing.");
  96. if ( $request->input('password') !== $request->input('confirm') )
  97. return redirect('signup')->with('message',"The two passwords differ.");
  98. //On crée l'utilisateur
  99. $user = new UserEloquent;
  100. $user->user = $request->input('login');
  101. $user->password = password_hash($request->input('password'),PASSWORD_DEFAULT);
  102. try {
  103. // On crée l'utilisateur dans la BDD
  104. $user->save();
  105. }
  106. catch (\Illuminate\Database\QueryException $e) {
  107. return redirect('signup')->with('message','This login is still used. Please choose another one.');
  108. }
  109. // Si tout est ok, on indique que le compte est crée et on se rend sur signin
  110. return redirect('signin')->with('message',"Account created! Now, signin.");
  111. }
  112. /**
  113. * Change password.
  114. *
  115. * @param \Illuminate\Http\Request $request
  116. * @return \Illuminate\Http\Response
  117. */
  118. public function changePassword( Request $request )
  119. {
  120. // On vérifie qu'on a bien reçu les données en POST
  121. if ( !$request->has(['newpassword','confirmpassword']) )
  122. return redirect('admin/formpassword')->with('message',"Some POST data are missing.");
  123. // On s'assure que les 2 mots de passes correspondent
  124. if ( $request->input('newpassword') != $request->input('confirmpassword') )
  125. return redirect('admin/formpassword')->with('message',"Error: passwords are different.");
  126. //On crée l'utilisateur
  127. $user = UserEloquent::where('user',$request->session()->get('user'))->first();
  128. $user->password = password_hash($request->input('newpassword'),PASSWORD_DEFAULT);
  129. $user->save();
  130. // Si tout est ok, on retourne sur welcome
  131. return redirect('admin/welcome')->with('message',"Password successfully updated.");
  132. }
  133. /**
  134. * Delete user.
  135. *
  136. * @param \Illuminate\Http\Request $request
  137. * @return \Illuminate\Http\Response
  138. */
  139. public function deleteUser( Request $request )
  140. {
  141. // On détruit l'utilisateur de la BDD
  142. UserEloquent::destroy($request->session()->get('user'));
  143. // Si tout est ok, on détruit la session et retourne sur signin
  144. $request->session()->flush();
  145. return redirect('signin')->with('message',"Account successfully deleted.");
  146. }
  147. }