My SMM panel
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

167 satır
4.1 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\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|max:255',
  22. 'password' => 'required|confirmed
  23. |min:8|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/'
  24. ]);
  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->save();
  32. event(new Registered($user));
  33. }
  34. public function forgotPassword(Request $request) {
  35. $request->validate(['email' => 'required|email']);
  36. $status = Password::sendResetLink(
  37. $request->only('email')
  38. );
  39. }
  40. public function resetPassword(Request $request) {
  41. $request->validate([
  42. 'token' => 'required',
  43. 'email' => 'required|email',
  44. 'password' => 'required|min:8|confirmed',
  45. ]);
  46. $status = Password::reset(
  47. $request->only('email', 'password',
  48. 'password_confirmation', 'token'),
  49. function ($user, $password) use ($request) {
  50. $user->forceFill([
  51. 'password' => Hash::make($password)
  52. ])->setRememberToken(Str::random(60));
  53. });
  54. if ($status == Password::PASSWORD_RESET) {
  55. return response()->json([
  56. "status" => "success"
  57. ]);
  58. }
  59. }
  60. public function login(Request $request) {
  61. $credentials = $request->only('email', 'password');
  62. //This should probably be changed to not return a page
  63. if (Auth::attempt($credentials)) {
  64. $request->session()->regenerate();
  65. $this->clearPaying();
  66. } else {
  67. abort(401);
  68. }
  69. }
  70. public function logout(Request $request) {
  71. Auth::logout();
  72. $request->session()->invalidate();
  73. $request->session()->regenerateToken();
  74. return redirect('/');
  75. }
  76. //It should have an orderBy clause to make sure the most recent are first
  77. //This should limit non pending orders to 50. Should also return a json of all services
  78. public function getOrders(Request $request) {
  79. return Auth::user()->orders()->with('service')->withCasts(['updated_at'
  80. => 'datetime:d-m-Y'])->latest()->limit(100)->get();
  81. }
  82. public function changeName(Request $request) {
  83. $validated = $request->validate([
  84. 'name' => 'required|max:30'
  85. ]);
  86. Stripe::setApiKey(config('services.stripe.secret'));
  87. $user = Auth::user();
  88. $user->name = $request->name;
  89. Customer::update($user->customer_id, ['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. $request->email));
  101. }
  102. public function resetEmail(Request $request) {
  103. Stripe::setApiKey(config('services.stripe.secret'));
  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. Customer::update($user->customer_id, ['name' => $request->email]);
  117. return view('email-changed');
  118. }
  119. public function changePassword(Request $request) {
  120. $validated = $request->validate([
  121. 'current_password' => 'password',
  122. 'password' => 'required|confirmed|min:8|regex:/.*[a-z].*/|regex:/.*[A-Z].*/|regex:/.*[0-9].*/'
  123. ]);
  124. $user = Auth::user();
  125. $user->password = Hash::make($request->password);
  126. $user->save();
  127. }
  128. public function clearPaying() {
  129. $user = Auth::user();
  130. if ($user->paying) {
  131. $user->paying = false;
  132. $user->save();
  133. }
  134. }
  135. }