Examples of code I've written in PHP, Javascript, SCSS, etc.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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. }