Examples of code I've written in PHP, Javascript, SCSS, etc.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

166 lignes
3.9 KiB

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\User;
  5. use App\Models\Order;
  6. use App\Models\Service;
  7. use App\Mail\ChangeEmail;
  8. use Illuminate\Support\Facades\Log;
  9. use Illuminate\Support\Facades\Hash;
  10. use Illuminate\Support\Facades\URL;
  11. use Illuminate\Auth\Events\Registered;
  12. use Illuminate\Support\Facades\Password;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Notifications\Messages\MailMessage;
  15. use Mail;
  16. use Stripe\Stripe;
  17. use Stripe\Customer;
  18. class UserController extends Controller
  19. {
  20. public function create(Request $request) {
  21. $validated = $request->validate([
  22. 'name' => 'required|max:30',
  23. 'email' => 'required|email|unique:users|max:255',
  24. 'password' => 'required|confirmed
  25. |min:8|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/'
  26. ]);
  27. $user = new User;
  28. $user->name = $request->name;
  29. $user->email = $request->email;
  30. $user->role = "client";
  31. $user->active = true;
  32. $user->password = Hash::make($request->password);
  33. $user->save();
  34. Auth::login($user);
  35. event(new Registered($user));
  36. }
  37. public function forgotPassword(Request $request) {
  38. $request->validate(['email' => 'required|email']);
  39. $status = Password::sendResetLink(
  40. $request->only('email')
  41. );
  42. }
  43. public function resetPassword(Request $request) {
  44. $request->validate([
  45. 'token' => 'required',
  46. 'email' => 'required|email',
  47. 'password' => 'required|min:8|confirmed',
  48. ]);
  49. $status = Password::reset(
  50. $request->only('email', 'password',
  51. 'password_confirmation', 'token'),
  52. function ($user, $password) use ($request) {
  53. $user->forceFill([
  54. 'password' => Hash::make($password)
  55. ])->setRememberToken(Str::random(60));
  56. });
  57. if ($status == Password::PASSWORD_RESET) {
  58. return response()->json([
  59. "status" => "success"
  60. ]);
  61. }
  62. }
  63. public function login(Request $request) {
  64. $credentials = $request->only('email', 'password');
  65. //This should probably be changed to not return a page
  66. if (Auth::attempt($credentials)) {
  67. $request->session()->regenerate();
  68. $this->clearPaying();
  69. } else {
  70. abort(401);
  71. }
  72. }
  73. public function logout(Request $request) {
  74. Auth::logout();
  75. $request->session()->invalidate();
  76. $request->session()->regenerateToken();
  77. return redirect('/');
  78. }
  79. //It should have an orderBy clause to make sure the most recent are first
  80. //This should limit non pending orders to 50. Should also return a json of all services
  81. public function getOrders(Request $request) {
  82. return Auth::user()->orders()->with('service')->withCasts(['updated_at'
  83. => 'datetime:d-m-Y'])->latest()->limit(100)->get();
  84. }
  85. public function changeName(Request $request) {
  86. $validated = $request->validate([
  87. 'name' => 'required|max:30'
  88. ]);
  89. $user = Auth::user();
  90. $user->name = $request->name;
  91. $user->save();
  92. return $user;
  93. }
  94. public function changeEmail(Request $request) {
  95. $validated = $request->validate([
  96. 'email' => 'required|email|unique:users,email',
  97. ]);
  98. $link = URL::temporarySignedRoute('reset-email', now()->addDays(30),
  99. ['user' => Auth::user()->id, 'email' => $request->email]);
  100. Mail::to($request->email)->send(new ChangeEmail(Auth::user()->email,
  101. $link));
  102. }
  103. public function resetEmail(Request $request) {
  104. if (! $request->hasValidSignature()) {
  105. abort(401);
  106. }
  107. $validated = $request->validate([
  108. 'email' => 'required|email|unique:users,email',
  109. ]);
  110. if (! $validated) {
  111. abort(401);
  112. }
  113. $user = User::find($request->user);
  114. $user->email = $request->email;
  115. $user->save();
  116. return view('email-changed');
  117. }
  118. public function changePassword(Request $request) {
  119. $validated = $request->validate([
  120. 'current_password' => 'password',
  121. 'password' => 'required|confirmed|min:8|regex:/.*[a-z].*/|regex:/.*[A-Z].*/|regex:/.*[0-9].*/'
  122. ]);
  123. $user = Auth::user();
  124. $user->password = Hash::make($request->password);
  125. $user->save();
  126. }
  127. public function clearPaying() {
  128. $user = Auth::user();
  129. if ($user->paying) {
  130. $user->paying = false;
  131. $user->save();
  132. }
  133. }
  134. }