Yimaru-BackEnd/internal/ports/rbac.go
2026-03-23 05:24:29 -07:00

29 lines
1.4 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
// AddRolePermissions inserts permissions into role without removing existing ones.
// It is safe to call repeatedly (idempotent) as it relies on ON CONFLICT DO NOTHING.
AddRolePermissions(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)
}