feat: restrict Developer role visibility and management in user modules
This commit is contained in:
parent
85e04dbf6a
commit
b059d5a260
@ -19,8 +19,7 @@ class UserController extends Controller
|
|||||||
public function index(): Response
|
public function index(): Response
|
||||||
{
|
{
|
||||||
return Inertia::render('admin/master/user/index', [
|
return Inertia::render('admin/master/user/index', [
|
||||||
'users' => User::with(['profile', 'roles'])->latest()->paginate(10),
|
'users' => User::with(['profile', 'roles'])->whereDoesntHave('roles', fn ($query) => $query->where('name', 'Developer'))->latest()->paginate(10),
|
||||||
'roles' => Role::all(),
|
|
||||||
'defaultPassword' => config('auth.password_default', 'password'),
|
'defaultPassword' => config('auth.password_default', 'password'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -28,7 +27,7 @@ public function index(): Response
|
|||||||
public function create(): Response
|
public function create(): Response
|
||||||
{
|
{
|
||||||
return Inertia::render('admin/master/user/create', [
|
return Inertia::render('admin/master/user/create', [
|
||||||
'roles' => Role::all(),
|
'roles' => Role::where('name', '!=', 'Developer')->get(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +40,7 @@ public function store(UserRequest $request): RedirectResponse
|
|||||||
$user = User::create([
|
$user = User::create([
|
||||||
'username' => $validated['username'],
|
'username' => $validated['username'],
|
||||||
'email' => $validated['email'],
|
'email' => $validated['email'],
|
||||||
'password' => Hash::make(config('auth.password_default')),
|
'password' => Hash::make(config('auth.password_default', 'password')),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user->profile()->create([
|
$user->profile()->create([
|
||||||
@ -79,7 +78,7 @@ public function edit(User $user): Response
|
|||||||
|
|
||||||
return Inertia::render('admin/master/user/edit', [
|
return Inertia::render('admin/master/user/edit', [
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
'roles' => Role::all(),
|
'roles' => Role::where('name', '!=', 'Developer')->get(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,17 +50,38 @@
|
|||||||
->assertInertia(fn ($page) => $page
|
->assertInertia(fn ($page) => $page
|
||||||
->component('admin/master/user/index')
|
->component('admin/master/user/index')
|
||||||
->has('users', fn ($page) => $page->has('data')->etc())
|
->has('users', fn ($page) => $page->has('data')->etc())
|
||||||
->has('roles')
|
|
||||||
->has('defaultPassword')
|
->has('defaultPassword')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('excludes users with Developer role from index', function () {
|
||||||
|
$developerRole = Role::create(['name' => 'Developer']);
|
||||||
|
$developer = User::factory()->create();
|
||||||
|
$developer->assignRole($developerRole);
|
||||||
|
|
||||||
|
$regularUser = User::factory()->create();
|
||||||
|
|
||||||
|
get(route('user.index'))
|
||||||
|
->assertOk()
|
||||||
|
->assertInertia(fn ($page) => $page
|
||||||
|
->has('users.data', fn ($data) => $data
|
||||||
|
->each(fn ($user) => $user->where('id', fn ($id) => $id !== $developer->id)->etc())
|
||||||
|
->etc()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('can access user create page', function () {
|
it('can access user create page', function () {
|
||||||
|
Role::create(['name' => 'Developer']);
|
||||||
|
Role::create(['name' => 'Admin']);
|
||||||
|
|
||||||
get(route('user.create'))
|
get(route('user.create'))
|
||||||
->assertOk()
|
->assertOk()
|
||||||
->assertInertia(fn ($page) => $page
|
->assertInertia(fn ($page) => $page
|
||||||
->component('admin/master/user/create')
|
->component('admin/master/user/create')
|
||||||
->has('roles')
|
->has('roles', fn ($roles) => $roles
|
||||||
|
->each(fn ($role) => $role->where('name', fn ($name) => $name !== 'Developer')->etc())
|
||||||
|
)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -105,6 +126,8 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('can access user edit page', function () {
|
it('can access user edit page', function () {
|
||||||
|
Role::create(['name' => 'Developer']);
|
||||||
|
Role::create(['name' => 'Admin']);
|
||||||
$user = User::factory()->create();
|
$user = User::factory()->create();
|
||||||
|
|
||||||
get(route('user.edit', $user))
|
get(route('user.edit', $user))
|
||||||
@ -112,7 +135,9 @@
|
|||||||
->assertInertia(fn ($page) => $page
|
->assertInertia(fn ($page) => $page
|
||||||
->component('admin/master/user/edit')
|
->component('admin/master/user/edit')
|
||||||
->has('user')
|
->has('user')
|
||||||
->has('roles')
|
->has('roles', fn ($roles) => $roles
|
||||||
|
->each(fn ($role) => $role->where('name', fn ($name) => $name !== 'Developer')->etc())
|
||||||
|
)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user