so-manager-dev.com/app/Http/Controllers/PasswordReminderController.php
2025-09-12 11:11:36 +09:00

71 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\CommonFunction;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Mail;
class PasswordReminderController extends Controller
{
// パスワード再設定メール送信
public function sendMail(Request $request)
{
// 入力チェック内容
$rules = [
'email' => 'required | email',
'phone.*' => 'required|regex:/^[0-9]+$/',
];
// エラーメッセージ
$message = [
'email.required' => 'メールアドレスを入力してください',
'email.email' => 'メールアドレスの形式が正しくありません',
'phone.*' => '電話番号を正しく入力して下さい',
];
// バリデーションチェック
$validator = Validator::make($request->all(), $rules, $message);
if ($validator->fails()) {
return redirect('swo8_2')
->withErrors($validator)
->withInput();
}
// 存在チェック ([本メールアドレス or 予備メールアドレス] and [携帯電話番号 or 自宅電話番号]に一致するデータ)
$email = $request->input('email');
$phone = implode('-', $request->input('phone'));
$existingMember = User::where(function ($query) use ($email) {
$query->where('user_primemail', $email)->orWhere('user_submail', $email);
})->where(function ($query) use ($phone) {
$query->where('user_mobile', $phone)->orWhere('user_homephone', $phone);
})->first();
if (!$existingMember) {
return redirect('swo8_2')
->withErrors(['nodata' => '該当する会員情報が見つかりませんでした'])
->withInput();
}
// パスワード変更
$commonFunction = new CommonFunction();
$userPass = $commonFunction->createPassword();
$userPassHash = $commonFunction->hashPassword($existingMember->user_seq, $userPass);
$existingMember->user_pass = $userPassHash;
$existingMember->updated_at = now();
$existingMember->save();
// 通知メール送信
Mail::send(["text" => 'emails.password_remind'], [
'name' => $existingMember->user_name,
'pass' => $userPass
], function ($message) use ($email) {
$message->to($email)->subject('【So-Manager】パスワード再発行完了');
});
// 完了画面遷移
return view('general.swo8_3');
}
}