|
- <?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;
- use Illuminate\Support\Collection;
-
- 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);
-
- $customers = $access->all($query);
-
- if ($customers->isEmpty()) {
-
- // 無効なユーザだが、セキュリティ対策として成功と見せかける
- return $this->successResponse();
- }
-
- // トークン生成
- $this->tokenGenerate($customers);
-
- return $this->successResponse();
- }
-
- /**
- * Undocumented function
- *
- * @param Collection<int,Customer> $customers
- * @return void
- */
- private function tokenGenerate(Collection $customers)
- {
-
- foreach ($customers as $customer) {
- $kintoneId = $customer->getRecordId();
-
- $user = User::whereKintoneId($kintoneId)
- ->first();
-
-
- if ($user instanceof User) {
- } else {
- // 新規の場合はユーザーを追加する
- $user = new User();
- $user->email = $customer->email;
- $user->kintone_id = $customer->getRecordId();
- $user->kintone_customer_code = $customer->getNumber(Customer::FIELD_CUSTOMER_CODE);
- $user->save();
- }
-
- // トークン生成
- $this->manager->generate($user);
- }
- }
- }
|