маленькие изменения

master
MadHowl 2026-03-23 16:42:48 +10:00
parent c4a30b8e27
commit eef076234b
2 changed files with 928 additions and 1 deletions

752
SANCTUM_SETUP_GUIDE.html Normal file

File diff suppressed because one or more lines are too long

View File

@ -203,7 +203,182 @@ class PostResource extends JsonResource
}
```
### 3.3 Form Requests
### 3.3 API Controllers
**Laravel Spectrum** автоматически анализирует контроллеры для генерации документации.
#### AuthController
```php
// app/Http/Controllers/Api/AuthController.php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
use App\Http\Requests\RegisterRequest;
use App\Http\Resources\UserResource;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
/**
* Register a new user.
*/
public function register(RegisterRequest $request): JsonResponse
{
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('auth-token')->plainTextToken;
return response()->json([
'message' => 'User registered successfully',
'user' => new UserResource($user),
'token' => $token,
], 201);
}
/**
* Login user.
*/
public function login(LoginRequest $request): JsonResponse
{
$user = User::where('email', $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json([
'message' => 'Invalid credentials',
], 401);
}
$token = $user->createToken('auth-token')->plainTextToken;
return response()->json([
'message' => 'Login successful',
'user' => new UserResource($user),
'token' => $token,
]);
}
/**
* Logout user.
*/
public function logout(Request $request): JsonResponse
{
$request->user()->currentAccessToken()->delete();
return response()->json([
'message' => 'Logged out successfully',
]);
}
/**
* Get authenticated user.
*/
public function user(Request $request): JsonResponse
{
return response()->json([
'user' => new UserResource($request->user()),
]);
}
}
```
#### PostController
```php
// app/Http/Controllers/Api/PostController.php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StorePostRequest;
use App\Http\Requests\UpdatePostRequest;
use App\Http\Resources\PostCollection;
use App\Http\Resources\PostResource;
use App\Models\Post;
use Illuminate\Http\JsonResponse;
class PostController extends Controller
{
/**
* Display a listing of posts.
*/
public function index(): PostCollection
{
$posts = Post::with('user')->latest()->paginate(15);
return new PostCollection($posts);
}
/**
* Store a newly created post.
*/
public function store(StorePostRequest $request): JsonResponse
{
$post = Post::create([
'title' => $request->title,
'content' => $request->content,
'user_id' => $request->user()->id,
]);
$post->load('user');
return response()->json([
'message' => 'Post created successfully',
'post' => new PostResource($post),
], 201);
}
/**
* Display the specified post.
*/
public function show(Post $post): JsonResponse
{
$post->load('user');
return response()->json([
'post' => new PostResource($post),
]);
}
/**
* Update the specified post.
*/
public function update(UpdatePostRequest $request, Post $post): JsonResponse
{
$this->authorize('update', $post);
$post->update($request->validated());
return response()->json([
'message' => 'Post updated successfully',
'post' => new PostResource($post),
]);
}
/**
* Remove the specified post.
*/
public function destroy(Post $post): JsonResponse
{
$this->authorize('delete', $post);
$post->delete();
return response()->json([
'message' => 'Post deleted successfully',
]);
}
}
```
### 3.4 Form Requests
**Laravel Spectrum** автоматически определяет правила валидации из Form Requests.