main_watanabe #9

Merged
y.higashide merged 21 commits from main_watanabe into main 2025-09-05 16:34:21 +09:00
19 changed files with 1561 additions and 98 deletions
Showing only changes of commit 7d950c5cd8 - Show all commits

10
.env
View File

@ -2,7 +2,7 @@ APP_NAME=so-manager
APP_ENV=local
APP_KEY=base64:ejLwJbt2bEXY9emPUmsurG+X1hzkjTxQQvq2/FO14RY=
APP_DEBUG=true
APP_URL=https://main-watanabe.so-manager-dev.com/
APP_URL=http://so-manager-dev.localhost:81/public/
APP_LOCALE=ja
APP_FALLBACK_LOCALE=ja
@ -51,12 +51,12 @@ MAIL_MAILER=smtp
MAIL_SCHEME=null
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=""
MAIL_PASSWORD=""
MAIL_USERNAME="is1001475@gmail.com"
MAIL_PASSWORD="bdipeszxtphlryfz"
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=""
MAIL_FROM_ADDRESS="watanabe@s-force.co.jp"
MAIL_FROM_NAME="${APP_NAME}"
MAIL_ADMIN=""
MAIL_ADMIN="watanabe@s-force.co.jp"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

41
app/CommonFunction.php Normal file
View File

@ -0,0 +1,41 @@
<?php
namespace App;
// 共通処理関数クラス
class CommonFunction
{
// 7DSRチェックデジット計算
public function calc7dsr($number) {
$sum = 0;
$weights = [2, 3, 4, 5, 6, 7];
$digits = str_split(strrev($number));
foreach ($digits as $i => $digit) {
$sum += $digit * $weights[$i % count($weights)];
}
$checkDigit = (10 - ($sum % 10)) % 10;
return $checkDigit;
}
// 初期パスワード作成
public function createPassword() {
// 使用可能文字 (使用不可1,l,L,i,I,z,Z,2,o,O,0)
$chars = 'ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz3456789';
$password = '';
$length = 8;
$max = strlen($chars) - 1;
for ($i = 0; $i < $length; $i++) {
$password .= $chars[random_int(0, $max)];
}
return $password;
}
// パスワードハッシュ化
public function hashPassword($user_seq, $password) {
$hash = hash('sha256', $password) . $user_seq . 'SOMSALT';
for ($i = 0; $i < 25; $i++) {
$hash = hash('sha256', $hash);
}
return $hash;
}
}

View File

@ -14,9 +14,7 @@ class InquiryConfirmController extends Controller
["name", "text", "氏名*", ""],
["email", "email", "メールアドレス*", ""],
["tel", "text", "電話番号*", ""],
["subject", "checkbox", "お問い合わせ概要*", [
"定期契約について", "操作方法について", "支払方法について", "その他お問合せ"
]],
["subject", "checkbox", "お問い合わせ概要*", ["定期契約について", "操作方法について", "支払方法について", "その他お問合せ"]],
["parking", "text", "お問い合わせ駐輪場名", ""],
["detail", "textarea", "お問い合わせ詳細*", ""],
];
@ -103,7 +101,7 @@ class InquiryConfirmController extends Controller
'parking' => $request->input('parking'),
'detail' => $request->input('detail'),
], function ($message) use ($request) {
$message->to(config('emailaddress.mail_admin'))->subject('【So-Manager】お問い合わせ受信');
$message->to(config('env.mail_admin'))->subject('【So-Manager】お問い合わせ受信');
});
// 完了画面に遷移

View File

@ -2,25 +2,189 @@
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;
use Illuminate\Support\Facades\URL;
class MemberRegistrationController extends Controller
{
// 会員登録案内メール送信
public function sendMail(Request $request)
{
// 会員登録用URL生成
$url = $request->input('url');
// バリデーションチェック
$rules = ['email' => 'required | email'];
$message = [
'email.required' => 'メールアドレスを入力してください',
'email.email' => 'メールアドレスの形式が正しくありません'
];
$validator = Validator::make($request->all(), $rules, $message);
if ($validator->fails()) {
return redirect('/swo2_1')
->withErrors($validator)
->withInput();
}
// 登録済メールアドレスチェック
$email = $request->input('email');
$existingMember = User::where('user_primemail', $email)->get();
foreach ($existingMember as $member) {
if ($member->user_quit_flag != 1) {
return redirect('/swo2_1')
->withErrors(['email' => '指定のメールアドレスは既に使用されています。'])
->withInput();
}
}
// 会員登録用暗号化URL生成有効期限30分
$url = URL::temporarySignedRoute('swo2_3', now()->addMinutes(30), ['email' => encrypt($email)]);
// メール送信
Mail::send(["text" => 'emails.member_regist_info'], ['url' => $url], function ($message) use ($request) {
$message->to($request->input('email'))->subject('【So-Manager】新規ユーザー登録用URLのご案内');
Mail::send(["text" => 'emails.member_regist_info'], ['url' => $url], function ($message) use ($email) {
$message->to($email)->subject('【So-Manager】新規ユーザー登録用URLのご案内');
});
// 完了画面遷移
return view('/swo2_2');
}
// 入力画面表示
public function index()
{
// 署名付きURLの有効期限チェック
if (!request()->hasValidSignature()) {
return redirect('/error')->withErrors(['error' => '署名の有効期限が切れています']);
}
// 初回遷移(GETアクセス)時のリクエストパラメータチェック
if (!session()->has('email')) {
// パラメータ存在チェック
$encryptedEmail = request()->query('email');
if (!$encryptedEmail) {
return redirect('/error')->withErrors(['error' => 'メールアドレスが指定されていません']);
}
// パラメータ整合性チェック
try {
$email = decrypt($encryptedEmail);
} catch (\Exception $e) {
return redirect('/error')->withErrors(['error' => 'メールアドレスの情報が不正です']);
}
// 二重登録防止チェック
$existingMember = User::where('user_primemail', $email)->get();
foreach ($existingMember as $member) {
if ($member->user_quit_flag != 1) {
return redirect('/error')->withErrors(['error' => '既に登録済みです']);
}
}
// メールアドレスをセッションに保存
session(['email' => $email]);
}
// 入力画面に遷移
return view('/swo2_3');
}
// 確認画面表示
public function confirm(Request $request)
{
// 登録完了後のブラウザバックによる二重登録対策
if (!session()->has('email')) {
return redirect('/error')->withErrors(['error' => '不正なアクセスです']);
}
// 入力チェック内容 (メールアドレスはセッションから取得するため対象外)
$rules = [
'name' => 'required',
'kana' => 'required|regex:/^[ァ-ヶー]+$/u',
'phone.*' => 'required|regex:/^[0-9]+$/',
'mobile.*' => 'nullable|regex:/^[0-9]+$/',
];
// エラーメッセージ (メールアドレスはセッションから取得するため対象外)
$message = [
'name.required' => '名前を入力してください',
'kana.required' => 'フリガナを入力してください',
'kana.regex' => 'フリガナは全角カタカナで入力してください',
'phone.*' => '電話番号を正しく入力してください',
'mobile.*' => '予備電話番号を正しく入力してください',
];
// バリデーションチェック
$validator = Validator::make($request->all(), $rules, $message);
if ($validator->fails()) {
return redirect('/swo2_3')
->withErrors($validator)
->withInput();
}
// 画面返却値
$input_data = [
"name" => $request->input('name'),
"kana" => $request->input('kana'),
"phone" => $request->input('phone'),
"mobile" => $request->input('mobile'),
"email" => session('email'),
];
// 確認画面に遷移
return view('/swo2_4', ['input_data' => $input_data]);
}
// 会員登録 or 戻る
public function complete(Request $request)
{
// 前の画面に戻る
if($request->input('back') == 'back'){
return redirect('/swo2_3')->withInput();
}
// 登録完了後のブラウザバックによる二重登録対策
if (!session()->has('email')) {
return redirect('/error')->withErrors(['error' => '不正なアクセスです']);
}
// 利用者連番、利用者ID(利用者連番+7DSRチェックデジット)、初期パスワード(ハッシュ化)を生成
$commonFunction = new CommonFunction();
$nextSeq = \DB::table('user')->max('user_seq') + 1;
$userId = $nextSeq . $commonFunction->calc7dsr($nextSeq);
$userPass = $commonFunction->createPassword();
$userPassHash = $commonFunction->hashPassword($nextSeq, $userPass);
// 会員情報登録
$user = new User();
$user->user_seq = $nextSeq;
$user->user_id = $userId;
$user->user_pass = $userPassHash;
$user->tag_qr_flag = 1;
$user->user_name = $request->input('name');
$user->user_phonetic = $request->input('kana');
$user->user_homephone = $request->input('phone');
$user->user_mobile = $request->input('mobile');
$user->user_primemail = session('email');
$user->user_quit_flag = 0;
$user->created_at = now();
$user->updated_at = now();
$user->save();
// 登録完了メール送信
Mail::send(["text" => 'emails.member_regist_complete'], [
'user_name' => $request->input('name'),
'user_pass' => $userPass,
], function ($message) use ($user) {
$message->to($user->user_primemail)->subject('【So-Manager】ユーザー登録完了のご連絡');
});
// セッション削除
session()->forget('email');
// 完了画面に遷移
return view('/swo2_5');
}
}

View File

@ -0,0 +1,71 @@
<?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('/swo8_3');
}
}

View File

@ -9,40 +9,23 @@ use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $fillable = [
'name',
'email',
'password',
];
// テーブル名
protected $table = 'user';
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'password',
'remember_token',
];
// 主キー
protected $primaryKey = 'user_seq';
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
// 一括登録・一括更新可能なカラムの指定
protected $fillable = [];
// 一括取得時の対象外項目
protected $hidden = [];
// 対象項目をキャスト
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
return [];
}
}

View File

@ -65,7 +65,7 @@ return [
|
*/
'timezone' => 'UTC',
'timezone' => 'Asia/Tokyo',
/*
|--------------------------------------------------------------------------

View File

@ -1,5 +0,0 @@
<?php
return [
'mail_admin' => env('MAIL_ADMIN', 'admin@example.com'),
];

6
config/env.php Normal file
View File

@ -0,0 +1,6 @@
<?php
// 環境変数保持用config
return [
'mail_admin' => env('MAIL_ADMIN', 'admin@example.com'),
];

1100
public/assets/css/app.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
{{ $user_name }}
So-Managerへのユーザー登録ありがとうございました。
ご登録頂いたメールアドレスと下記のパスワードで、マイページへログインしてご利用ください。
操作方法は、マイページ内の<このページの使い方>をご覧ください。
{{ $user_name }}様のパスワード
----------------
{{ $user_pass }}
----------------
https://so-manager.com/swo8_1
【お問い合わせ先】
・電話でのお問い合わせ
So-Managerコールセンター(毎日12時22時)
03-5856-4720
・メールでのお問合せ(専用フォームよりお問合せください)
https://so-manager.com/swo7_1
※本メールアドレスは送信専用となり、ご返信には回答致しかねますのでご了承下さい。
※本メールにお心当たりが無い場合には、コールセンターまでご連絡くださいますようお願い致します。

View File

@ -7,7 +7,7 @@
下記URLにアクセスしてご登録手続き(無料)を完了させて下さい。
▼会員登録お手続きページ▼
{{ $url }}
{!! $url !!}
【お問い合わせ先】
・電話でのお問い合わせ

View File

@ -0,0 +1,27 @@
{{ $name }}
So-Manager自動応答システムです。
パスワードを再発行しました。
下記パスワードでログインしてください。
----------------
{{ $pass }}
----------------
ログインURL
https://so-manager.com/swo8_1
パスワードはログイン後に変更できます。以下の場所で書き換えてご利用ください。
https://so-manager.com/swc1
【お問い合わせ先】
・電話でのお問い合わせ
So-Managerコールセンター(毎日12時22時)
03-5856-4720
・メールでのお問合せ(専用フォームよりお問合せください)
https://so-manager.com/swo7_1
※本メールアドレスは送信専用となり、ご返信には回答致しかねますのでご了承下さい。
※本メールにお心当たりが無い場合には、コールセンターまでご連絡くださいますようお願い致します。

View File

@ -0,0 +1,28 @@
<!doctype html>
<html lang="ja">
<head>
<title>So-Manager</title>
<meta charset="utf-8">
<link rel="icon" href="assets/img/favicon.ico">
<link href="https://cdnjs.cloudflare.com/ajax/libs/typicons/2.0.9/typicons.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/earlyaccess/roundedmplus1c.css" rel="stylesheet" />
<link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/style.css" rel="stylesheet">
<script src="assets/js/ie-emulation-modes-warning.js"></script>
</head>
<body id="" class="">
<div id="font-scale" class="home">
@include('layouts.header');
<!-- ▼ メイン部分 ▼ -->
<main role="main" id="" class="">
<article id="main-content" class="news-detail container">
<header class="news-title mt50 mb30 text-center">
<h1 class="h3">ページが見つかりません<br />{{ $errors->first('error') }}</h1>
</header>
</article>
</main>
<!-- ▲ メイン部分 ▲ -->
@include('layouts.footer');
</div>
</body>
</html>

View File

@ -25,17 +25,20 @@
<div class="card-body mt30">
<p class="mb30">会員登録ページのご案内をお送りします。お客様のメールアドレスをご入力ください。</p>
<form class="row form" action="{{route('swo2_2')}}" method="post">
<input type="hidden" name="_token" value="vZOj33AlRVfWqQClLeNlMvXQFcAtYB85FuzfTBOB" >
<div class="col-12 col-lg-3 text-lg-center offset-0 offset-lg-1">
<label for="">メールアドレス</label>
</div>
<div class="col-12 col-lg-7 mb10">
<input type="email" name="email" id="" class="form-control form-control-lg" placeholder="info@so-manager.com" />
<input type="email" name="email" class="form-control form-control-lg" placeholder="info@so-manager.com" value="{{ old('email') }}"/>
@if($errors->has('email'))
<div class="text-danger">{{ $errors->first('email') }}</div>
@endif
</div>
<div class="col-12 col-lg-6 text-lg-center offset-0 offset-lg-3 mt30 mb50">
<a href="{{route('swo2_2')}}" class="btn btn-block btn-lg btn-success">送信する</a>
<button type="submit" class="btn btn-block btn-lg btn-success">送信する</button>
<a href="{{route('swo1_1')}}" class="btn btn-block btn-lg btn-outline-success">戻る</a>
</div>
@csrf
</form>
</div>
</div>
@ -45,6 +48,7 @@
</main>
<!-- ▲ メイン部分 ▲ -->
<!-- ▼ モーダル部分 ▼ -->
@if(!$errors->has('email'))
<div class="modal fade" id="cautionModal" tabindex="-1" role="dialog" aria-labelledby="cautionModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content px-5 py-5">
@ -59,6 +63,7 @@
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- ▲ モーダル部分 ▲ -->
@endif
@include('layouts.info');
@include('layouts.footer');
</div>

View File

@ -8,6 +8,7 @@
<link href="https://fonts.googleapis.com/earlyaccess/roundedmplus1c.css" rel="stylesheet" />
<link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/style.css" rel="stylesheet">
<link href="assets/css/app.css" rel="stylesheet">
<script src="assets/js/ie-emulation-modes-warning.js"></script>
</head>
<body id="" class="">
@ -26,58 +27,64 @@
<p class="h4">会員情報を入力してください。</p>
<section id="" class="container mt50 mb50">
<form class="row form" action="{{route('swo2_4')}}" method="post">
<input type="hidden" name="_token" value="oEhAfdqtNNAs2vOfjZqveVaH3G1fF62yb8qJIshV" >
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_name" class="required">お名前</label>
<label class="required">お名前</label>
</div>
<div class="col-12 col-lg-6 mb10">
<input type="text" class="form-control form-control-lg" name="user_name" id="user_name" value="" placeholder="自転車 太郎">
<input type="text" class="form-control form-control-lg" name="name" value="{{ old('name') }}" placeholder="自転車 太郎">
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_phonetic" class="required">フリガナ</label>
<label class="required">フリガナ</label>
</div>
<div class="col-12 col-lg-6 mb10">
<input type="text" class="form-control form-control-lg" name="user_phonetic" id="user_phonetic" value="" placeholder="ジテンシャ タロウ">
<input type="text" class="form-control form-control-lg" name="kana" value="{{ old('kana') }}" placeholder="ジテンシャ タロウ">
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_homephone" class="required">電話番号(必須)</label>
<label class="required">電話番号(必須)</label>
</div>
<div class="col-12 col-lg-6 mb10">
<div class="row justify-content-between col-12 m-0 p-0">
<input type="text" maxlength="5" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="5" name="phone[]" value="{{ old('phone.0') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="phone[]" value="{{ old('phone.1') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="phone[]" value="{{ old('phone.2') }}" class="form-control form-control-lg check_key_int col-3"/>
</div>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_mobile">予備電話番号(任意)</label>
<label>予備電話番号(任意)</label>
</div>
<div class="col-12 col-lg-6 mb10">
<div class="row justify-content-between col-12 m-0 p-0">
<input type="text" maxlength="5" name="user_mobile[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="5" name="mobile[]" value="{{ old('mobile.0') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_mobile[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="mobile[]" value="{{ old('mobile.1') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_mobile[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="mobile[]" value="{{ old('mobile.2') }}" class="form-control form-control-lg check_key_int col-3"/>
</div>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_primemail" class="required">メールアドレス</label>
<label class="required">メールアドレス</label>
</div>
<div class="col-12 col-lg-6 mb10">
<input type="text" class="form-control form-control-lg" readonly="readonly" id="user_primemail" value="watanabe@s-force.co.jp" name="user_primemail" placeholder="name@example.com">
<input type="email" class="form-control form-control-lg" readonly="readonly" name="email" value="{{ session('email') }}">
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_primemail2" class="required">メールアドレスの確認</label>
<label class="required">メールアドレスの確認</label>
</div>
<div class="col-12 col-lg-6 mb10">
<input type="text" class="form-control form-control-lg" readonly="readonly" id="user_primemail2" name="user_primemail_confirmation" value="watanabe@s-force.co.jp" placeholder="name@example.com">
<input type="email" class="form-control form-control-lg" readonly="readonly" name="email_c" value="{{ session('email') }}">
</div>
<div class="col-12 col-md-6 offset-0 offset-md-3 mt10">
<a href="{{route('swo2_4')}}" class="btn btn-block btn-lg btn-success">入力確認</a>
<p style="color: red;">
@if ($errors->has('name')) {{ $errors->first('name') }}<br /> @endif
@if ($errors->has('kana')) {{ $errors->first('kana') }}<br /> @endif
@if ($errors->has('phone.*')) {{ $errors->first('phone.*') }}<br /> @endif
@if ($errors->has('mobile.*')) {{ $errors->first('mobile.*') }}<br /> @endif
</p>
<button type="submit" class="btn btn-block btn-lg btn-success">入力確認</button>
</div>
@csrf
</form>
</section>
</div>

View File

@ -25,21 +25,29 @@
<div class="card-body mt30">
<p class="h4">入力内容をご確認の上、登録ボタンを押して下さい。</p>
<section id="" class="container mt50 mb50">
<form class="row form" action="{route('swo2_5')}}" method="post">
<input type="hidden" name="_token" value="oEhAfdqtNNAs2vOfjZqveVaH3G1fF62yb8qJIshV">
<div class="col-12 col-md-3 offset-0 offset-md-1"><label for="user_name">お名前</label></div>
<div class="col-12 col-lg-6 mb10"><h3>テスト</h3><input type="hidden" name="user_name" value="テスト"></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label for="user_phonetic">フリガナ</label></div>
<div class="col-12 col-lg-6 mb10"><h3>テスト</h3><input type="hidden" name="user_phonetic" value="テスト"></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label for="user_homephone">自宅電話番号</label></div>
<div class="col-12 col-lg-6 mb10"><h3>111-1111-1111</h3><input type="hidden" name="user_homephone" value="111-1111-1111"></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label for="user_mobile">予備電話番号</label></div>
<div class="col-12 col-lg-6 mb10"><h3></h3><input type="hidden" name="user_mobile" value=""></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label for="user_primemail">メールアドレス</label></div>
<div class="col-12 col-lg-6 mb10"><h3>a@b.co.jp</h3><input type="hidden" name="user_primemail" value="a@b.co.jp"></div>
<div class="col-12 col-md-5 offset-0 offset-md-1 mt10"><a href="./complete.html" class="btn btn-lg btn-block btn-outline-success">登録</a></div>
<div class="col-12 col-md-5 mt10"><a href="route('swo2_5')}}" class="btn btn-lg btn-block btn-outline-success">戻る</a></div>
<form class="row form" action="{{ route('swo2_5') }}" method="post">
<div class="col-12 col-md-3 offset-0 offset-md-1"><label>お名前</label></div>
<div class="col-12 col-lg-6 mb10"><h3>{{ $input_data['name'] }}</h3><input type="hidden" name="name" value="{{ $input_data['name'] }}"></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label>フリガナ</label></div>
<div class="col-12 col-lg-6 mb10"><h3>{{ $input_data['kana'] }}</h3><input type="hidden" name="kana" value="{{ $input_data['kana'] }}"></div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label>自宅電話番号</label></div>
<div class="col-12 col-lg-6 mb10"><h3>{{ implode('-', $input_data['phone']) }}</h3>
<input type="hidden" name="phone[]" value="{{ $input_data['phone'][0] }}">
<input type="hidden" name="phone[]" value="{{ $input_data['phone'][1] }}">
<input type="hidden" name="phone[]" value="{{ $input_data['phone'][2] }}">
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label>予備電話番号</label></div>
<div class="col-12 col-lg-6 mb10"><h3>{{ implode('-', $input_data['mobile']) }}</h3>
<input type="hidden" name="mobile[]" value="{{ $input_data['mobile'][0] }}">
<input type="hidden" name="mobile[]" value="{{ $input_data['mobile'][1] }}">
<input type="hidden" name="mobile[]" value="{{ $input_data['mobile'][2] }}">
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1"><label>メールアドレス</label></div>
<div class="col-12 col-lg-6 mb10"><h3>{{ $input_data['email'] }}</h3><input type="hidden" name="email" value="{{ $input_data['email'] }}"></div>
<div class="col-12 col-md-5 offset-0 offset-md-1 mt10"><button type="submit" class="btn btn-lg btn-block btn-outline-success" name='submit' value="complete">登録</button></div>
<div class="col-12 col-md-5 mt10"><button type="submit" class="btn btn-lg btn-block btn-outline-success" name='back' value="back">戻る</button></div>
<div class="col-12 col-md-4 offset-0 offset-md-4 mt50 mb50"></div>
@csrf
</form>
</section>
</div>

View File

@ -22,36 +22,40 @@
<h5 class="card-title text-success">パスワードの再設定</h5>
</div>
<div class="card-body mt30">
<form class="row form" action="" method="post">
<form class="row form" action="{{route('swo8_3')}}" method="post">
<input type="hidden" name="_token" value="KyErVdH3giV3UrqRiP3COWGRAYkdJzeU3sJe1hDH">
<div class="col-12 col-lg-3 text-lg-center offset-0 offset-lg-1">
<label for="user_primemail">メールアドレス</label>
</div>
<div class="col-12 col-lg-7 mb10">
<input type="email" name="user_primemail" id="user_primemail" class="form-control form-control-lg" placeholder="info@so-manager.com" value="" />
<input type="email" name="email" class="form-control form-control-lg" placeholder="info@so-manager.com" value="{{ old('email') }}" />
</div>
<div class="col-12 col-lg-3 text-lg-center offset-0 offset-lg-1">
<label for="user_phone">電話番号</label>
<label>電話番号</label>
</div>
<div class="col-12 col-lg-7 mb10">
<div class="row justify-content-between col-12 m-0 p-0">
<input type="text" maxlength="5" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="5" name="phone[]" value="{{ old('phone.0') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="phone[]" value="{{ old('phone.1') }}" class="form-control form-control-lg check_key_int col-3"/>
<div class="align-self-center"></div>
<input type="text" maxlength="4" name="user_homephone[]" value="" class="form-control form-control-lg check_key_int col-3"/>
<input type="text" maxlength="4" name="phone[]" value="{{ old('phone.2') }}" class="form-control form-control-lg check_key_int col-3"/>
</div>
</div>
<div class="col-12 col-lg-10 text-lg-center offset-0 offset-lg-1 mt30 mb20">
@if ($errors->has('email')) <p style="color: red;">{{ $errors->first('email') }}</p><br /> @endif
@if ($errors->has('phone.*')) <p style="color: red;">{{ $errors->first('phone.*') }}</p><br /> @endif
@if ($errors->has('nodata')) <p style="color: red;">{{ $errors->first('nodata') }}</p><br /> @endif
<p>会員情報の確認を行います。<br>
会員情報の登録を行った際のメールアドレスと自宅/携帯電話番号を入力して<br class="pc">「送信する」ボタンをクリックしてください。<br>
※ご登録のメールアドレスに新たなパスワードをお送りします。
</p>
</div>
<div class="col-12 col-lg-6 text-lg-center offset-0 offset-lg-3 mb50">
<a href="{{route('swo8_3')}}" class="btn btn-block btn-lg btn-success">送信する</a>
<button type="submit" class="btn btn-block btn-lg btn-outline-success">送信する</button>
<a href="{{route('swo8_1')}}" class="btn btn-block btn-lg btn-outline-success">戻る</a>
</div>
@csrf
</form>
</div>
</div>

View File

@ -2,14 +2,13 @@
use App\Http\Controllers\Controller;
use App\Http\Controllers\InquiryConfirmController;
use App\Http\Controllers\MemberRegistrationController;
use App\Http\Controllers\PasswordReminderController;
use Illuminate\Support\Facades\Route;
// 画面遷移のみ
Route::get('/', function () { return view('swo1_1'); })->name('swo1_1');
Route::get('/swo2_1', function () { return view('swo2_1'); })->name('swo2_1');
Route::get('/swo2_3', function () { return view('swo2_3'); })->name('swo2_3');
Route::get('/swo2_4', function () { return view('swo2_4'); })->name('swo2_4');
Route::get('/swo2_5', function () { return view('swo2_5'); })->name('swo2_5');
Route::get('/swo3_1', function () { return view('swo3_1'); })->name('swo3_1');
Route::get('/swo3_2', function () { return view('swo3_2'); })->name('swo3_2');
Route::get('/swo3_3', function () { return view('swo3_3'); })->name('swo3_3');
@ -18,7 +17,6 @@ Route::get('/swo5_1', function () { return view('swo5_1'); })->name('swo5_1');
Route::get('/swo6_1', function () { return view('swo6_1'); })->name('swo6_1');
Route::get('/swo8_1', function () { return view('swo8_1'); })->name('swo8_1');
Route::get('/swo8_2', function () { return view('swo8_2'); })->name('swo8_2');
Route::get('/swo8_3', function () { return view('swo8_3'); })->name('swo8_3');
Route::get('/swo9_1', function () { return view('swo9_1'); })->name('swo9_1');
Route::get('/swo9_2', function () { return view('swo9_2'); })->name('swo9_2');
Route::get('/swo9_3', function () { return view('swo9_3'); })->name('swo9_3');
@ -33,9 +31,14 @@ Route::get('/swo15_1', function () { return view('swo15_1'); })->name('swo15_1')
Route::get('/swo15_2', function () { return view('swo15_2'); })->name('swo15_2');
Route::get('/swo16_1', function () { return view('swo16_1'); })->name('swo16_1');
Route::get('/swo17_1', function () { return view('swo17_1'); })->name('swo17_1');
Route::get('/error', function () { return view('error'); })->name('error');
// コントローラー経由
Route::get('/swo2_2', [MemberRegistrationController::class, 'sendMail'])->name('swo2_2');
Route::post('/swo2_2', [MemberRegistrationController::class, 'sendMail'])->name('swo2_2');
Route::get('/swo2_3', [MemberRegistrationController::class, 'index'])->name('swo2_3')->middleware('signed');
Route::post('/swo2_4', [MemberRegistrationController::class, 'confirm'])->name('swo2_4');
Route::post('/swo2_5', [MemberRegistrationController::class, 'complete'])->name('swo2_5');
Route::get('/swo7_1', [InquiryConfirmController::class, 'index'])->name('swo7_1');
Route::post('/swo7_2',[InquiryConfirmController::class, 'confirm'])->name('swo7_2');
Route::post('/swo7_3',[InquiryConfirmController::class, 'complete'])->name('swo7_3');
Route::post('/swo8_3', [PasswordReminderController::class, 'sendMail'])->name('swo8_3');