- 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.
45 lines
1.1 KiB
PHP
45 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\Usermanagement\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class RoleRequest extends FormRequest
|
|
{
|
|
public function authorize()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Returns an array of validation rules for the registration form.
|
|
*
|
|
* @return array The validation rules.
|
|
*/
|
|
public function rules()
|
|
: array
|
|
{
|
|
|
|
$rules = [
|
|
'guard_names' => 'required|string|in:web,api',
|
|
'position_id' => 'nullable|exists:positions,id',
|
|
];
|
|
|
|
if ($this->method() === 'PUT') {
|
|
$rules['name'] = 'required|string|max:255|unique:roles,name,' . $this->id;
|
|
} else {
|
|
$rules['name'] = 'required|string|max:255|unique:roles,name';
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
|
|
public function prepareForValidation()
|
|
{
|
|
$this->merge([
|
|
'guard_names' => 'web',
|
|
]);
|
|
}
|
|
}
|