mirror of
https://github.com/sp-tarkov/forge.git
synced 2025-02-13 04:30:41 -05:00
User API Updates
Adds user profile links to the user API resource. Fixes structure of relationship data and link sections. Adds parameter to include related user data when requesting mod data.
This commit is contained in:
parent
c2f1eed35c
commit
0ed25fec03
22
app/Http/Controllers/Api/V0/ApiController.php
Normal file
22
app/Http/Controllers/Api/V0/ApiController.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V0;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ApiController extends Controller
|
||||
{
|
||||
public static function shouldInclude(string $relationship): bool
|
||||
{
|
||||
$param = request()->get('include');
|
||||
|
||||
if (! $param) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$includeValues = explode(',', Str::lower($param));
|
||||
|
||||
return in_array(Str::lower($relationship), $includeValues);
|
||||
}
|
||||
}
|
@ -2,13 +2,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Api\V0;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Api\V0\StoreModRequest;
|
||||
use App\Http\Requests\Api\V0\UpdateModRequest;
|
||||
use App\Http\Resources\Api\V0\ModResource;
|
||||
use App\Models\Mod;
|
||||
|
||||
class ModController extends Controller
|
||||
class ModController extends ApiController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
|
@ -2,13 +2,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Api\V0;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Api\V0\StoreUserRequest;
|
||||
use App\Http\Requests\Api\V0\UpdateUserRequest;
|
||||
use App\Http\Resources\Api\V0\UserResource;
|
||||
use App\Models\User;
|
||||
|
||||
class UsersController extends Controller
|
||||
class UsersController extends ApiController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Resources\Api\V0;
|
||||
|
||||
use App\Http\Controllers\Api\V0\ApiController;
|
||||
use App\Models\Mod;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
@ -35,23 +36,29 @@ class ModResource extends JsonResource
|
||||
'published_at' => $this->published_at,
|
||||
],
|
||||
'relationships' => [
|
||||
'users' => [
|
||||
'data' => $this->users->map(fn ($user) => [
|
||||
'users' => $this->users->map(fn ($user) => [
|
||||
'data' => [
|
||||
'type' => 'user',
|
||||
'id' => $user->id,
|
||||
])->toArray(),
|
||||
|
||||
// TODO: Provide 'links.self' to user profile
|
||||
//'links' => ['self' => '#'],
|
||||
],
|
||||
],
|
||||
'links' => [
|
||||
'self' => $user->profileUrl(),
|
||||
],
|
||||
])->toArray(),
|
||||
'license' => [
|
||||
'data' => [
|
||||
'type' => 'license',
|
||||
'id' => $this->license_id,
|
||||
[
|
||||
'data' => [
|
||||
'type' => 'license',
|
||||
'id' => $this->license_id,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'included' => $this->users->map(fn ($user) => new UserResource($user)),
|
||||
|
||||
'includes' => $this->when(
|
||||
ApiController::shouldInclude('users'),
|
||||
fn () => $this->users->map(fn ($user) => new UserResource($user))
|
||||
),
|
||||
|
||||
// TODO: Provide 'included' data for attached 'license':
|
||||
//new LicenseResource($this->license)
|
||||
|
@ -30,11 +30,13 @@ class UserResource extends JsonResource
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// TODO: Provide 'included' data for attached 'user_role'
|
||||
//'included' => [new UserRoleResource($this->role)],
|
||||
|
||||
// TODO: Provide 'links.self' to user profile:
|
||||
//'links' => ['self' => '#'],
|
||||
'links' => [
|
||||
'self' => $this->profileUrl(),
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user