|
- <?php
-
- namespace App\Http\Controllers\Web\Auth;
-
- use App\Http\Controllers\Web\WebController;
- use App\Kintone\Models\Customer;
- use App\Logic\PasswordSettingManager;
- use App\Models\User;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
-
- class PasswordSettingStartController extends WebController
- {
-
- public function name(): string
- {
- return "パスワード設定開始";
- }
-
- public function description(): string
- {
- return "パスワード設定手続きを開始する";
- }
-
-
- public function __construct(protected PasswordSettingStartParam $param, private PasswordSettingManager $manager)
- {
- parent::__construct();
- }
-
- protected function run(Request $request): JsonResponse
- {
- $param = $this->param;
-
- $access = Customer::getAccess();
- $query = Customer::getQuery()->where(Customer::FIELD_EMAIL, $param->email);
-
- $customer = $access->some($query);
-
- if ($customer->count() !== 1) {
-
- // 無効なユーザだが、セキュリティ対策として成功と見せかける
- return $this->successResponse();
- }
-
- $customer = $customer->first();
-
- $kintoneId = $customer->getRecordId();
-
- $user = User::whereKintoneId($kintoneId)
- ->first();
-
- if ($user instanceof User) {
- //データ同期
- if ($user->email !== $param->email) {
- $user->email = $param->email;
- $user->save();
- }
- if ($user->kintone_customer_code !== $customer->getNumber(Customer::FIELD_CUSTOMER_CODE)) {
- $user->kintone_customer_code = $customer->getNumber(Customer::FIELD_CUSTOMER_CODE);
- $user->save();
- }
- } else {
- // 新規の場合はユーザーを追加する
- $user = new User();
- $user->email = $param->email;
- $user->kintone_id = $customer->getRecordId();
- $user->kintone_customer_code = $customer->getNumber(Customer::FIELD_CUSTOMER_CODE);
- $user->save();
- }
-
- // トークン生成
- $this->manager->generate($user);
-
- return $this->successResponse();
- }
- }
|