feat: tambah role 'other' untuk guest user

- PermissionController: tambah 'other' ke daftar role
- UserController validasi: in:admin,bk,wali_kelas,staff,other
- User model: helper isOther()
- Users view: filter dropdown + modal tambah user + label
- Role 'other' bisa diatur hak aksesnya di menu Hak Akses Role
This commit is contained in:
Bro
2026-07-24 19:05:50 +07:00
parent 5c0c3bdd48
commit 243a609baf
4 changed files with 7 additions and 3 deletions
@@ -19,7 +19,7 @@ class PermissionController extends Controller
->get()
->groupBy('group');
$roles = ['admin', 'bk', 'wali_kelas', 'staff'];
$roles = ['admin', 'bk', 'wali_kelas', 'staff', 'other'];
$rolePermissions = [];
foreach ($roles as $role) {
@@ -40,7 +40,7 @@ class UserController extends Controller
'username' => ['required', 'string', 'max:255', 'unique:users,username'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
'password' => ['required', 'string', 'min:6'],
'role' => ['required', 'in:admin,bk,wali_kelas,staff'],
'role' => ['required', 'in:admin,bk,wali_kelas,staff,other'],
'is_active' => ['boolean'],
]);
@@ -60,7 +60,7 @@ class UserController extends Controller
'username' => ['required', 'string', 'max:255', 'unique:users,username,' . $user->id],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $user->id],
'password' => ['nullable', 'string', 'min:6'],
'role' => ['required', 'in:admin,bk,wali_kelas,staff'],
'role' => ['required', 'in:admin,bk,wali_kelas,staff,other'],
'is_active' => ['boolean'],
]);
+2
View File
@@ -29,6 +29,8 @@ class User extends Authenticatable
public function isBK(): bool { return $this->role === 'bk'; }
public function isWaliKelas(): bool { return $this->role === 'wali_kelas'; }
public function isStaff(): bool { return $this->role === 'staff'; }
public function isOther(): bool { return $this->role === 'other'; }
public function isStaff(): bool { return $this->role === 'staff'; }
public function canPermission(string $permission): bool
{
+2
View File
@@ -34,6 +34,7 @@
<option value="bk" @selected(request('role') == 'bk')>BK</option>
<option value="wali_kelas" @selected(request('role') == 'wali_kelas')>Wali Kelas</option>
<option value="staff" @selected(request('role') == 'staff')>Staff</option>
<option value="other" @selected(request('role') == 'other')>Other</option>
</select>
<div class="flex space-x-2">
<button type="submit" class="flex-1 px-4 py-2.5 text-sm font-medium text-white bg-blue-600 rounded-xl hover:bg-blue-700 transition">
@@ -209,6 +210,7 @@
<option value="admin">Admin — Full akses</option>
<option value="wali_kelas">Wali Kelas — Lihat kelas sendiri</option>
<option value="staff">Staff — Terbatas</option>
<option value="other">Other — Guest / Terbatas</option>
</select>
</div>
</div>