git add .

git commit "Implement authentication flow and initialize home page hero section"
This commit is contained in:
2026-08-16 14:51:49 +03:30
parent d43e74b280
commit 6302570d75
19 changed files with 1276 additions and 303 deletions
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Controllers;
use App\Models\City;
use Illuminate\Http\Request;
class CityController extends Controller
{
//
public function getCities($province)
{
return City::where('province_id', $province)
->orderBy('name')
->get();
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers;
use App\Models\Comment;
use Illuminate\Http\Request;
class CommentController extends Controller
{
public function index()
{
$comments=Comment::query()
->where('user_id',auth()->id())
->with('tour')
->latest()
->paginate(4);
return view('account.users.comments.index',compact('comments'));
}
}
+1 -1
View File
@@ -12,6 +12,6 @@ class DashboardController extends Controller
{
$user=Auth::User();
return view('users.dashboard',compact('user'));
return view('account.users.dashboard',compact('user'));
}
}
+34 -6
View File
@@ -2,21 +2,49 @@
namespace App\Http\Controllers;
use App\Models\Favorite;
use Illuminate\Http\Request;
class FavoriteController extends Controller
{
//
public function create()
public function index()
{
$favorites=Favorite::with('tour')
->where('user_id',auth()->id())
->latest()
->get();
return view('account.users.favorite.index',compact('favorites'));
}
public function store()
public function store(Request $request)
{
$request->validate([
'tour_id'=>[
'required',
'exists:tours,id'
],
]);
Favorite::firstOrCreate([
'user_id' => auth()->id(),
'tour_id' => $request->tour_id,
]);
return back()->with(
'success',
'تور به علاقه‌مندی‌ها اضافه شد.'
);
}
public function destroy(Favorite $favorite)
{
}
public function destroy()
{
$favorite->delete();
return back()->with(
'success',
'تور از علاقه‌مندی‌ها حذف شد.'
);
}
}
+7 -3
View File
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\ProfileUpdateRequest;
use App\Models\Province;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -14,7 +15,9 @@ class ProfileController extends Controller
{
$withoutHero=true;
$user=Auth::User();
return view('users.profile.edit',compact('user','withoutHero'));
$provinces=Province::orderBy('name')->get();
return view('account.users.profile.edit',compact('user','withoutHero','provinces'));
}
public function update(ProfileUpdateRequest $request)
@@ -22,8 +25,8 @@ class ProfileController extends Controller
$user=$request->user();
$inputs=$request->validated();
if (!empty($inputs['new_password'])){
$user->password=Hash::make($inputs['new_password']);
if ($request->filled('new_password')){
$inputs['password']=Hash::make($request->new_password);
}
unset(
@@ -46,6 +49,7 @@ class ProfileController extends Controller
$inputs['profile_image'] = $imageName;
}
$user->update($inputs);
return back()->with([
@@ -42,7 +42,6 @@ class ProfileUpdateRequest extends FormRequest
'national_code' => [
'required',
'ir_national_id',
Rule::unique('users', 'national_code')
->ignore($user->id),
],
+11
View File
@@ -0,0 +1,11 @@
<?php
if (!function_exists('getUserFullName')) {
function getUserFullName(?\App\Models\User $user = null): string
{
if (!$user) {
$user = auth()->user();
}
return $user->first_name . ' ' . $user->last_name;
}
}
+4 -1
View File
@@ -26,7 +26,10 @@
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"files": [
"app/helpers/helpers.php"
]
},
"autoload-dev": {
"psr-4": {
@@ -0,0 +1,3 @@
<div>
<!-- Waste no more time arguing what a good man should be, be one. - Marcus Aurelius -->
</div>
@@ -0,0 +1,199 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section theme-page-section-lg">
<div class="container">
<div class="row">
{{-- Sidebar --}}
<div class="col-md-3">
<div class="theme-account-sidebar">
<div class="theme-account-sidebar-header">
<div class="theme-account-sidebar-user">
<div class="theme-account-sidebar-user-icon">
<i class="fa fa-user-circle-o"></i>
</div>
<div class="theme-account-sidebar-user-name">
{{getUserFullName()}}
</div>
<div class="theme-account-sidebar-user-email">
{{ auth()->user()->email }}
</div>
</div>
</div>
<ul class="theme-account-sidebar-menu">
<li>
<a href="{{ route('users.profile.edit') }}">
<i class="fa fa-user"></i>
پروفایل من
</a>
</li>
<li>
<a href="{{ route('users.favorite.index') }}">
<i class="fa fa-heart"></i>
علاقه‌مندی‌ها
</a>
</li>
<li class="active">
<a href="{{ route('users.comments.index') }}">
<i class="fa fa-comments"></i>
نظرات من
</a>
</li>
<li>
<form
action="{{ route('auth.logout.index') }}"
method="POST"
>
@csrf
<button type="submit">
<i class="fa fa-sign-out"></i>
خروج
</button>
</form>
</li>
</ul>
</div>
</div>
{{-- Content --}}
<div class="col-md-9">
<div class="theme-account">
<div class="theme-account-header">
<h1 class="theme-account-title">
نظرات من
</h1>
<p class="theme-account-subtitle">
فهرست نظراتی که ثبت کرده‌اید
</p>
</div>
@if($comments->count())
<div class="theme-account-box">
@foreach($comments as $comment)
<div class="theme-account-box-row">
<div class="row">
<div class="col-md-8">
@if($comment->tour)
<h4>
{{ $comment->tour->title }}
</h4>
@endif
<p>
{{ $comment->body }}
</p>
</div>
<div class="col-md-4 text-left">
@if(isset($comment->status))
@if($comment->status == 1)
<span class="label label-success">
تأیید شده
</span>
@elseif($comment->status == 0)
<span class="label label-warning">
در انتظار تأیید
</span>
@else
<span class="label label-danger">
رد شده
</span>
@endif
@endif
<div class="text-muted">
{{ $comment->created_at?->format('Y/m/d') }}
</div>
</div>
</div>
</div>
@if(!$loop->last)
<hr>
@endif
@endforeach
</div>
<div class="text-center">
{{ $comments->links() }}
</div>
@else
<div class="theme-account-box text-center">
<div class="theme-account-box-icon">
<i class="fa fa-comments-o"></i>
</div>
<h3>
هنوز نظری ثبت نکرده‌اید
</h3>
<p>
نظرات شما درباره تورها در این قسمت نمایش داده می‌شود.
</p>
<a
href="{{ route('index') }}"
class="btn btn-primary"
>
مشاهده تورها
</a>
</div>
@endif
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -31,13 +31,7 @@
</li>
<li>
<a href="#">
تغییر رمز عبور
</a>
</li>
<li>
<a href="#">
<a href="{{route('users.favorite.index')}}">
علاقه‌مندی‌ها
</a>
</li>
@@ -0,0 +1,202 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section theme-page-section-lg">
<div class="container">
<div class="row">
{{-- Sidebar --}}
<div class="col-md-3">
<div class="theme-account-sidebar">
<div class="theme-account-sidebar-header">
<div class="theme-account-sidebar-user">
<div class="theme-account-sidebar-user-icon">
<i class="fa fa-user-circle-o"></i>
</div>
<div class="theme-account-sidebar-user-name">
{{getUserFullName()}}
</div>
<div class="theme-account-sidebar-user-email">
{{ auth()->user()->email }}
</div>
</div>
</div>
<ul class="theme-account-sidebar-menu">
<li>
<a href="{{ route('users.profile.edit') }}">
<i class="fa fa-user"></i>
پروفایل من
</a>
</li>
<li class="active">
<a href="{{ route('users.favorite.index') }}">
<i class="fa fa-heart"></i>
علاقه‌مندی‌ها
</a>
</li>
<li>
<form
action="{{ route('auth.logout.index') }}"
method="POST"
>
@csrf
<button type="submit">
<i class="fa fa-sign-out"></i>
خروج
</button>
</form>
</li>
</ul>
</div>
</div>
{{-- Content --}}
<div class="col-md-9">
<div class="theme-account">
<div class="theme-account-header">
<h1 class="theme-account-title">
علاقه‌مندی‌های من
</h1>
<p class="theme-account-subtitle">
تورهایی که به علاقه‌مندی‌های خود اضافه کرده‌اید
</p>
</div>
{{-- Success Message --}}
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
{{-- Favorites --}}
@if($favorites->count())
<div class="row" data-gutter="20">
@foreach($favorites as $favorite)
<div class="col-md-6">
<div class="theme-search-results-item">
<div class="theme-search-results-item-img-wrap">
@if($favorite->tour->image)
<img
class="theme-search-results-item-img"
src="{{ asset('uploads/tours/' . $favorite->tour->image) }}"
alt="{{ $favorite->tour->title }}"
>
@else
<img
class="theme-search-results-item-img"
src="{{ asset('img/placeholder.jpg') }}"
alt="{{ $favorite->tour->title }}"
>
@endif
</div>
<div class="theme-search-results-item-title">
<h3>
{{ $favorite->tour->title }}
</h3>
</div>
<div class="theme-search-results-item-actions">
<a
href="#"
class="btn btn-primary"
>
مشاهده تور
</a>
<form
action="{{ route('users.favorite.destroy', $favorite) }}"
method="POST"
style="display:inline-block;"
>
@csrf
@method('DELETE')
<button
type="submit"
class="btn btn-danger"
>
<i class="fa fa-heart-o"></i>
حذف
</button>
</form>
</div>
</div>
</div>
@endforeach
</div>
@else
<div class="theme-account-box">
<div class="theme-account-box-icon">
<i class="fa fa-heart-o"></i>
</div>
<h3>
لیست علاقه‌مندی‌های شما خالی است
</h3>
<p>
هنوز هیچ توری را به علاقه‌مندی‌های خود اضافه نکرده‌اید.
</p>
<a
href="{{ route('index') }}"
class="btn btn-primary"
>
مشاهده تورها
</a>
</div>
@endif
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,761 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section theme-page-section-lg">
<div class="container">
<div class="row">
{{-- Sidebar --}}
<div class="col-md-3">
<div class="theme-account-sidebar">
<div class="theme-account-sidebar-header">
<div class="theme-account-sidebar-user">
<div class="theme-account-sidebar-user-icon">
@if($user->profile_image)
<img
src="{{ asset('uploads/users/' . $user->profile_image) }}"
alt="{{ $user->first_name }}"
style="width:70px;height:70px;border-radius:50%;object-fit:cover;"
>
@else
<i class="fa fa-user-circle-o"></i>
@endif
</div>
<div class="theme-account-sidebar-user-name">
{{getUserFullName()}}
</div>
<div class="theme-account-sidebar-user-email">
{{ $user->email }}
</div>
</div>
</div>
<ul class="theme-account-sidebar-menu">
<li class="active">
<a href="{{ route('users.profile.edit') }}">
<i class="fa fa-user"></i>
ویرایش پروفایل
</a>
</li>
<li>
<a href="{{ route('users.favorite.index') }}">
<i class="fa fa-heart"></i>
علاقه‌مندی‌ها
</a>
</li>
<li>
<a href="{{ route('users.comments.index') }}">
<i class="fa fa-comments"></i>
نظرات من
</a>
</li>
<li>
<form
action="{{ route('auth.logout.index') }}"
method="POST"
>
@csrf
<button type="submit">
<i class="fa fa-sign-out"></i>
خروج
</button>
</form>
</li>
</ul>
</div>
</div>
{{-- Profile --}}
<div class="col-md-9">
<div class="theme-account">
<div class="theme-account-header">
<h1 class="theme-account-title">
ویرایش پروفایل
</h1>
<p class="theme-account-subtitle">
اطلاعات حساب کاربری خود را ویرایش کنید
</p>
</div>
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@if($errors->any())
<div class="alert alert-danger">
لطفاً خطاهای فرم را بررسی کنید.
</div>
@endif
<form
action="{{ route('users.profile.update') }}"
method="POST"
enctype="multipart/form-data"
>
@csrf
@method('PUT')
{{-- Personal Information --}}
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
اطلاعات شخصی
</h3>
</div>
<div class="theme-account-box-content">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="first_name">
نام
</label>
<input
type="text"
id="first_name"
name="first_name"
value="{{ old('first_name', $user->first_name) }}"
class="form-control"
>
@error('first_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="last_name">
نام خانوادگی
</label>
<input
type="text"
id="last_name"
name="last_name"
value="{{ old('last_name', $user->last_name) }}"
class="form-control"
>
@error('last_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="national_code">
کد ملی
</label>
<input
type="text"
id="national_code"
name="national_code"
value="{{ old('national_code', $user->national_code) }}"
class="form-control"
>
@error('national_code')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="mobile">
موبایل
</label>
<input
type="text"
id="mobile"
name="mobile"
value="{{ old('mobile', $user->mobile) }}"
class="form-control"
>
@error('mobile')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="email">
ایمیل
</label>
<input
type="email"
id="email"
name="email"
value="{{ old('email', $user->email) }}"
class="form-control"
>
@error('email')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="username">
نام کاربری
</label>
<input
type="text"
id="username"
name="username"
value="{{ old('username', $user->username) }}"
class="form-control"
>
@error('username')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
</div>
</div>
{{-- Gender & Marital Status --}}
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
اطلاعات تکمیلی
</h3>
</div>
<div class="theme-account-box-content">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="gender">
جنسیت
</label>
<select
id="gender"
name="gender"
class="form-control"
>
<option value="">
انتخاب جنسیت
</option>
<option
value="0"
@selected(old('gender', $user->gender) == 0)
>
مرد
</option>
<option
value="1"
@selected(old('gender', $user->gender) == 1)
>
زن
</option>
</select>
@error('gender')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="marital_status">
وضعیت تأهل
</label>
<select
id="marital_status"
name="marital_status"
class="form-control"
>
<option value="">
انتخاب وضعیت تأهل
</option>
<option
value="0"
@selected(old('marital_status', $user->marital_status) == 0)
>
مجرد
</option>
<option
value="1"
@selected(old('marital_status', $user->marital_status) == 1)
>
متأهل
</option>
<option
value="2"
@selected(old('marital_status', $user->marital_status) == 2)
>
متارکه
</option>
</select>
@error('marital_status')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="spouse_name">
نام و نام خانوادگی همسر
</label>
<input
type="text"
id="spouse_name"
name="spouse_name"
value="{{ old('spouse_name', $user->spouse_name) }}"
class="form-control"
>
@error('spouse_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
</div>
</div>
{{-- Location --}}
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
محل سکونت
</h3>
</div>
<div class="theme-account-box-content">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="province_id">
استان
</label>
<select
id="province_id"
name="province_id"
class="form-control"
>
<option value="">انتخاب استان</option>
@foreach($provinces as $province)
<option
value="{{ $province->id }}"
@selected(old('province_id', $user->province_id) == $province->id)
>
{{ $province->name }}
</option>
@endforeach
</select>
@error('province_id')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="city_id">
شهر
</label>
<select
id="city_id"
name="city_id"
class="form-control"
disabled
>
<option value="">ابتدا استان را انتخاب کنید</option>
</select>
@error('city_id')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
</div>
</div>
{{-- Profile Image --}}
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
تصویر پروفایل
</h3>
</div>
<div class="theme-account-box-content">
@if($user->profile_image)
<div class="mb-3">
<img
src="{{ asset('uploads/users/' . $user->profile_image) }}"
alt="تصویر پروفایل"
style="width:100px;height:100px;object-fit:cover;border-radius:50%;"
>
</div>
@endif
<div class="form-group">
<label for="profile_image">
انتخاب تصویر جدید
</label>
<input
type="file"
id="profile_image"
name="profile_image"
class="form-control"
accept=".jpg,.jpeg,.png,.webp"
>
@error('profile_image')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
{{-- Password --}}
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
تغییر رمز عبور
</h3>
<p>
اگر قصد تغییر رمز عبور ندارید، این قسمت را خالی بگذارید.
</p>
</div>
<div class="theme-account-box-content">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="current_password">
رمز عبور فعلی
</label>
<input
type="password"
id="current_password"
name="current_password"
class="form-control"
>
@error('current_password')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="new_password">
رمز عبور جدید
</label>
<input
type="password"
id="new_password"
name="new_password"
class="form-control"
>
@error('new_password')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="new_password_confirmation">
تکرار رمز عبور جدید
</label>
<input
type="password"
id="new_password_confirmation"
name="new_password_confirmation"
class="form-control"
>
</div>
</div>
</div>
</div>
</div>
{{-- Submit --}}
<div class="text-left">
<button
type="submit"
class="btn btn-primary btn-lg"
>
ذخیره تغییرات
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
$(document).ready(function () {
$('#province_id').on('change', function () {
let provinceId = $(this).val();
let citySelect = $('#city_id');
citySelect.empty();
if (!provinceId) {
citySelect
.prop('disabled', true)
.append('<option value="">ابتدا استان را انتخاب کنید</option>');
return;
}
citySelect
.prop('disabled', true)
.append('<option value="">در حال دریافت شهرها...</option>');
$.ajax({
url: "{{ route('users.cities.by.province', ':province') }}"
.replace(':province', provinceId),
type: 'GET',
success: function (cities) {
citySelect.empty();
citySelect.append(
'<option value="">انتخاب شهر</option>'
);
$.each(cities, function (index, city) {
citySelect.append(
$('<option>', {
value: city.id,
text: city.name
})
);
});
citySelect.prop('disabled', false);
},
error: function () {
citySelect.empty();
citySelect.append(
'<option value="">خطا در دریافت شهرها</option>'
);
}
});
});
});
</script>
@endpush
+1
View File
@@ -0,0 +1 @@
-44
View File
@@ -1,44 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<!-- index.html 07:26:20 -->
<head>
<title>قالب رزرواسیون</title>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="{{asset('assets/css/font-awesome.css')}}"/>
<link rel="stylesheet" href="{{asset('assets/css/lineicons.css')}}"/>
<link rel="stylesheet" href="{{asset('assets/css/weather-icons.css')}}"/>
<link rel="stylesheet" href="{{asset('assets/css/bootstrap.css')}}"/>
<link rel="stylesheet" href="{{asset('assets/css/styles.css')}}"/>
</head>
<body>
@include('layouts.header')
@include('layouts.hero')
@yield('content')
@include('layouts.footer')
<script src="{{asset('assets/js/moment.js')}}"></script>
<script src="{{asset('assets/js/bootstrap.js')}}"></script>
<script src="{{asset('assets/js/owl-carousel.js')}}"></script>
<script src="{{asset('assets/js/blur-area.js')}}"></script>
<script src="{{asset('assets/js/icheck.js')}}"></script>
<script src="{{asset('assets/js/gmap.js')}}"></script>
<script src="{{asset('assets/js/magnific-popup.js')}}"></script>
<script src="{{asset('assets/js/ion-range-slider.js')}}"></script>
<script src="{{asset('assets/js/sticky-kit.js')}}"></script>
<script src="{{asset('assets/js/smooth-scroll.js')}}"></script>
<script src="{{asset('assets/js/fotorama.js')}}"></script>
<script src="{{asset('assets/js/bs-datepicker.js')}}"></script>
<script src="{{asset('assets/js/typeahead.js')}}"></script>
<script src="{{asset('assets/js/quantity-selector.js')}}"></script>
<script src="{{asset('assets/js/countdown.js')}}"></script>
<script src="{{asset('assets/js/window-scroll-action.js')}}"></script>
<script src="{{asset('assets/js/fitvid.js')}}"></script>
<script src="{{asset('assets/js/youtube-bg.js')}}"></script>
<script src="{{asset('assets/js/custom.js')}}"></script>
<script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYeBBmgAkyAN_QKjAVOiP_kWZ_eQdadeI&amp;callback=initMap&amp;libraries=places"></script>
</body>
<!-- index.html 07:28:39 -->
</html>
+2 -2
View File
@@ -1055,13 +1055,13 @@
</li>
<li>
<a href="#">
<a href="{{route('users.favorite.index')}}">
علاقه مندی ها
</a>
</li>
<li>
<a href="#">
<a href="{{route('users.comments.index')}}">
نظرات قبلی
</a>
</li>
@@ -1,3 +0,0 @@
<div>
<!-- Well begun is half done. - Aristotle -->
</div>
@@ -1,231 +0,0 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section _pt-100">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="theme-login theme-login-white">
<div class="theme-login-header">
<h1 class="theme-login-title">
ویرایش پروفایل
</h1>
<p class="theme-login-subtitle">
اطلاعات حساب کاربری خود را ویرایش کنید
</p>
</div>
<div class="theme-login-box">
<div class="theme-login-box-inner">
<form
action="{{ route('users.profile.update') }}"
method="POST"
enctype="multipart/form-data"
class="theme-login-form"
>
@csrf
@method('PUT')
<div class="mb-4">
<label>
نام
</label>
<input
type="text"
name="first_name"
value="{{ old('first_name', $user->first_name) }}"
class="form-control"
>
@error('first_name')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="mb-4">
<label>
نام خانوادگی
</label>
<input
type="text"
name="last_name"
value="{{ old('last_name', $user->last_name) }}"
class="form-control"
>
</div>
<div class="mb-4">
<label>
شماره موبایل
</label>
<input
type="text"
name="mobile"
value="{{ old('mobile', $user->mobile) }}"
class="form-control"
>
</div>
<div class="mb-4">
<label>
ایمیل
</label>
<input
type="email"
name="email"
value="{{ old('email', $user->email) }}"
class="form-control"
>
</div>
<div class="mb-4">
<label
for="profile_image"
class="block text-sm/6 font-medium text-gray-500 dark:text-gray-300"
>
تصویر پروفایل
</label>
<div class="mt-3">
<input
type="file"
id="profile_image"
name="profile_image"
accept=".jpg,.jpeg,.png,.webp"
class="block w-full p-3 text-base outline-none text-gray-800 dark:text-gray-100 dark:bg-gray-900 bg-slate-100 border border-transparent rounded-md"
>
</div>
@error('profile_image')
<span class="text-red-500 text-sm">
{{ $message }}
</span>
@enderror
</div>
<hr>
<h4>
تغییر رمز عبور
</h4>
<div class="mb-4">
<label>
رمز عبور فعلی
</label>
<input
type="password"
name="current_password"
class="form-control"
>
</div>
<div class="mb-4">
<label>
رمز عبور جدید
</label>
<input
type="password"
name="new_password"
class="form-control"
>
</div>
<div class="mb-4">
<label>
تکرار رمز جدید
</label>
<input
type="password"
name="new_password_confirmation"
class="form-control"
>
</div>
<button
type="submit"
class="submit-btn"
>
ذخیره تغییرات
</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
+9 -1
View File
@@ -1,5 +1,7 @@
<?php
use App\Http\Controllers\CityController;
use App\Http\Controllers\CommentController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\FavoriteController;
use App\Http\Controllers\HomeController;
@@ -16,9 +18,15 @@ Route::prefix('users')->name('users.')->middleware('auth:web')->group(function (
Route::get('/profile/edit',[ProfileController::class,'edite'])->name('profile.edit');
Route::put('/profile/update',[ProfileController::class,'update'])->name('profile.update');
Route::get('/favorite',[FavoriteController::class,'create'])->name('favorite.create');
Route::get('/favorite',[FavoriteController::class,'index'])->name('favorite.index');
Route::post('favorite',[FavoriteController::class,'store'])->name('favorite.store');
Route::delete('/favorite/{favorite}',[FavoriteController::class,'destroy'])->name('favorite.destroy');
Route::get('/comments',[CommentController::class,'index'])->name('comments.index');
Route::get('/cities/{province}', [CityController::class, 'getCities'])
->name('cities.by.province');
});