Examples of code I've written in PHP, Javascript, SCSS, etc.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

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