New-Thanasoft/thanasoft-back/app/Repositories/AccessControlRepositoryInterface.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;
}