領収証発行サービス
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.

62 lines
1.3KB

  1. <?php
  2. namespace App\Http\Controllers\Web\Login;
  3. use App\Codes\UserRole;
  4. use App\Http\Controllers\Web\WebController;
  5. use App\Models\User;
  6. use App\Repositories\MeRepository;
  7. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  8. use Illuminate\Http\JsonResponse;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. class LoginController extends WebController
  12. {
  13. public function name(): string
  14. {
  15. return "ログイン";
  16. }
  17. public function description(): string
  18. {
  19. return "ログインを行う";
  20. }
  21. use AuthenticatesUsers;
  22. public function __construct(LoginParam $param)
  23. {
  24. $this->param = $param;
  25. }
  26. public function param(): LoginParam
  27. {
  28. return $this->param;
  29. }
  30. protected function run(Request $request): JsonResponse
  31. {
  32. // 取得したユーザ情報を登録しログインを行う
  33. $param = $this->param();
  34. $user = User::whereEmail($param->email)->first();
  35. if ($user === null) {
  36. return $this->failedResponse();
  37. }
  38. if (Auth::attempt([
  39. $this->username() => $param->email,
  40. 'password' => $param->password,
  41. ])) {
  42. $user = Auth::user();
  43. return $this->successResponse();
  44. } else {
  45. return $this->failedResponse([], '認証失敗');
  46. }
  47. }
  48. }