My SMM panel
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

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