Examples of code I've written in PHP, Javascript, SCSS, etc.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

166 Zeilen
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. }