|
- <?php
-
- namespace App\Http\Controllers\Web\Auth;
-
- use App\Http\Controllers\Web\WebController;
- use App\Kintone\Models\Customer;
- use App\Models\User;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Hash;
-
- class LoginController extends WebController
- {
-
- public function name(): string
- {
- return "ログイン";
- }
-
- public function description(): string
- {
- return "ログインを行う";
- }
-
-
- public function __construct(protected LoginParam $param)
- {
- parent::__construct();
- }
-
- protected function run(Request $request): JsonResponse
- {
- // 取得したユーザ情報を登録しログインを行う
- $param = $this->param;
-
- $access = Customer::getAccess();
- $query = Customer::getQuery()->where(Customer::FIELD_EMAIL, $param->email)
- ->where(Customer::FIELD_CUSTOMER_CODE, $param->customerCode);
-
- $customer = $access->some($query);
-
- if ($customer->count() !== 1) {
- return $this->failedResponse();
- }
-
- $customer = $customer->first();
-
- $kintoneId = $customer->getRecordId();
-
- $user = User::whereKintoneId($kintoneId)
- ->first();
-
- if ($user instanceof User) {
- // パスワードチェック
- if (!Hash::check($param->password, $user->password)) {
- return $this->failedResponse();
- }
-
- //データ同期 Email
- if ($user->email !== $param->email) {
- $user->email = $param->email;
- $user->save();
- }
- Auth::login($user);
- return $this->successResponse($customer->toArray());
- }
-
- return $this->failedResponse();
- }
- }
|