My SMM panel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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