git add .

git commit "add user authentication"
This commit is contained in:
2026-08-16 10:26:08 +03:30
parent 687681744a
commit e3549b4749
19 changed files with 460 additions and 74 deletions
+9
View File
@@ -0,0 +1,9 @@
<?php
namespace App\Enums;
enum UserGender : int
{
case male=0;
case famale=1;
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App\Enums;
enum UserMaritalStatus : int
{
case single = 0;
case Married = 1;
case Separated = 2;
}
+27 -1
View File
@@ -3,9 +3,35 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\LoginPostRequest;
use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller class LoginController extends Controller
{ {
// public function index()
{
$withoutHeader = true;
$withoutFooter = true;
$withoutHero = true;
return view('auth.login',compact('withoutHeader','withoutHero','withoutFooter'));
}
public function post(LoginPostRequest $request)
{
$user = $request->validated();
if (!Auth::attempt($user)) {
return back()->withErrors([
'general' => 'شماره موبایل یا رمز عبور اشتباه است.',
])->withInput();
}
$request->session()->regenerate();
return redirect()->route('users.dashboard');
}
} }
+11 -1
View File
@@ -4,8 +4,18 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LogoutController extends Controller class LogoutController extends Controller
{ {
// public function index()
{
Auth::logout();
Request()->session()->invalidate();
Request()->session()->regenerateToken();
return redirect()->route('index');
}
} }
@@ -4,7 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Enums\UserStatus; use App\Enums\UserStatus;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\RegisterRequest; use App\Http\Requests\RegisterPostRequest;
use App\Models\Province; use App\Models\Province;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -22,7 +22,7 @@ class RegisterController extends Controller
return view('auth.register',compact('withoutHeader','withoutFooter','withoutHero','provinces')); return view('auth.register',compact('withoutHeader','withoutFooter','withoutHero','provinces'));
} }
public function post(RegisterRequest $request) public function post(RegisterPostRequest $request)
{ {
$inputs = $request->validated(); $inputs = $request->validated();
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class DashboardController extends Controller
{
//
public function index()
{
$user=Auth::User();
return view('users.dashboard',compact('user'));
}
}
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FavoriteController extends Controller
{
//
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProfileUpdateRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ProfileController extends Controller
{
public function edite()
{
$user=Auth::User();
return view('users.profile.edit',compact('user'));
}
public function update(ProfileUpdateRequest $request)
{
}
}
@@ -5,7 +5,7 @@ namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends FormRequest class FavoritePostRequest extends FormRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class LoginPostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'mobile'=>[
'required',
'string',
'ir_mobile'
],
'password'=>[
'required',
'string'
]
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ProfileUpdateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
];
}
}
@@ -6,7 +6,7 @@ use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class RegisterRequest extends FormRequest class RegisterPostRequest extends FormRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@@ -41,7 +41,7 @@ class RegisterRequest extends FormRequest
'national_code' => [ 'national_code' => [
'required', 'required',
'unique:users,national_code', 'unique:users,national_code',
'ir_national_id' // 'ir_national_id'
], ],
'gender' => [ 'gender' => [
@@ -72,7 +72,8 @@ class RegisterRequest extends FormRequest
'username' => [ 'username' => [
'required', 'required',
'unique:users,username' 'unique:users,username',
'regex:/^[A-Za-z0-9]+$/',
], ],
'image' => [ 'image' => [
'nullable', 'nullable',
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+148 -44
View File
@@ -1,85 +1,189 @@
@extends('layouts.app') @extends('layouts.app')
@section('content') @section('content')
<div class="theme-hero-area"> <div class="theme-hero-area">
<div class="theme-hero-area-bg-wrap"> <div class="theme-hero-area-bg-wrap">
<div class="theme-hero-area-bg" style="background-image:url(img/adult-book-business-cactus-297755_1500x800.jpg);"></div> <div
class="theme-hero-area-bg"
style="background-image:url(img/adult-book-business-cactus-297755_1500x800.jpg);">
</div>
<div class="theme-hero-area-mask theme-hero-area-mask-strong"></div> <div class="theme-hero-area-mask theme-hero-area-mask-strong"></div>
</div> </div>
<div class="theme-hero-area-body"> <div class="theme-hero-area-body">
<div class="theme-page-section _pt-100 theme-page-section-xl"> <div class="theme-page-section _pt-100 theme-page-section-xl">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-4 col-md-offset-4"> <div class="col-md-4 col-md-offset-4">
<div class="theme-login theme-login-white"> <div class="theme-login theme-login-white">
<div class="theme-login-header"> <div class="theme-login-header">
<h1 class="theme-login-title">ورود</h1>
<p class="theme-login-subtitle">وارد حساب Bookify خود شوید</p> <h1 class="theme-login-title">
ورود
</h1>
<p class="theme-login-subtitle">
وارد حساب Bookify خود شوید
</p>
</div> </div>
<div class="theme-login-box"> <div class="theme-login-box">
<div class="theme-login-box-inner"> <div class="theme-login-box-inner">
<form class="theme-login-form">
{{-- Login Form --}}
<form
class="theme-login-form"
action="{{ route('auth.login.post') }}"
method="POST"
>
@csrf
{{-- Mobile --}}
<div class="form-group theme-login-form-group"> <div class="form-group theme-login-form-group">
<input class="form-control" type="text" placeholder="آدرس ایمیل"> <label>شماره موبایل</label>
<input
class="form-control"
type="text"
name="mobile"
value="{{ old('mobile') }}"
placeholder="شماره موبایل"
>
@error('mobile')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div> </div>
{{-- Password --}}
<div class="form-group theme-login-form-group"> <div class="form-group theme-login-form-group">
<input class="form-control" type="password" placeholder="کلمه عبور"> <label>کلمه عبور</label>
<p class="help-block">
<a href="pwd-reset-2.html">رمز عبور را فراموش کرده اید؟</a> <input
</p> class="form-control"
type="password"
name="password"
placeholder="کلمه عبور"
>
@error('password')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div> </div>
{{-- General Error --}}
@error('general')
<div class="text-danger">
{{ $message }}
</div>
@enderror
{{-- Remember --}}
<div class="form-group"> <div class="form-group">
<div class="theme-login-checkbox"> <div class="theme-login-checkbox">
<label class="icheck-label"> <label class="icheck-label">
<input class="icheck" type="checkbox">
<span class="icheck-title">مرا وارد سیستم نگه دارید</span> <input
class="icheck"
type="checkbox"
name="remember"
value="1"
>
<span class="icheck-title">
مرا وارد سیستم نگه دارید
</span>
</label> </label>
</div> </div>
</div> </div>
<a class="btn btn-uc btn-dark btn-block btn-lg" href="#">ورود</a>
{{-- Submit --}}
<button
type="submit"
class="btn btn-uc btn-dark btn-block btn-lg"
>
ورود
</button>
</form> </form>
<div class="theme-login-social-separator">
<p>یا با شبکه های اجتماعی وارد شوید</p>
</div>
<div class="theme-login-social-login">
<div class="row" data-gutter="10">
<div class="col-xs-6">
<a class="theme-login-social-login-facebook" href="#">
<i class="fa fa-facebook-square"></i>
<span>با
<br>
<b>فیس بوک وارد شوید</b>
</span>
</a>
</div>
<div class="col-xs-6">
<a class="theme-login-social-login-google" href="#">
<i class="fa fa-google-plus-circle"></i>
<span>با
<br>
<b>گوگل وارد شوید</b>
</span>
</a>
</div>
</div>
</div>
</div>
<div class="theme-login-box-alt"> <div class="theme-login-box-alt">
<p>حساب کاربری ندارید؟ &nbsp;
<a href="register-2.html">ثبت نام.</a> <p>
حساب کاربری ندارید؟ &nbsp;
<a href="{{ route('auth.register.index') }}">
ثبت نام.
</a>
</p> </p>
</div> </div>
</div> </div>
<p class="theme-login-terms">با ورود به سیستم، <a href="#">شرایط استفاده</a>
<br> و
<a href="#">سیاست حفظ حریم خصوصی</a> ما را می پذیرید <p class="theme-login-terms">
.
با ورود به سیستم،
<a href="#">
شرایط استفاده
</a>
<br>
و
<a href="#">
سیاست حفظ حریم خصوصی
</a>
ما را می پذیرید.
</p> </p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection
+8 -22
View File
@@ -1050,41 +1050,27 @@
<li> <li>
<a href="#"> <a href="#">
اولویت ها پروفایل
</a>
</li>
<li>
<a href="#">
تغییر رمز عبور
</a> </a>
</li> </li>
<li> <li>
<a href="#"> <a href="#">
اطلاعیه علاقه مندی ها
</a> </a>
</li> </li>
<li> <li>
<a href="#"> <a href="#">
روش های پرداخت نظرات قبلی
</a> </a>
</li> </li>
<li>
<a href="#">
مسافران
</a>
</li>
<li>
<a href="#">
تاریخچه سفر
</a>
</li>
<li>
<a href="#">
علاقه‌مندی‌ها
</a>
</li>
<li> <li>
<form action="{{ route('auth.logout.index') }}" method="POST"> <form action="{{ route('auth.logout.index') }}" method="POST">
@csrf @csrf
+111
View File
@@ -0,0 +1,111 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
پنل کاربری
</div>
<div class="panel-body">
<ul class="nav nav-pills nav-stacked">
<li>
<a href="{{ route('users.dashboard') }}">
داشبورد
</a>
</li>
<li>
<a href="{{route('users.profile.edit')}}">
ویرایش پروفایل
</a>
</li>
<li>
<a href="#">
تغییر رمز عبور
</a>
</li>
<li>
<a href="#">
علاقه‌مندی‌ها
</a>
</li>
<li>
<a href="#">
نظرات من
</a>
</li>
<li>
<a href="{{ route('auth.logout.index') }}">
خروج
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-9">
<div class="panel panel-default">
<div class="panel-heading">
داشبورد
</div>
<div class="panel-body">
<h3>
سلام {{ $user->first_name }} {{ $user->last_name }} 👋
</h3>
<p>
به پنل کاربری خود خوش آمدید.
</p>
<hr>
<p>
<strong>نام کاربری:</strong>
{{ $user->username }}
</p>
<p>
<strong>ایمیل:</strong>
{{ $user->email }}
</p>
<p>
<strong>موبایل:</strong>
{{ $user->mobile }}
</p>
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,3 @@
<div>
<!-- Well begun is half done. - Aristotle -->
</div>
@@ -0,0 +1,3 @@
<div>
<!-- It is never too late to be what you might have been. - George Eliot -->
</div>
+10
View File
@@ -1,8 +1,18 @@
<?php <?php
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\HomeController; use App\Http\Controllers\HomeController;
use App\Http\Controllers\ProfileController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::get('/', [HomeController::class,'index']) Route::get('/', [HomeController::class,'index'])
->name('index'); ->name('index');
Route::prefix('users')->name('users.')->middleware('auth:web')->group(function (){
Route::get('/',[DashboardController::class,'index'])->name('dashboard');
Route::get('/profile/edit',[ProfileController::class,'edite'])->name('profile.edit');
Route::put('/profile/update',[ProfileController::class,'update'])->name('profile.update');
});