git add .
git commit "add user authentication"
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum UserGender : int
|
||||
{
|
||||
case male=0;
|
||||
case famale=1;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum UserMaritalStatus : int
|
||||
{
|
||||
case single = 0;
|
||||
case Married = 1;
|
||||
case Separated = 2;
|
||||
}
|
||||
@@ -3,9 +3,35 @@
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\LoginPostRequest;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
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');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,8 +4,18 @@ namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
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\Http\Controllers\Controller;
|
||||
use App\Http\Requests\RegisterRequest;
|
||||
use App\Http\Requests\RegisterPostRequest;
|
||||
use App\Models\Province;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -22,7 +22,7 @@ class RegisterController extends Controller
|
||||
return view('auth.register',compact('withoutHeader','withoutFooter','withoutHero','provinces'));
|
||||
}
|
||||
|
||||
public function post(RegisterRequest $request)
|
||||
public function post(RegisterPostRequest $request)
|
||||
{
|
||||
$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\Foundation\Http\FormRequest;
|
||||
|
||||
class LoginRequest extends FormRequest
|
||||
class FavoritePostRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
@@ -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\Validation\Rule;
|
||||
|
||||
class RegisterRequest extends FormRequest
|
||||
class RegisterPostRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
@@ -41,7 +41,7 @@ class RegisterRequest extends FormRequest
|
||||
'national_code' => [
|
||||
'required',
|
||||
'unique:users,national_code',
|
||||
'ir_national_id'
|
||||
// 'ir_national_id'
|
||||
],
|
||||
|
||||
'gender' => [
|
||||
@@ -72,7 +72,8 @@ class RegisterRequest extends FormRequest
|
||||
|
||||
'username' => [
|
||||
'required',
|
||||
'unique:users,username'
|
||||
'unique:users,username',
|
||||
'regex:/^[A-Za-z0-9]+$/',
|
||||
],
|
||||
'image' => [
|
||||
'nullable',
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -1,85 +1,189 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="theme-hero-area">
|
||||
|
||||
<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>
|
||||
|
||||
<div class="theme-hero-area-body">
|
||||
|
||||
<div class="theme-page-section _pt-100 theme-page-section-xl">
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
|
||||
<div class="theme-login theme-login-white">
|
||||
|
||||
<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 class="theme-login-box">
|
||||
|
||||
<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">
|
||||
<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>
|
||||
|
||||
|
||||
{{-- Password --}}
|
||||
<div class="form-group theme-login-form-group">
|
||||
<input class="form-control" type="password" placeholder="کلمه عبور">
|
||||
<p class="help-block">
|
||||
<a href="pwd-reset-2.html">رمز عبور را فراموش کرده اید؟</a>
|
||||
</p>
|
||||
<label>کلمه عبور</label>
|
||||
|
||||
<input
|
||||
class="form-control"
|
||||
type="password"
|
||||
name="password"
|
||||
placeholder="کلمه عبور"
|
||||
>
|
||||
|
||||
@error('password')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- General Error --}}
|
||||
@error('general')
|
||||
|
||||
<div class="text-danger">
|
||||
{{ $message }}
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
|
||||
|
||||
{{-- Remember --}}
|
||||
<div class="form-group">
|
||||
|
||||
<div class="theme-login-checkbox">
|
||||
|
||||
<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>
|
||||
|
||||
</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>
|
||||
<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">
|
||||
<p>حساب کاربری ندارید؟
|
||||
<a href="register-2.html">ثبت نام.</a>
|
||||
|
||||
<p>
|
||||
حساب کاربری ندارید؟
|
||||
|
||||
<a href="{{ route('auth.register.index') }}">
|
||||
ثبت نام.
|
||||
</a>
|
||||
|
||||
</p>
|
||||
|
||||
</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>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -1050,41 +1050,27 @@
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
اولویت ها
|
||||
پروفایل
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
تغییر رمز عبور
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
اطلاعیه
|
||||
علاقه مندی ها
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
روش های پرداخت
|
||||
نظرات قبلی
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
مسافران
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
تاریخچه سفر
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
علاقهمندیها
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<form action="{{ route('auth.logout.index') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
@@ -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>
|
||||
@@ -1,8 +1,18 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\HomeController;
|
||||
use App\Http\Controllers\ProfileController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
|
||||
Route::get('/', [HomeController::class,'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');
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user