- Mengubah logika akses `PermissionsController` dengan: - Menambahkan konstruktor untuk mendefinisikan user yang terautentikasi. - Mengganti logika permission check dari `permissions.*` ke `usermanagement.*`. - Menambahkan validasi `abort` untuk operasi CRUD jika user tidak memiliki hak akses. - Memperbarui respons penghapusan permission menjadi JSON yang lebih semantik. - Memperbarui `PermissionGroup` untuk: - Menambahkan mekanisme auto-generated slug saat membuat instance baru. - Memperbaiki export logic pada `PermissionExport` dengan: - Mengonversi array `roles` ke collection sebelum menggunakan fungsi `pluck`. - Menambahkan soft delete pada model `Permission`, memungkinkan penghapusan data non-permanen. - Menghapus elemen filter dropdown di view `permissions.index` untuk meningkatkan clarity UI. - Menambahkan comprehensive test suite pada `PermissionsControllerTest` untuk: - Menguji validasi CRUD pada permission dengan role dan tanpa role. - Menguji restore permissions yang terhapus. - Menguji filter, pencarian, dan sorting pada datatables. - Menguji export permissions. Perubahan ini meningkatkan pengelolaan permission, validasi akses, dan memperkaya pengujian untuk memastikan kualitas fitur permission management.
49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\Usermanagement\Exports;
|
|
|
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
|
use Modules\Usermanagement\Models\PermissionGroup;
|
|
|
|
class PermissionExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
|
{
|
|
public function collection(){
|
|
$permission = PermissionGroup::all();
|
|
|
|
return $permission->map(function ($permission) {
|
|
$permission->roles = $permission->roles($permission);
|
|
|
|
return $permission;
|
|
});
|
|
}
|
|
|
|
public function map($row): array{
|
|
// Convert the array to a collection before using pluck
|
|
$role = collect($row->roles)->pluck('name')->toArray();
|
|
return [
|
|
$row->id,
|
|
$row->name,
|
|
$row->roles == null? '' : implode(', ', $role),
|
|
$row->created_at
|
|
];
|
|
}
|
|
public function headings(): array{
|
|
return [
|
|
'ID',
|
|
'Permission',
|
|
'Roles',
|
|
'Created At'
|
|
];
|
|
}
|
|
|
|
public function columnFormats(): array{
|
|
return [
|
|
'A' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER,
|
|
'C' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME
|
|
];
|
|
}
|
|
}
|