feat: add auth routes and update register view

This commit is contained in:
2026-08-16 11:31:47 +03:30
parent 43c786a751
commit ede831c121
5 changed files with 129 additions and 28 deletions
@@ -2,17 +2,35 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Enums\UserMaritalStatus;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\RegisterPostRequest;
use App\Models\Province;
use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class RegisterController extends Controller class RegisterController extends Controller
{ {
public function index() public function index()
{ {
$provinces = Province::all();
$maritalStatuses = UserMaritalStatus::cases();
$withoutHeader = true; $withoutHeader = true;
$withoutFooter = true; $withoutFooter = true;
return view('auth.register' , compact('withoutFooter' , 'withoutHeader')); return view('auth.register' , compact('withoutFooter' , 'withoutHeader' , 'provinces' , 'maritalStatuses'));
} }
public function post(RegisterPostRequest $request)
{
$input = $request->validated();
$input['password'] = Hash::make($input['password']);
$user = User::create($input);
Auth::login($user);
return redirect()->route('index');
}
} }
+14 -1
View File
@@ -82,7 +82,20 @@ class RegisterPostRequest extends FormRequest
'persian_alpha' 'persian_alpha'
], ],
'gender' => [ 'gender' => [
'required' 'required',
'int',
'in:0,1,2'
],
'marital_status' => [
'required',
'int',
'in:0,1'
],
'user_province' => [
'nullable'
],
'user_city' => [
'nullable'
] ]
]; ];
} }
+6 -4
View File
@@ -6,10 +6,12 @@
namespace App\Models; namespace App\Models;
use App\Enums\UserGender;
use App\Enums\UserMaritalStatus;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticated;
/** /**
* Class User * Class User
* *
@@ -35,14 +37,14 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* *
* @package App\Models * @package App\Models
*/ */
class User extends Model class User extends Authenticated
{ {
use SoftDeletes; use SoftDeletes;
protected $table = 'users'; protected $table = 'users';
protected $casts = [ protected $casts = [
'gender' => 'bool', 'gender' => UserGender::class,
'marital_status' => 'int', 'marital_status' => UserMaritalStatus::class,
'file_id' => 'int' 'file_id' => 'int'
]; ];
+75 -17
View File
@@ -1,12 +1,13 @@
@extends('layouts.app') @extends('layouts.app')
@section('content') @section('content')
<div class="container"> <div class="container">
<h2 class="breadcrumb-title">ثبت نام</h2> <h2 class="breadcrumb-title">ثبت نام</h2>
<ul class="breadcrumb-menu"> <ul class="breadcrumb-menu">
<li> <li>
<a href="{{ url('/') }}">صفحه اصلی</a> <a href="#">صفحه اصلی</a>
</li> </li>
<li class="active">ثبت نام</li> <li class="active">ثبت نام</li>
@@ -17,7 +18,10 @@
<div class="col-md-5 mx-auto"> <div class="col-md-5 mx-auto">
<div class="login-form"> <div class="login-form">
<div class="login-header"> <div class="login-header">
<img src="{{ asset('assets/img/logo/logo-dark.png') }}" alt=""> <a href="{{route('index')}}">
<img src="{{ asset('assets/img/logo/logo-dark.png') }}" alt="">
</a>
<p>حساب MyTrip خود را ایجاد کنید</p> <p>حساب MyTrip خود را ایجاد کنید</p>
</div> </div>
<form action="#" method="POST" enctype="multipart/form-data"> <form action="#" method="POST" enctype="multipart/form-data">
@@ -32,7 +36,13 @@
class="form-control" class="form-control"
placeholder="نام" placeholder="نام"
id="first_name" id="first_name"
value="{{old('first_name')}}"
> >
<span>
@error('first_name')
<u>({{ $message }})</u>
@enderror
</span>
<i class="far fa-user"></i> <i class="far fa-user"></i>
</div> </div>
</div> </div>
@@ -46,8 +56,13 @@
class="form-control" class="form-control"
placeholder="نام خانوادگی" placeholder="نام خانوادگی"
id="last_name" id="last_name"
value="{{old('last_name')}}"
> >
@error('last_name')
<u>({{ $message }})</u>
@enderror
<i class="far fa-user"></i> <i class="far fa-user"></i>
</div> </div>
</div> </div>
@@ -61,8 +76,12 @@
class="form-control" class="form-control"
placeholder="کد ملی" placeholder="کد ملی"
id="national_code" id="national_code"
value="{{old('national_code')}}"
> >
@error('national_code')
<u>({{ $message }})</u>
@enderror
<i class="far fa-id-card"></i> <i class="far fa-id-card"></i>
</div> </div>
</div> </div>
@@ -71,9 +90,12 @@
<div class="form-group-icon"> <div class="form-group-icon">
<select name="gender" class="form-control" id="gender"> <select name="gender" class="form-control" id="gender">
<option value="">انتخاب جنسیت</option> <option value="">انتخاب جنسیت</option>
<option value="male">مرد</option> <option value="1">مرد</option>
<option value="female">زن</option> <option value="0">زن</option>
</select> </select>
@error('gender')
<u>({{ $message }})</u>
@enderror
<i class="far fa-user"></i> <i class="far fa-user"></i>
</div> </div>
</div> </div>
@@ -82,11 +104,14 @@
<div class="form-group-icon"> <div class="form-group-icon">
<select name="marital_status" class="form-control" id="marital_status"> <select name="marital_status" class="form-control" id="marital_status">
<option value="">انتخاب وضعیت تأهل</option> <option value="">انتخاب وضعیت تأهل</option>
<option value="single">مجرد</option> <option value="0">مجرد</option>
<option value="married">متأهل</option> <option value="1">متأهل</option>
<option value="divorced">مطلقه</option> <option value="2">مطلقه</option>
<option value="widowed">بیوه</option>
</select> </select>
@error('marital_status')
<u>({{ $message }})</u>
@enderror
<i class="far fa-heart"></i> <i class="far fa-heart"></i>
</div> </div>
</div> </div>
@@ -99,8 +124,13 @@
class="form-control" class="form-control"
placeholder="نام و نام خانوادگی همسر" placeholder="نام و نام خانوادگی همسر"
id="spouse_name" id="spouse_name"
value="{{old('spouse_name')}}"
> >
@error('spouse_name')
<u>({{ $message }})</u>
@enderror
<i class="far fa-user"></i> <i class="far fa-user"></i>
</div> </div>
</div> </div>
@@ -113,7 +143,12 @@
class="form-control" class="form-control"
placeholder="شماره موبایل" placeholder="شماره موبایل"
id="mobile" id="mobile"
value="{{old('mobile')}}"
> >
@error('mobile')
<u>({{ $message }})</u>
@enderror
<i class="far fa-phone"></i> <i class="far fa-phone"></i>
</div> </div>
</div> </div>
@@ -126,7 +161,12 @@
class="form-control" class="form-control"
placeholder="ایمیل خود را وارد کنید" placeholder="ایمیل خود را وارد کنید"
id="email" id="email"
value="{{old('email')}}"
> >
@error('email')
<u>({{ $message }})</u>
@enderror
<i class="far fa-envelope"></i> <i class="far fa-envelope"></i>
</div> </div>
</div> </div>
@@ -140,20 +180,29 @@
accept="image/*" accept="image/*"
id="image" id="image"
> >
@error('image')
<u>({{ $message }})</u>
@enderror
<i class="far fa-image"></i> <i class="far fa-image"></i>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="username">نام کاربری *</label> <label for="user_name">نام کاربری *</label>
<div class="form-group-icon"> <div class="form-group-icon">
<input <input
type="text" type="text"
name="username" name="user_name"
class="form-control" class="form-control"
placeholder="نام کاربری" placeholder="نام کاربری"
id="username" id="user_name"
value="{{old('username')}}"
> >
@error('user_name')
<u>({{ $message }})</u>
@enderror
<i class="far fa-user"></i> <i class="far fa-user"></i>
</div> </div>
</div> </div>
@@ -167,6 +216,9 @@
placeholder="رمز عبور را وارد کنید" placeholder="رمز عبور را وارد کنید"
id="password" id="password"
> >
@error('password')
<u>({{ $message }})</u>
@enderror
<i class="far fa-lock"></i> <i class="far fa-lock"></i>
</div> </div>
</div> </div>
@@ -189,12 +241,15 @@
<div class="form-group-icon"> <div class="form-group-icon">
<select name="province" class="form-control" id="province"> <select name="province" class="form-control" id="province">
<option value="">انتخاب استان</option> <option value="">انتخاب استان</option>
<option value="mazandaran">مازندران</option> @foreach($provinces as $province)
<option value="tehran">تهران</option> <option value="mazandaran">{{$province->name}}</option>
<option value="gilan">گیلان</option> @endforeach
<option value="fars">فارس</option>
<option value="isfahan">اصفهان</option>
</select> </select>
@error('province')
<u>({{ $message }})</u>
@enderror
<i class="far fa-map"></i> <i class="far fa-map"></i>
</div> </div>
</div> </div>
@@ -209,6 +264,9 @@
<option value="mashhad">مشهد</option> <option value="mashhad">مشهد</option>
<option value="isfahan">اصفهان</option> <option value="isfahan">اصفهان</option>
</select> </select>
@error('city')
<u>({{ $message }})</u>
@enderror
<i class="far fa-map-marker-alt"></i> <i class="far fa-map-marker-alt"></i>
</div> </div>
</div> </div>
@@ -246,7 +304,7 @@
</div> </div>
<p> <p>
از قبل حساب کاربری دارید؟ از قبل حساب کاربری دارید؟
<a href="{{ route('auth.login') }}"> <a href="{{ route('auth.login.index') }}">
وارد شدن. وارد شدن.
</a> </a>
</p> </p>
+13 -3
View File
@@ -1,11 +1,21 @@
<?php <?php
use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\LogoutController;
use App\Http\Controllers\Auth\RegisterController; use App\Http\Controllers\Auth\RegisterController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('auth/')->name('auth.')->middleware('guest')->group(function (){ Route::prefix('auth/')->name('auth.')->middleware('guest')->group(function () {
Route::get('login' , [LoginController::class , 'index'])->name('login'); Route::prefix('login')->controller(LoginController::class)->name('login.')->group(function () {
Route::get('register' , [RegisterController::class , 'index'])->name('register'); Route::get('', 'index')->name('index');
Route::post('', 'post')->name('post');
});
Route::prefix('register')->controller(RegisterController::class)->name('register.')->group(function () {
Route::get('/', 'index')->name('index');
Route::post('/', 'post')->name('post');
});
}); });
Route::get('logout', [LogoutController::class, 'index'])->name('logout');