- Tambahkan relasi posisi dengan menambahkan kolom `position_id` pada tabel roles melalui migrasi. - Perbarui fungsi pada `RolesController` untuk menyertakan posisi dalam proses CRUD. - Gunakan model `Position` untuk mendapatkan daftar posisi baik saat membuat maupun mengedit role. - Sesuaikan nama permission dari `roles.view` ke `roles.read`, `roles.store` ke `roles.create`, dan `roles.edit` ke `roles.update` agar konsisten. - Perbarui validasi di `RoleRequest` untuk mendukung input `position_id`. - Tambahkan properti `position_id` ke atribut `fillable` di model Role untuk mendukung mass assignment. - Buat fungsi relasi `position()` pada model Role untuk mereferensikan ke model Position. - Perbarui tampilan form role (`create.blade.php`): - Tambahkan dropdown untuk memilih posisi dalam form input. - Tampilkan informasi level posisi bersama dengan nama posisi dalam dropdown. - Sinkronisasi validasi dan nilai default sesuai dengan pengaturan posisi. - Perbaikan minor pada query pencarian data roles, menggunakan `whereRaw` untuk pencarian case-insensitive.
103 lines
5.2 KiB
PHP
103 lines
5.2 KiB
PHP
@extends('layouts.main')
|
|
|
|
@section('breadcrumbs')
|
|
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
|
@endsection
|
|
|
|
@section('content')
|
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
|
<form action="{{ isset($role->id) ? route('users.roles.update', $role->id) : route('users.roles.store') }}" method="POST" id="role_form">
|
|
@csrf
|
|
@if(isset($role->id))
|
|
<input type="hidden" name="id" value="{{ $role->id }}">
|
|
@method('PUT')
|
|
@endif
|
|
<div class="card pb-2.5">
|
|
<div class="card-header" id="basic_settings">
|
|
<h3 class="card-title">
|
|
{{ isset($role->id) ? 'Edit' : 'Add' }} Role
|
|
</h3>
|
|
<div class="flex items-center gap-2">
|
|
<a href="{{ route('users.roles.index') }}" class="btn btn-xs btn-info">Back</a>
|
|
</div>
|
|
</div>
|
|
<div class="card-body grid gap-5">
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Name
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $role->name ?? '' }}">
|
|
@error('name')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Position
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select class="select @error('position_id') border-danger @enderror" name="position_id">
|
|
<option value="">Select Position</option>
|
|
@foreach($positions as $position)
|
|
<option value="{{ $position->id }}" {{ (isset($role) && $role->position_id == $position->id) ? 'selected' : '' }}>
|
|
{{ $position->name }} (Level: {{ $position->level }})
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
@error('position_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Administrator/Superuser Access
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<label class="switch">
|
|
<input name="check" id="select_all" type="checkbox" value="1"/>
|
|
<span class="switch-label">
|
|
Select All
|
|
</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
@foreach($permissiongroups as $group)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
{{ ucwords($group->name) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full gap-2.5">
|
|
@foreach($group->getpermissionsByGroupId($group->id) as $permission)
|
|
<label class="switch">
|
|
@if(isset($role))
|
|
<input type="checkbox" value="{{ $permission->id }}" name="permissions[]" {{ $role->hasPermissionTo($permission->name) ? 'checked' : null }} />
|
|
@else
|
|
<input type="checkbox" value="{{ $permission->id }}" name="permissions[]"/>
|
|
@endif
|
|
@php
|
|
$permission_name = explode('.',$permission->name);
|
|
@endphp
|
|
|
|
<span class="switch-label">
|
|
{{ ucwords($permission_name[1]) }}
|
|
</span>
|
|
</label>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="btn btn-primary">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
@endsection
|