diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..a3e5c96 --- /dev/null +++ b/app/Http/Controllers/AuthController.php @@ -0,0 +1,65 @@ +all(), [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users,email', + 'password' => 'required|string|min:6', + ]); + + if ($validator->fails()) { + return response()->json([ + 'message' => 'Ошибка валидации', + 'errors' => $validator->errors() + ], 422); + } + + $user = \App\Models\User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => bcrypt($request->password), + 'phone' => $request->phone ?? null, + 'role' => 'client', // по умолчанию клиент + ]); + + // Создаём токен для Sanctum + $token = $user->createToken('main-token')->plainTextToken; + + return response()->json([ + 'message' => 'Пользователь создан', + 'user' => $user, + 'token' => $token + ], 201); + } + + // Вход + public function login(Request $request) + { + $credentials = $request->only('email', 'password'); + + if (!Auth::attempt($credentials)) { + return response()->json([ + 'message' => 'Неверный email или пароль' + ], 401); + } + + $user = Auth::user(); + $token = $user->createToken('main-token')->plainTextToken; + + return response()->json([ + 'message' => 'Успешный вход', + 'user' => $user, + 'token' => $token + ]); + } +} \ No newline at end of file diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index ac44fbe..bd3ae51 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { //таблица user - Schema::create('user', function (Blueprint $table) { + Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); diff --git a/docker-compose.yml b/docker-compose.yml index 1157aae..c3d9cb8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,7 @@ services: #################################################################################################### db: image: mysql:8.1 + command: --default-authentication-plugin=mysql_native_password ports: - 3306:3306 volumes: diff --git a/public/admin-schedule.html b/public/admin-schedule.html index 9d055f8..9271088 100644 --- a/public/admin-schedule.html +++ b/public/admin-schedule.html @@ -171,260 +171,21 @@ diff --git a/public/admin-services.html b/public/admin-services.html index fea205e..f0352aa 100644 --- a/public/admin-services.html +++ b/public/admin-services.html @@ -180,176 +180,45 @@ diff --git a/public/index.html b/public/index.html index de09cd7..50406b5 100644 --- a/public/index.html +++ b/public/index.html @@ -93,7 +93,6 @@ -
@@ -104,7 +103,6 @@
-

Профессиональная уборка

@@ -116,7 +114,6 @@
-

Наши услуги

@@ -141,7 +138,6 @@
- + + + \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index b4fe587..0c4e253 100644 --- a/routes/api.php +++ b/routes/api.php @@ -7,6 +7,7 @@ use App\Http\Controllers\AvailabilitiesController; use App\Http\Controllers\CategoriesController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; +use App\Http\Controllers\AuthController; Route::get('/user', function (Request $request) { return $request->user(); @@ -15,6 +16,8 @@ Route::get('/user', function (Request $request) { // РЕГИСТРАЦИЯ ТОЛЬКО КЛИЕНТОВ (публичный) Route::post('/register', [UserController::class, 'register']); +Route::post('/login', [AuthController::class, 'login']); + // Существующие роуты categories Route::get('/categories', [CategoriesController::class, 'index'])->middleware('auth:sanctum'); Route::get('/categories/{id}', [CategoriesController::class, 'show']); @@ -24,7 +27,7 @@ Route::post('/categories', [CategoriesController::class, 'create']); Route::get('/availability', [AvailabilitiesController::class, 'publicAvailability']); // КЛИЕНТСКИЕ РОУТЫ БРОНИРОВАНИЙ (auth:sanctum) -Route::middleware('auth:sanctum')->group(function () { +Route::middleware('auth:sanctum', 'role:admin')->group(function () { Route::post('/bookings', [BookingsController::class, 'store']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'cancel']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'adminCancel']);