- Added services (`RoleService`, `AppRoleService`, `AppsPermissionService`) to handle role creation, app assignments, and permissions. - Introduced new Livewire forms for creating roles and assigning apps (`CreateRoleForm`, `AssignAppToRoleForm`). - Built dynamic Blade views for role and app management, including modals and reusable components. - Removed outdated `fluxui-development` skill documentation.
33 lines
876 B
PHP
33 lines
876 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Data\ConnectedApp\ConnectedAppData;
|
|
use App\Enums\ConnectedAppPermissonEnum;
|
|
use App\Helpers\AppPermission;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Throwable;
|
|
|
|
class AppsPermissionService
|
|
{
|
|
/**
|
|
* Creates a new permission for the connected app.
|
|
*
|
|
* @throws Throwable
|
|
*/
|
|
public function add(ConnectedAppData $connectedApp, ConnectedAppPermissonEnum $permission): void
|
|
{
|
|
if (! $connectedApp->slug) {
|
|
$connectedApp->slug = Str::slug($connectedApp->name);
|
|
}
|
|
$permissionName = AppPermission::name($permission, $connectedApp);
|
|
DB::transaction(function () use ($permissionName): void {
|
|
Permission::firstOrCreate(['name' => $permissionName]);
|
|
});
|
|
}
|
|
}
|