main_watanabe #9
10
.env
10
.env
@ -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
41
app/CommonFunction.php
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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】お問い合わせ受信');
|
||||
});
|
||||
|
||||
// 完了画面に遷移
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
71
app/Http/Controllers/PasswordReminderController.php
Normal file
71
app/Http/Controllers/PasswordReminderController.php
Normal 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');
|
||||
}
|
||||
}
|
||||
@ -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 [];
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'timezone' => 'UTC',
|
||||
'timezone' => 'Asia/Tokyo',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'mail_admin' => env('MAIL_ADMIN', 'admin@example.com'),
|
||||
];
|
||||
6
config/env.php
Normal file
6
config/env.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
// 環境変数保持用config
|
||||
return [
|
||||
'mail_admin' => env('MAIL_ADMIN', 'admin@example.com'),
|
||||
];
|
||||
1100
public/assets/css/app.css
Normal file
1100
public/assets/css/app.css
Normal file
File diff suppressed because it is too large
Load Diff
23
resources/views/emails/member_regist_complete.blade.php
Normal file
23
resources/views/emails/member_regist_complete.blade.php
Normal 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
|
||||
|
||||
※本メールアドレスは送信専用となり、ご返信には回答致しかねますのでご了承下さい。
|
||||
※本メールにお心当たりが無い場合には、コールセンターまでご連絡くださいますようお願い致します。
|
||||
@ -7,7 +7,7 @@
|
||||
下記URLにアクセスしてご登録手続き(無料)を完了させて下さい。
|
||||
|
||||
▼会員登録お手続きページ▼
|
||||
{{ $url }}
|
||||
{!! $url !!}
|
||||
|
||||
【お問い合わせ先】
|
||||
・電話でのお問い合わせ
|
||||
|
||||
27
resources/views/emails/password_remind.blade.php
Normal file
27
resources/views/emails/password_remind.blade.php
Normal 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
|
||||
|
||||
※本メールアドレスは送信専用となり、ご返信には回答致しかねますのでご了承下さい。
|
||||
※本メールにお心当たりが無い場合には、コールセンターまでご連絡くださいますようお願い致します。
|
||||
28
resources/views/error.blade.php
Normal file
28
resources/views/error.blade.php
Normal 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>
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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');
|
||||
Loading…
Reference in New Issue
Block a user