From 18aad4749fd11d7d51adc5d15691bcac84022619 Mon Sep 17 00:00:00 2001 From: xayana Date: Sun, 18 Jan 2026 18:03:20 +0000 Subject: [PATCH] table with hotels --- app/Http/Controllers/Admin/AuthController.php | 16 +-- .../Admin/AvailabilityController.php | 11 ++ .../Controllers/Admin/BookingController.php | 11 ++ .../Controllers/Admin/HotelController.php | 33 ++---- .../Controllers/Admin/RoomTypeController.php | 11 ++ .../Controllers/AdminAuthController.php.bk | 39 ------- app/Providers/RouteServiceProvider.php | 17 ++- resources/views/admin/hotels/create.blade.php | 32 ++++++ resources/views/admin/hotels/edit.blade.php | 33 ++++++ resources/views/admin/hotels/index.blade.php | 72 ++++++------ resources/views/admin/layout.blade.php | 107 +++++++++++------- resources/views/admin/login.blade.php | 46 ++++---- resources/views/admin/logout.blade.php | 9 ++ routes/admin.php | 29 ----- routes/api.php | 19 ++-- routes/web.php | 24 +++- 16 files changed, 276 insertions(+), 233 deletions(-) create mode 100644 app/Http/Controllers/Admin/AvailabilityController.php create mode 100644 app/Http/Controllers/Admin/BookingController.php create mode 100644 app/Http/Controllers/Admin/RoomTypeController.php delete mode 100644 app/Http/Controllers/AdminAuthController.php.bk create mode 100644 resources/views/admin/hotels/create.blade.php create mode 100644 resources/views/admin/hotels/edit.blade.php create mode 100644 resources/views/admin/logout.blade.php delete mode 100644 routes/admin.php diff --git a/app/Http/Controllers/Admin/AuthController.php b/app/Http/Controllers/Admin/AuthController.php index 5247d58..7c9bb68 100644 --- a/app/Http/Controllers/Admin/AuthController.php +++ b/app/Http/Controllers/Admin/AuthController.php @@ -8,17 +8,11 @@ use Illuminate\Support\Facades\Auth; class AuthController extends Controller { - /** - * Показать форму входа. - */ public function showLoginForm() { return view('admin.login'); } - /** - * Обработать вход пользователя. - */ public function login(Request $request) { $credentials = $request->validate([ @@ -37,14 +31,14 @@ class AuthController extends Controller } /** - * Выход пользователя. + * Выход из системы. */ public function logout(Request $request) { - Auth::logout(); - $request->session()->invalidate(); - $request->session()->regenerateToken(); + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); - return redirect()->route('admin.login.form'); + return view('admin.logout'); } } diff --git a/app/Http/Controllers/Admin/AvailabilityController.php b/app/Http/Controllers/Admin/AvailabilityController.php new file mode 100644 index 0000000..deb3b4d --- /dev/null +++ b/app/Http/Controllers/Admin/AvailabilityController.php @@ -0,0 +1,11 @@ +view('admin/hotels/index', compact('hotels')); + return view('admin.hotels.index', compact('hotels')); } - /** - * Показать форму создания отеля. - */ public function create() { return view('admin.hotels.create'); } - /** - * Сохранить новый отель. - */ public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'address' => 'nullable|string', - 'phone' => 'nullable|string', + 'phone' => 'nullable|string|max:20', ]); Hotel::create($validated); - return redirect()->route('admin.hotels.index')->with('success', 'Отель добавлен!'); + return redirect()->route('admin.hotels.index')->with('success', 'Отель успешно добавлен!'); } - /** - * Показать форму редактирования отеля. - */ public function edit(Hotel $hotel) { return view('admin.hotels.edit', compact('hotel')); } - /** - * Обновить отель. - */ public function update(Request $request, Hotel $hotel) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'address' => 'nullable|string', - 'phone' => 'nullable|string', + 'phone' => 'nullable|string|max:20', ]); $hotel->update($validated); - return redirect()->route('admin.hotels.index')->with('success', 'Отель обновлён!'); + return redirect()->route('admin.hotels.index')->with('success', 'Отель успешно обновлён!'); } - /** - * Удалить отель. - */ public function destroy(Hotel $hotel) { $hotel->delete(); - - return redirect()->route('admin.hotels.index')->with('success', 'Отель удалён!'); + return redirect()->route('admin.hotels.index')->with('success', 'Отель удалён.'); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/RoomTypeController.php b/app/Http/Controllers/Admin/RoomTypeController.php new file mode 100644 index 0000000..3317e6f --- /dev/null +++ b/app/Http/Controllers/Admin/RoomTypeController.php @@ -0,0 +1,11 @@ +validate([ - 'email' => 'required|email', - 'password' => 'required', - ]); - - $admin = Admin::where('email', $request->email)->first(); - - if (!$admin || !Hash::check($request->password, $admin->password)) { - throw ValidationException::withMessages([ - 'email' => ['The provided credentials are incorrect.'], - ]); - } - - return response()->json([ - 'token' => $admin->createToken('admin-token')->plainTextToken, - 'admin' => $admin, - ]); - } - - public function logout(Request $request) - { - $request->user()->currentAccessToken()->delete(); - - return response()->json(['message' => 'Logged out successfully']); - } -} \ No newline at end of file diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index a7e57da..ded4489 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -26,17 +26,16 @@ class RouteServiceProvider extends ServiceProvider { $this->configureRateLimiting(); - // Установите путь к маршрутам - $this->routesPath = base_path('routes'); + //$this->routesPath = base_path('routes'); - $this->routes(function () { - Route::middleware('web') - ->group($this->routesPath . '/web.php'); + //$this->routes(function () { + //Route::middleware('web') + //->group($this->routesPath . '/web.php'); - Route::middleware(['web', 'auth']) - ->prefix('admin') - ->group($this->routesPath . '/admin.php'); - }); + //Route::middleware(['web', 'auth']) + //->prefix('admin') + //->group($this->routesPath . '/admin.php'); + //}); } /** diff --git a/resources/views/admin/hotels/create.blade.php b/resources/views/admin/hotels/create.blade.php new file mode 100644 index 0000000..0d6e015 --- /dev/null +++ b/resources/views/admin/hotels/create.blade.php @@ -0,0 +1,32 @@ +@extends('admin.layout') + +@section('content') +
+

Добавить отель

+ +
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ + + Отмена +
+
+@endsection \ No newline at end of file diff --git a/resources/views/admin/hotels/edit.blade.php b/resources/views/admin/hotels/edit.blade.php new file mode 100644 index 0000000..8b2232d --- /dev/null +++ b/resources/views/admin/hotels/edit.blade.php @@ -0,0 +1,33 @@ +@extends('admin.layout') + +@section('content') +
+

Редактировать отель

+ +
+ @csrf + @method('PUT') + +
+ + +
+ +
+ + +
+ +
+ + +
+ + + Отмена +
+
+@endsection \ No newline at end of file diff --git a/resources/views/admin/hotels/index.blade.php b/resources/views/admin/hotels/index.blade.php index 4abb142..b0f4899 100644 --- a/resources/views/admin/hotels/index.blade.php +++ b/resources/views/admin/hotels/index.blade.php @@ -1,45 +1,43 @@ @extends('admin.layout') @section('content') -
+

Отели

- @if(session('success')) -
- {{ session('success') }} -
+ Добавить отель + + @if($hotels->isEmpty()) +

Нет отелей.

+ @else + + + + + + + + + + + @foreach($hotels as $hotel) + + + + + + + @endforeach + +
НазваниеАдресТелефонДействия
{{ $hotel->name }}{{ $hotel->address ?? '-' }}{{ $hotel->phone ?? '-' }} + Редактировать +
+ @csrf + @method('DELETE') + +
+
@endif - - Добавить отель - - - - - - - - - - - - @foreach($hotels as $hotel) - - - - - - - @endforeach - -
НазваниеАдресТелефонДействия
{{ $hotel->name }}{{ $hotel->address ?? '-' }}{{ $hotel->phone ?? '-' }} - Редактировать -
- @csrf - @method('DELETE') - -
-
@endsection \ No newline at end of file diff --git a/resources/views/admin/layout.blade.php b/resources/views/admin/layout.blade.php index 944bf8b..a08bfc9 100644 --- a/resources/views/admin/layout.blade.php +++ b/resources/views/admin/layout.blade.php @@ -5,93 +5,118 @@ @yield('title', 'Админка') -
-

Админка

- -
+
+
+ +
-
- @yield('content') -
+
+ @if(session('success')) +
{{ session('success') }}
+ @endif + + @yield('content') +
+
\ No newline at end of file diff --git a/resources/views/admin/login.blade.php b/resources/views/admin/login.blade.php index fec46c3..b350b4b 100644 --- a/resources/views/admin/login.blade.php +++ b/resources/views/admin/login.blade.php @@ -1,31 +1,31 @@ - - - - - Вход в админку - - - -

Вход в админку

+@extends('admin.layout') + +@section('content') +
+

Вход в админку

@if ($errors->any()) -
- @foreach ($errors->all() as $error) -

{{ $error }}

- @endforeach +
+ Неверные данные.
@endif
@csrf - - - +
+ + +
+ +
+ + +
+ +
- - \ No newline at end of file +
+@endsection \ No newline at end of file diff --git a/resources/views/admin/logout.blade.php b/resources/views/admin/logout.blade.php new file mode 100644 index 0000000..6b8721f --- /dev/null +++ b/resources/views/admin/logout.blade.php @@ -0,0 +1,9 @@ +@extends('admin.layout') + +@section('content') +
+

Вы вышли из системы

+

До скорой встречи!

+ Войти снова +
+@endsection diff --git a/routes/admin.php b/routes/admin.php deleted file mode 100644 index 8a1f340..0000000 --- a/routes/admin.php +++ /dev/null @@ -1,29 +0,0 @@ -name('admin.login.form'); - -Route::post('/login', [\App\Http\Controllers\Admin\AuthController::class, 'login']) - ->name('admin.login'); - -Route::middleware('auth')->group(function () { - Route::get('/hotels', function () { - return response()->view('admin.hotels.index'); - })->name('admin.hotels.index'); - - Route::post('/logout', [\App\Http\Controllers\Admin\AuthController::class, 'logout']) - ->name('admin.logout'); -}); - -Route::middleware('auth')->group(function () { - Route::get('/hotels', [\App\Http\Controllers\Admin\HotelController::class, 'index'])->name('admin.hotels.index'); - Route::get('/hotels/create', [\App\Http\Controllers\Admin\HotelController::class, 'create'])->name('admin.hotels.create'); - Route::post('/hotels', [\App\Http\Controllers\Admin\HotelController::class, 'store'])->name('admin.hotels.store'); - Route::get('/hotels/{hotel}/edit', [\App\Http\Controllers\Admin\HotelController::class, 'edit'])->name('admin.hotels.edit'); - Route::put('/hotels/{hotel}', [\App\Http\Controllers\Admin\HotelController::class, 'update'])->name('admin.hotels.update'); - Route::delete('/hotels/{hotel}', [\App\Http\Controllers\Admin\HotelController::class, 'destroy'])->name('admin.hotels.destroy'); - - Route::post('/logout', [\App\Http\Controllers\Admin\AuthController::class, 'logout'])->name('admin.logout'); -}); \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index e142ab5..4979a7b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,15 +9,18 @@ use App\Http\Controllers\RoomAvailabilityController; use App\Http\Controllers\BookingController; use App\Http\Controllers\InvoiceController; +Route::middleware('auth:sanctum')->group(function () { + Route::post('/hotels', [HotelController::class, 'store']); + Route::get('/hotels', [HotelController::class, 'index']); + Route::get('/hotels/{id}', [HotelController::class, 'show']); + Route::put('/hotels/{id}', [HotelController::class, 'update']); + Route::delete('/hotels/{id}', [HotelController::class, 'destroy']); +}); Route::middleware('auth:sanctum')->group(function () { Route::post('/bookings/{id}/invoice', [InvoiceController::class, 'generate']); }); -Route::get('/test', function () { - return response()->success(['message' => 'Тест прошёл успешно!']); -}); - Route::post('/admin/login', [AdminAuthController::class, 'login']); Route::post('/admin/logout', [AdminAuthController::class, 'logout'])->middleware('auth:sanctum'); @@ -38,14 +41,6 @@ Route::middleware('auth:sanctum')->group(function () { Route::get('/room_types', [RoomTypesController::class, 'index']); }); -Route::middleware('auth:sanctum')->group(function () { - Route::post('/hotels', [HotelController::class, 'store']); - Route::get('/hotels', [HotelController::class, 'index']); - Route::get('/hotels/{id}', [HotelController::class, 'show']); - Route::put('/hotels/{id}', [HotelController::class, 'update']); - Route::delete('/hotels/{id}', [HotelController::class, 'destroy']); -}); - Route::middleware('auth:sanctum')->group(function () { Route::get('/hotels/{id}/rooms', [RoomTypeController::class, 'index']); Route::post('/hotels/{hotelId}/room-types', [RoomTypeController::class, 'store']); diff --git a/routes/web.php b/routes/web.php index 4c33aa7..57522c0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,21 +1,33 @@ name('admin.login.form'); Route::post('/admin/login', [AuthController::class, 'login'])->name('admin.login'); -// Авторизованный → админка Route::middleware('auth')->prefix('admin')->group(function () { - Route::get('/hotels', function () { - return '

Отели

Выйти'; - })->name('admin.hotels.index'); + Route::get('/hotels', [HotelController::class, 'index'])->name('admin.hotels.index'); + Route::get('/hotels/create', [HotelController::class, 'create'])->name('admin.hotels.create'); + Route::post('/hotels', [HotelController::class, 'store'])->name('admin.hotels.store'); + Route::get('/hotels/{hotel}/edit', [HotelController::class, 'edit'])->name('admin.hotels.edit'); + Route::put('/hotels/{hotel}', [HotelController::class, 'update'])->name('admin.hotels.update'); + Route::delete('/hotels/{hotel}', [HotelController::class, 'destroy'])->name('admin.hotels.destroy'); Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout'); }); +// → форма входа +Route::get('/admin/login', [AuthController::class, 'showLoginForm'])->name('admin.login.form'); +Route::post('/admin/login', [AuthController::class, 'login'])->name('admin.login'); + +// → админка +Route::middleware('auth')->prefix('admin')->group(function () { + Route::get('/hotels', [HotelController::class, 'index'])->name('admin.hotels.index'); + Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout'); +}); + Route::get('/', function () { return view('welcome'); });