Documentation
¶
Overview ¶
Package usecase coordinates role and menu access workflows.
Index ¶
- func AllPermissions() []string
- type API
- type APIInput
- type APIListOutput
- type APIRolesInput
- type AdminRoleReader
- type AdminRoleState
- type Button
- type CopyRoleInput
- type ListFilter
- type ListInput
- type Menu
- type MenuButtonInput
- type MenuInput
- type MenuMeta
- type MenuMetaInput
- type MenuRolesInput
- type PermissionDefinition
- type Role
- type RoleInput
- type RoleListOutput
- type Store
- type UpdateAPIInput
- type UpdateMenuInput
- type UpdateRoleInput
- type Usecase
- func (u *Usecase) APIGroups(ctx context.Context) ([]string, error)
- func (u *Usecase) APIRoleIDs(ctx context.Context, apiID int64) ([]int64, error)
- func (u *Usecase) AssignableRoleIDs(ctx context.Context) ([]int64, error)
- func (u *Usecase) CopyRole(ctx context.Context, input CopyRoleInput) (Role, error)
- func (u *Usecase) CreateAPI(ctx context.Context, input APIInput) (API, error)
- func (u *Usecase) CreateMenu(ctx context.Context, input MenuInput) (Menu, error)
- func (u *Usecase) CreateRole(ctx context.Context, input RoleInput) (Role, error)
- func (u *Usecase) DeleteAPI(ctx context.Context, id int64) error
- func (u *Usecase) DeleteAPIs(ctx context.Context, ids []int64) error
- func (u *Usecase) DeleteMenu(ctx context.Context, id int64) error
- func (u *Usecase) DeleteRole(ctx context.Context, id int64) error
- func (u *Usecase) EnsureAssignableRoles(ctx context.Context, roleIDs []int64) error
- func (u *Usecase) FindAPI(ctx context.Context, id int64) (API, error)
- func (u *Usecase) FindMenu(ctx context.Context, id int64) (Menu, error)
- func (u *Usecase) ListAPIs(ctx context.Context, input ListInput) (APIListOutput, error)
- func (u *Usecase) ListMenus(ctx context.Context) ([]Menu, error)
- func (u *Usecase) ListPermissions(ctx context.Context) ([]PermissionDefinition, error)
- func (u *Usecase) ListRoles(ctx context.Context, input ListInput) (RoleListOutput, error)
- func (u *Usecase) MenuRoleIDs(ctx context.Context, menuID int64) ([]int64, error)
- func (u *Usecase) SetAPIRoles(ctx context.Context, input APIRolesInput) ([]int64, error)
- func (u *Usecase) SetMenuRoles(ctx context.Context, input MenuRolesInput) ([]int64, error)
- func (u *Usecase) UpdateAPI(ctx context.Context, input UpdateAPIInput) (API, error)
- func (u *Usecase) UpdateMenu(ctx context.Context, input UpdateMenuInput) (Menu, error)
- func (u *Usecase) UpdateRole(ctx context.Context, input UpdateRoleInput) (Role, error)
- func (u *Usecase) VisibleRoleIDs(ctx context.Context) ([]int64, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllPermissions ¶
func AllPermissions() []string
AllPermissions returns the current foundation permission set.
Types ¶
type API ¶
type API struct {
ID int64 `json:"id"`
Method string `json:"method"`
Path string `json:"path"`
Description string `json:"description"`
Group string `json:"group"`
Permission string `json:"permission"`
Public bool `json:"public"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
API is the adapter-facing API route DTO.
type APIInput ¶
type APIInput struct {
Method string
Path string
Description string
Group string
Permission string
Public bool
}
APIInput carries mutable API metadata.
type APIListOutput ¶
APIListOutput is a paginated API result.
type APIRolesInput ¶
APIRolesInput carries the full role assignment for one API route.
type AdminRoleReader ¶
type AdminRoleReader interface {
AdminRoleState(context.Context, int64) (AdminRoleState, error)
RoleAssigned(context.Context, int64) (bool, error)
}
AdminRoleReader reads the current administrator role assignment without exposing identity storage.
type AdminRoleState ¶
AdminRoleState is the minimal identity snapshot needed for scoped role delegation.
type Button ¶
type Button struct {
ID int64 `json:"id"`
MenuID int64 `json:"menu_id"`
Name string `json:"name"`
Description string `json:"description"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Button is the adapter-facing menu button DTO.
type CopyRoleInput ¶
type CopyRoleInput struct {
SourceID int64
ParentID *int64
Code string
Name string
DefaultPath *string
Active *bool
}
CopyRoleInput carries the new identity fields for a copied role.
type ListFilter ¶
ListFilter is the validated store-facing pagination window.
type Menu ¶
type Menu struct {
ID int64 `json:"id"`
ParentID int64 `json:"parent_id"`
Name string `json:"name"`
Path string `json:"path"`
Icon string `json:"icon"`
Hidden bool `json:"hidden"`
Component string `json:"component"`
Meta MenuMeta `json:"meta"`
Permission string `json:"permission"`
Sort int `json:"sort"`
Active bool `json:"active"`
Buttons []Button `json:"buttons"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Menu is the adapter-facing menu DTO.
type MenuButtonInput ¶
MenuButtonInput carries one page-level operation key attached to a menu.
type MenuInput ¶
type MenuInput struct {
ParentID int64
Name string
Path string
Icon string
Hidden bool
Component string
Meta MenuMetaInput
Permission string
Sort int
Active bool
Buttons []MenuButtonInput
}
MenuInput carries mutable menu fields.
type MenuMeta ¶
type MenuMeta struct {
ActiveName string `json:"active_name"`
KeepAlive bool `json:"keep_alive"`
DefaultMenu bool `json:"default_menu"`
CloseTab bool `json:"close_tab"`
TransitionType string `json:"transition_type"`
}
MenuMeta is the adapter-facing router metadata DTO.
type MenuMetaInput ¶
type MenuMetaInput struct {
ActiveName string
KeepAlive bool
DefaultMenu bool
CloseTab bool
TransitionType string
}
MenuMetaInput carries router metadata for one menu.
type MenuRolesInput ¶
MenuRolesInput carries the full role assignment for one menu.
type PermissionDefinition ¶
type PermissionDefinition struct {
Token string `json:"token"`
Resource string `json:"resource"`
Action string `json:"action"`
Name string `json:"name"`
}
PermissionDefinition is the adapter-facing permission metadata DTO.
type Role ¶
type Role struct {
ID int64 `json:"id"`
ParentID int64 `json:"parent_id"`
Code string `json:"code"`
Name string `json:"name"`
Permissions []string `json:"permissions"`
MenuIDs []int64 `json:"menu_ids"`
APIIDs []int64 `json:"api_ids"`
ButtonIDs []int64 `json:"button_ids"`
DataRoleIDs []int64 `json:"data_role_ids"`
DefaultPath string `json:"default_path"`
Active bool `json:"active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Role is the adapter-facing role DTO.
type RoleInput ¶
type RoleInput struct {
ParentID int64
Code string
Name string
Permissions []string
MenuIDs []int64
APIIDs []int64
ButtonIDs []int64
DataRoleIDs []int64
DefaultPath string
Active bool
}
RoleInput carries mutable role fields.
type RoleListOutput ¶
RoleListOutput is a paginated role result.
type Store ¶
type Store interface {
FindRoleByID(context.Context, int64) (domain.Role, error)
FindRoleByCode(context.Context, string) (domain.Role, error)
ListAllRoles(context.Context) ([]domain.Role, error)
CreateRole(context.Context, domain.Role) (domain.Role, error)
UpdateRole(context.Context, domain.Role) (domain.Role, error)
DeleteRole(context.Context, int64) error
FindAPIByID(context.Context, int64) (domain.API, error)
FindAPIByRoute(context.Context, string, string) (domain.API, error)
ListAPIs(context.Context) ([]domain.API, error)
CreateAPI(context.Context, domain.API) (domain.API, error)
UpdateAPI(context.Context, domain.API) (domain.API, error)
DeleteAPI(context.Context, int64) error
FindMenuByID(context.Context, int64) (domain.Menu, error)
ListMenus(context.Context) ([]domain.Menu, error)
CreateMenu(context.Context, domain.Menu) (domain.Menu, error)
UpdateMenu(context.Context, domain.Menu) (domain.Menu, error)
DeleteMenu(context.Context, int64) error
}
Store persists roles and menus for the access usecase.
type UpdateAPIInput ¶
type UpdateAPIInput struct {
ID int64
Method string
Path string
Description string
Group string
Permission string
Public bool
}
UpdateAPIInput carries mutable API updates.
type UpdateMenuInput ¶
type UpdateMenuInput struct {
ID int64
ParentID int64
Name string
Path string
Icon string
Hidden bool
Component string
Meta MenuMetaInput
Permission string
Sort int
Active bool
Buttons []MenuButtonInput
}
UpdateMenuInput carries mutable menu updates.
type UpdateRoleInput ¶
type UpdateRoleInput struct {
ID int64
ParentID *int64
Name *string
Permissions []string
MenuIDs []int64
APIIDs []int64
ButtonIDs []int64
DataRoleIDs []int64
DefaultPath *string
Active *bool
}
UpdateRoleInput carries partial role updates.
type Usecase ¶
type Usecase struct {
// contains filtered or unexported fields
}
Usecase coordinates role and menu rules.
func (*Usecase) APIRoleIDs ¶
APIRoleIDs returns visible role ids currently granted one API route.
func (*Usecase) AssignableRoleIDs ¶
AssignableRoleIDs returns role ids the active role may assign to administrators.
func (*Usecase) CopyRole ¶
CopyRole creates a new role by copying grants from an existing role inside the active delegation scope.
func (*Usecase) CreateMenu ¶
CreateMenu validates and stores a new menu.
func (*Usecase) CreateRole ¶
CreateRole validates and stores a delegated role.
func (*Usecase) DeleteAPI ¶
DeleteAPI removes an API route only when no role grant still references it.
func (*Usecase) DeleteAPIs ¶
DeleteAPIs removes API routes only when no role grant still references them.
func (*Usecase) DeleteMenu ¶
DeleteMenu removes a menu only when no child menu or role grant still references it.
func (*Usecase) DeleteRole ¶
DeleteRole removes a role only when the active role owns it and no admin or child role still depends on it.
func (*Usecase) EnsureAssignableRoles ¶
EnsureAssignableRoles rejects role assignments outside the active role delegation scope.
func (*Usecase) ListPermissions ¶
func (u *Usecase) ListPermissions(ctx context.Context) ([]PermissionDefinition, error)
ListPermissions returns grant metadata for role editing UIs.
func (*Usecase) MenuRoleIDs ¶
MenuRoleIDs returns visible role ids currently granted one menu.
func (*Usecase) SetAPIRoles ¶
SetAPIRoles replaces role grants for one API route within the active role scope.
func (*Usecase) SetMenuRoles ¶
SetMenuRoles replaces role grants for one menu within the active role scope.
func (*Usecase) UpdateMenu ¶
UpdateMenu replaces mutable menu fields.
func (*Usecase) UpdateRole ¶
UpdateRole applies mutable role changes within the active role delegation scope.