Yimaru-BackEnd/internal/ports/rbac.go

26 lines
1.1 KiB
Go

package ports
import (
"Yimaru-Backend/internal/domain"
"context"
)
type RBACStore interface {
CreateRole(ctx context.Context, name, description string, isSystem bool) (domain.RoleRecord, error)
GetRoleByID(ctx context.Context, id int64) (domain.RoleRecord, error)
GetRoleByName(ctx context.Context, name string) (domain.RoleRecord, error)
ListRoles(ctx context.Context, filter domain.RoleListFilter) ([]domain.RoleRecord, int64, error)
UpdateRole(ctx context.Context, id int64, name, description string) error
DeleteRole(ctx context.Context, id int64) error
UpsertPermission(ctx context.Context, seed domain.PermissionSeed) (domain.Permission, error)
ListPermissions(ctx context.Context) ([]domain.Permission, error)
ListPermissionGroups(ctx context.Context) ([]string, error)
GetPermissionByKey(ctx context.Context, key string) (domain.Permission, error)
SetRolePermissions(ctx context.Context, roleID int64, permissionIDs []int64) error
GetRolePermissions(ctx context.Context, roleID int64) ([]domain.Permission, error)
GetAllRolesWithPermissions(ctx context.Context) (map[string]map[string]struct{}, error)
}