RegisterController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. /**
  39. * @var \App\Models\User|null
  40. */
  41. $user = $this->guard()->user();
  42. return response()->json([
  43. 'message' => 'account created',
  44. 'name' => $user->name,
  45. 'email' => $user->email,
  46. 'preferences' => $user->preferences,
  47. 'is_admin' => $user->isAdministrator(),
  48. ], 201);
  49. }
  50. /**
  51. * Create a new user instance after a valid registration.
  52. *
  53. * @return \App\Models\User
  54. */
  55. protected function create(array $data)
  56. {
  57. $user = User::create([
  58. 'name' => $data['name'],
  59. 'email' => $data['email'],
  60. 'password' => Hash::make($data['password']),
  61. ]);
  62. Log::info(sprintf('User ID #%s created', $user->id));
  63. if (User::count() == 1) {
  64. $user->promoteToAdministrator();
  65. $user->save();
  66. Log::notice(sprintf('User ID #%s set as administrator', $user->id));
  67. }
  68. return $user;
  69. }
  70. }