45 lines
1.1 KiB
PHP
45 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Repositories;
|
|
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
interface AccessControlRepositoryInterface
|
|
{
|
|
/**
|
|
* @return array{roles: \Illuminate\Support\Collection<int, Role>, permissions: \Illuminate\Support\Collection<int, Permission>}
|
|
*/
|
|
public function index(): array;
|
|
|
|
/**
|
|
* @param array<string, mixed> $attributes
|
|
*/
|
|
public function createRole(array $attributes): Role;
|
|
|
|
/**
|
|
* @param array<string, mixed> $attributes
|
|
*/
|
|
public function updateRole(int $id, array $attributes): ?Role;
|
|
|
|
public function deleteRole(int $id): bool;
|
|
|
|
/**
|
|
* @param array<int, string> $permissions
|
|
*/
|
|
public function syncRolePermissions(int $id, array $permissions): ?Role;
|
|
|
|
/**
|
|
* @param array<string, mixed> $attributes
|
|
*/
|
|
public function createPermission(array $attributes): Permission;
|
|
|
|
/**
|
|
* @param array<string, mixed> $attributes
|
|
*/
|
|
public function updatePermission(int $id, array $attributes): ?Permission;
|
|
|
|
public function deletePermission(int $id): bool;
|
|
} |