UserController.php 6.4 KB

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