RegisterController.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Facades\Settings;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Requests\UserStoreRequest;
  6. use App\Models\User;
  7. use Illuminate\Auth\Events\Registered;
  8. use Illuminate\Foundation\Auth\RegistersUsers;
  9. use Illuminate\Http\Response;
  10. use Illuminate\Support\Facades\Hash;
  11. use Illuminate\Support\Facades\Log;
  12. class RegisterController extends Controller
  13. {
  14. /*
  15. |--------------------------------------------------------------------------
  16. | Register Controller
  17. |--------------------------------------------------------------------------
  18. |
  19. | This controller handles the registration of new users as well as their
  20. | validation and creation. By default this controller uses a trait to
  21. | provide this functionality without requiring any additional code.
  22. |
  23. */
  24. use RegistersUsers;
  25. /**
  26. * Handle a registration request for the application.
  27. *
  28. * @return \Illuminate\Http\JsonResponse
  29. */
  30. public function register(UserStoreRequest $request)
  31. {
  32. if (Settings::get('disableRegistration') == true) {
  33. return response()->json(['message' => 'forbidden'], Response::HTTP_FORBIDDEN);
  34. }
  35. $validated = $request->validated();
  36. event(new Registered($user = $this->create($validated)));
  37. $this->guard()->login($user);
  38. return response()->json([
  39. 'message' => 'account created',
  40. 'name' => $user->name,
  41. ], 201);
  42. }
  43. /**
  44. * Create a new user instance after a valid registration.
  45. *
  46. * @return \App\Models\User
  47. */
  48. protected function create(array $data)
  49. {
  50. $user = User::create([
  51. 'name' => $data['name'],
  52. 'email' => $data['email'],
  53. 'password' => Hash::make($data['password']),
  54. ]);
  55. Log::info(sprintf('User ID #%s created', $user->id));
  56. if (User::count() == 1) {
  57. $user->is_admin = true;
  58. $user->save();
  59. Log::notice(sprintf('User ID #%s set as administrator', $user->id));
  60. }
  61. return $user;
  62. }
  63. }