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.

56 lines
1.6 KiB

  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\User;
  5. use Illuminate\Auth\Events\Registered;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Hash;
  9. use Illuminate\Validation\Rules;
  10. use Inertia\Inertia;
  11. use Inertia\Response;
  12. class RegisteredUserController extends Controller
  13. {
  14. /**
  15. * Display the registration view.
  16. */
  17. public function create(): Response
  18. {
  19. return Inertia::render('Auth/Register');
  20. }
  21. /**
  22. * Handle an incoming registration request.
  23. *
  24. * @throws \Illuminate\Validation\ValidationException
  25. */
  26. public function store(Request $request): JsonResponse
  27. {
  28. $request->validate([
  29. 'emp_id' => 'required|integer',
  30. 'name' => 'required|string|max:255',
  31. 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class,
  32. 'username' => 'required|string|max:255|unique:'.User::class,
  33. 'password' => ['required', 'confirmed', Rules\Password::defaults()],
  34. 'role_id' => 'required|exists:roles,id',
  35. ]);
  36. $user = User::create([
  37. 'emp_id' => $request->emp_id,
  38. 'name' => $request->name,
  39. 'email' => $request->email,
  40. 'username' => $request->username,
  41. 'password' => Hash::make($request->password),
  42. 'role_id' => $request->role_id,
  43. ]);
  44. event(new Registered($user));
  45. return response()->json([
  46. 'message' => 'Registration successful! Please log in.'
  47. ]);
  48. }
  49. }