From 4ce31cd7aee6509dd10bce08e2528189f495b5b4 Mon Sep 17 00:00:00 2001 From: Husnu Setiawan Date: Tue, 11 Feb 2025 16:58:19 +0700 Subject: [PATCH] fix bug api role --- .../Controllers/Auth/Role/StoreController.php | 4 +- .../Auth/Role/UpdateController.php | 6 +-- app/Http/Requests/Auth/Role/StoreRequest.php | 7 ++-- app/Http/Requests/Auth/Role/UpdateRequest.php | 5 +-- app/Http/Requests/Auth/User/StoreRequest.php | 4 +- app/Http/Requests/Auth/User/UpdateRequest.php | 4 +- app/Models/Role.php | 8 ++++ app/Repositories/Auth/RoleRepository.php | 8 ++-- app/Repositories/Auth/UserRepository.php | 8 ++-- tests/Feature/Auth/Role/StoreTest.php | 33 +++++++--------- tests/Feature/Auth/Role/UpdateTest.php | 38 ++++++++----------- tests/Feature/Auth/User/StoreTest.php | 2 +- tests/Feature/Auth/User/UpdateTest.php | 2 +- 13 files changed, 62 insertions(+), 67 deletions(-) diff --git a/app/Http/Controllers/Auth/Role/StoreController.php b/app/Http/Controllers/Auth/Role/StoreController.php index 2d02299..0d0e355 100644 --- a/app/Http/Controllers/Auth/Role/StoreController.php +++ b/app/Http/Controllers/Auth/Role/StoreController.php @@ -6,14 +6,14 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Http\Requests\Auth\Role\StoreRequest; use App\Http\Resources\Auth\Role\ListResource as RowResource; -use App\Repositories\Auth\UserRepository; +use App\Repositories\Auth\RoleRepository; class StoreController extends Controller { /** * Handle the incoming request. */ - public function __invoke(StoreRequest $request, UserRepository $repository) + public function __invoke(StoreRequest $request, RoleRepository $repository) { $params = $request->validated(); $data = $repository->create($params); diff --git a/app/Http/Controllers/Auth/Role/UpdateController.php b/app/Http/Controllers/Auth/Role/UpdateController.php index b18351a..2017769 100644 --- a/app/Http/Controllers/Auth/Role/UpdateController.php +++ b/app/Http/Controllers/Auth/Role/UpdateController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Http\Requests\Auth\Role\UpdateRequest; use App\Http\Resources\Auth\Role\ListResource as RowResource; -use App\Repositories\Auth\UserRepository; +use App\Repositories\Auth\RoleRepository; use App\Models\Role; class UpdateController extends Controller @@ -14,10 +14,10 @@ class UpdateController extends Controller /** * Handle the incoming request. */ - public function __invoke(UpdateRequest $request, Role $user, UserRepository $repository) + public function __invoke(UpdateRequest $request, Role $role, RoleRepository $repository) { $params = $request->validated(); - $data = $repository->update($user, $params); + $data = $repository->update($role, $params); return RowResource::make($data); } } diff --git a/app/Http/Requests/Auth/Role/StoreRequest.php b/app/Http/Requests/Auth/Role/StoreRequest.php index a775745..68d368f 100644 --- a/app/Http/Requests/Auth/Role/StoreRequest.php +++ b/app/Http/Requests/Auth/Role/StoreRequest.php @@ -11,7 +11,7 @@ class StoreRequest extends FormRequest */ public function authorize(): bool { - return auth()->user()->checkPermission("auth.user:create"); + return auth()->user()->checkPermission("auth.role:create"); } /** @@ -23,9 +23,8 @@ class StoreRequest extends FormRequest { return [ 'name' => 'required|string', - 'email' => 'required|string', - 'role_ids' => 'nullable|array', - 'role_ids.*' => 'nullable|integer' + 'permissions' => 'nullable|array', + 'permissions.*' => 'nullable|integer' ]; } } diff --git a/app/Http/Requests/Auth/Role/UpdateRequest.php b/app/Http/Requests/Auth/Role/UpdateRequest.php index 2827ffb..790fae9 100644 --- a/app/Http/Requests/Auth/Role/UpdateRequest.php +++ b/app/Http/Requests/Auth/Role/UpdateRequest.php @@ -23,9 +23,8 @@ class UpdateRequest extends FormRequest { return [ 'name' => 'required|string', - 'email' => 'required|string', - 'role_ids' => 'nullable|array', - 'role_ids.*' => 'nullable|integer' + 'permissions' => 'nullable|array', + 'permissions.*' => 'nullable|integer' ]; } } diff --git a/app/Http/Requests/Auth/User/StoreRequest.php b/app/Http/Requests/Auth/User/StoreRequest.php index 0845b12..09841f9 100644 --- a/app/Http/Requests/Auth/User/StoreRequest.php +++ b/app/Http/Requests/Auth/User/StoreRequest.php @@ -24,8 +24,8 @@ class StoreRequest extends FormRequest return [ 'name' => 'required|string', 'email' => 'required|string', - 'role_ids' => 'nullable|array', - 'role_ids.*' => 'nullable|integer' + 'roles' => 'nullable|array', + 'roles.*' => 'nullable|integer' ]; } } diff --git a/app/Http/Requests/Auth/User/UpdateRequest.php b/app/Http/Requests/Auth/User/UpdateRequest.php index 81bc83d..8fef327 100644 --- a/app/Http/Requests/Auth/User/UpdateRequest.php +++ b/app/Http/Requests/Auth/User/UpdateRequest.php @@ -24,8 +24,8 @@ class UpdateRequest extends FormRequest return [ 'name' => 'required|string', 'email' => 'required|string', - 'role_ids' => 'nullable|array', - 'role_ids.*' => 'nullable|integer' + 'roles' => 'nullable|array', + 'roles.*' => 'nullable|integer' ]; } } diff --git a/app/Models/Role.php b/app/Models/Role.php index 4e6894a..46798b5 100644 --- a/app/Models/Role.php +++ b/app/Models/Role.php @@ -8,6 +8,14 @@ use Illuminate\Database\Eloquent\Model; class Role extends Model { use HasFactory; + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'name', + ]; public function permissions(){ return $this->belongsToMany(Permission::class,"role_permission"); diff --git a/app/Repositories/Auth/RoleRepository.php b/app/Repositories/Auth/RoleRepository.php index ecded6d..a55825e 100644 --- a/app/Repositories/Auth/RoleRepository.php +++ b/app/Repositories/Auth/RoleRepository.php @@ -29,8 +29,8 @@ class RoleRepository $params["password"] = "-"; $model = Role::create($params); - if (@$params["role_ids"]){ - $model->roles()->sync($params["role_ids"]); + if (@$params["permissions"]){ + $model->permissions()->sync($params["permissions"]); } return $model; } @@ -38,8 +38,8 @@ class RoleRepository public function update($model, $params){ $model->update($params); - if (@$params["role_ids"]){ - $model->roles()->sync($params["role_ids"]); + if (@$params["permissions"]){ + $model->permissions()->sync($params["permissions"]); } return $model; } diff --git a/app/Repositories/Auth/UserRepository.php b/app/Repositories/Auth/UserRepository.php index f79dd76..06d9ca8 100644 --- a/app/Repositories/Auth/UserRepository.php +++ b/app/Repositories/Auth/UserRepository.php @@ -29,8 +29,8 @@ class UserRepository $params["password"] = "-"; $user = User::create($params); - if (@$params["role_ids"]){ - $user->roles()->sync($params["role_ids"]); + if (@$params["roles"]){ + $user->roles()->sync($params["roles"]); } return $user; } @@ -38,8 +38,8 @@ class UserRepository public function update($user, $params){ $user->update($params); - if (@$params["role_ids"]){ - $user->roles()->sync($params["role_ids"]); + if (@$params["roles"]){ + $user->roles()->sync($params["roles"]); } return $user; } diff --git a/tests/Feature/Auth/Role/StoreTest.php b/tests/Feature/Auth/Role/StoreTest.php index c24bb7b..ae48833 100644 --- a/tests/Feature/Auth/Role/StoreTest.php +++ b/tests/Feature/Auth/Role/StoreTest.php @@ -7,9 +7,9 @@ use Illuminate\Foundation\Testing\WithFaker; use Tests\TestCase; use App\Models\Role; +use App\Models\User; use App\Models\Permission; -use App\Models\User; use Laravel\Sanctum\Sanctum; use Illuminate\Foundation\Testing\DatabaseTransactions; @@ -23,24 +23,23 @@ class StoreTest extends TestCase */ public function test_success(): void { - $permission = Permission::where("code","auth.user:create")->first(); + $permission = Permission::where("code","auth.role:create")->first(); $role = Role::factory()->create(); $role->permissions()->attach($permission->id); + $user = User::factory()->create(); $user->roles()->attach($role->id); Sanctum::actingAs($user); - $response = $this->post('/auth/user/',[ - "name" => "new user", - "email" => "user@gmail.com" + $response = $this->post('/auth/role/',[ + "name" => "new role" ]); $response->assertStatus(201); $response->assertJson([ "data" => [ - "name" => "new user", - "email" => "user@gmail.com" + "name" => "new role" ] ]); } @@ -51,9 +50,10 @@ class StoreTest extends TestCase */ public function test_with_roles_success(): void { - $permission = Permission::where("code","auth.user:create")->first(); + $permission = Permission::where("code","auth.role:create")->first(); $role = Role::factory()->create(); $role->permissions()->attach($permission->id); + $user = User::factory()->create(); $user->roles()->attach($role->id); @@ -62,23 +62,18 @@ class StoreTest extends TestCase Sanctum::actingAs($user); - $response = $this->post('/auth/user/',[ - "name" => "new user", - "email" => "user@gmail.com", - "role_ids" => [$role->id, $role2->id] + $response = $this->post('/auth/role/',[ + "name" => "new role", + "permissions" => [$permission->id] ]); $response->assertStatus(201); $response->assertJson([ "data" => [ - "name" => "new user", - "email" => "user@gmail.com", - "roles" => [ + "name" => "new role", + "permissions" => [ [ - "id" => $role->id - ], - [ - "id" => $role2->id + "id" => $permission->id ], ] ] diff --git a/tests/Feature/Auth/Role/UpdateTest.php b/tests/Feature/Auth/Role/UpdateTest.php index f988c1e..c5c5d09 100644 --- a/tests/Feature/Auth/Role/UpdateTest.php +++ b/tests/Feature/Auth/Role/UpdateTest.php @@ -23,7 +23,7 @@ class UpdateTest extends TestCase */ public function test_success(): void { - $permission = Permission::where("code","auth.user:update")->first(); + $permission = Permission::where("code","auth.role:update")->first(); $role = Role::factory()->create(); $role->permissions()->attach($permission->id); $user = User::factory()->create(); @@ -31,18 +31,16 @@ class UpdateTest extends TestCase Sanctum::actingAs($user); - $data = User::factory()->create(); + $data = Role::factory()->create(); - $response = $this->post('/auth/user/'.$data->id,[ - "name" => "update user", - "email" => "user_update@gmail.com" + $response = $this->post('/auth/role/'.$data->id,[ + "name" => "update role", ]); $response->assertStatus(200); $response->assertJson([ "data" => [ - "name" => "update user", - "email" => "user_update@gmail.com" + "name" => "update role", ] ]); } @@ -53,37 +51,33 @@ class UpdateTest extends TestCase */ public function test_with_roles_success(): void { - $permission = Permission::where("code","auth.user:update")->first(); + $permission = Permission::where("code","auth.role:update")->first(); $role = Role::factory()->create(); $role->permissions()->attach($permission->id); + $user = User::factory()->create(); $user->roles()->attach($role->id); Sanctum::actingAs($user); - $data = User::factory()->create(); + $data = Role::factory()->create(); $role2 = Role::factory()->create(); - $response = $this->post('/auth/user/'.$data->id,[ - "name" => "update user", - "email" => "user_update@gmail.com", - "role_ids" => [ - $role->id, $role2->id + $response = $this->post('/auth/role/'.$data->id,[ + "name" => "update role", + "permissions" => [ + $permission->id ] ]); $response->assertStatus(200); $response->assertJson([ "data" => [ - "name" => "update user", - "email" => "user_update@gmail.com", - "roles" => [ + "name" => "update role", + "permissions" => [ [ - "id" => $role->id - ], - [ - "id" => $role2->id - ], + "id" => $permission->id + ] ] ] ]); diff --git a/tests/Feature/Auth/User/StoreTest.php b/tests/Feature/Auth/User/StoreTest.php index ffc7ef0..587183a 100644 --- a/tests/Feature/Auth/User/StoreTest.php +++ b/tests/Feature/Auth/User/StoreTest.php @@ -65,7 +65,7 @@ class StoreTest extends TestCase $response = $this->post('/auth/user/',[ "name" => "new user", "email" => "user@gmail.com", - "role_ids" => [$role->id, $role2->id] + "roles" => [$role->id, $role2->id] ]); $response->assertStatus(201); diff --git a/tests/Feature/Auth/User/UpdateTest.php b/tests/Feature/Auth/User/UpdateTest.php index fbd6835..d66d903 100644 --- a/tests/Feature/Auth/User/UpdateTest.php +++ b/tests/Feature/Auth/User/UpdateTest.php @@ -67,7 +67,7 @@ class UpdateTest extends TestCase $response = $this->post('/auth/user/'.$data->id,[ "name" => "update user", "email" => "user_update@gmail.com", - "role_ids" => [ + "roles" => [ $role->id, $role2->id ] ]);