My SMM panel
 
 
 
 
 
 

113 lines
2.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 Illuminate\Support\Facades\Log;
  8. use Illuminate\Support\Facades\Hash;
  9. use Illuminate\Auth\Events\Registered;
  10. use Illuminate\Support\Facades\Password;
  11. use Illuminate\Support\Facades\Auth;
  12. class UserController extends Controller
  13. {
  14. public function create(Request $request) {
  15. $validated = $request->validate([
  16. 'name' => 'required|max:30',
  17. 'email' => 'required|email|unique:users,email',
  18. 'password' => 'required|confirmed|min:8|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/'
  19. ]);
  20. $user = new User;
  21. $user->name = $request->name;
  22. $user->email = $request->email;
  23. $user->role = "client";
  24. $user->active = true;
  25. $user->password = Hash::make($request->password);
  26. $user->save();
  27. event(new Registered($user));
  28. }
  29. public function forgotPassword(Request $request) {
  30. $request->validate(['email' => 'required|email']);
  31. $status = Password::sendResetLink(
  32. $request->only('email')
  33. );
  34. }
  35. public function resetPassword(Request $request) {
  36. $request->validate([
  37. 'token' => 'required',
  38. 'email' => 'required|email',
  39. 'password' => 'required|min:8|confirmed',
  40. ]);
  41. $status = Password::reset(
  42. $request->only('email', 'password',
  43. 'password_confirmation', 'token'),
  44. function ($user, $password) use ($request) {
  45. $user->forceFill([
  46. 'password' => Hash::make($password)
  47. ])->setRememberToken(Str::random(60));
  48. });
  49. if ($status == Password::PASSWORD_RESET) {
  50. return response()->json([
  51. "status" => "success"
  52. ]);
  53. }
  54. }
  55. public function login(Request $request) {
  56. $credentials = $request->only('email', 'password');
  57. //This should probably be changed to not return a page
  58. if (Auth::attempt($credentials)) {
  59. $request->session()->regenerate();
  60. } else {
  61. abort(401);
  62. }
  63. }
  64. public function logout(Request $request) {
  65. Auth::logout();
  66. $request->session()->invalidate();
  67. $request->session()->regenerateToken();
  68. return redirect('/');
  69. }
  70. //It should have an orderBy clause to make sure the most recent are first
  71. //This should limit non pending orders to 50. Should also return a json of all services
  72. public function getOrders(Request $request) {
  73. /* Log::debug(Auth::user()->orders()->service_name); */
  74. return Auth::user()->orders()->with('service')->withCasts(['updated_at'
  75. => 'datetime:d-m-Y'])->get();
  76. }
  77. public function changeName(Request $request) {
  78. $validated = $request->validate([
  79. 'name' => 'required|max:30'
  80. ]);
  81. $user = Auth::user();
  82. $user->name = $request->name;
  83. $user->save();
  84. return $user;
  85. }
  86. public function changeEmail(Request $request) {
  87. $validated = $request->validate([
  88. 'email' => 'required|email|unique:users,email',
  89. ]);
  90. }
  91. public function changePassword(Request $request) {
  92. $validated = $request->validate([
  93. 'password' => 'required|confirmed|min:8|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/'
  94. ]);
  95. }
  96. }