package biz import ( "context" "time" ) type API struct { ID uint CreatedAt time.Time UpdatedAt time.Time Path string Description string APIGroup string Method string } type AccessRepo interface { CreateAuthority(context.Context, *Authority) error CopyAuthority(context.Context, uint, *Authority) error UpdateAuthority(context.Context, *Authority) error DeleteAuthority(context.Context, uint) error ListAuthorities(context.Context) ([]*Authority, error) SetAuthorityUsers(context.Context, uint, []uint) error AuthorityUserIDs(context.Context, uint) ([]uint, error) SetDataScope(context.Context, uint, int, []uint) error DataScopeDepartmentIDs(context.Context, uint) ([]uint, error) ResolveDataScope(context.Context, uint, uint) (DataScope, error) CreateAPI(context.Context, *API) error UpdateAPI(context.Context, *API) error DeleteAPIs(context.Context, []uint) error FindAPI(context.Context, uint) (*API, error) ListAPIs(context.Context, int, int, *API) ([]*API, int64, error) APIRoleIDs(context.Context, uint) ([]uint, error) SetAPIRoles(context.Context, uint, []uint) error Authorize(context.Context, uint, string, string) (bool, error) PolicyPaths(context.Context, uint) ([]*API, error) SetPolicyPaths(context.Context, uint, []*API) error IgnoredAPIs(context.Context) ([]*API, error) SetAPIIgnored(context.Context, string, string, bool) error ApplyAPISync(context.Context, []*API, []*API) error Buttons(context.Context, uint) ([]*MenuButton, error) SetAuthorityButtons(context.Context, uint, map[uint][]uint) error AuthorityButtonIDs(context.Context, uint) ([]uint, error) SelectedButtons(context.Context, uint, uint) ([]uint, error) SetSelectedButtons(context.Context, uint, uint, []uint) error CanRemoveButton(context.Context, uint) (bool, error) } type AccessUsecase struct{ repo AccessRepo } func NewAccessUsecase(repo AccessRepo) *AccessUsecase { return &AccessUsecase{repo: repo} } func (uc *AccessUsecase) Repo() AccessRepo { return uc.repo } func (uc *AccessUsecase) Authorize(ctx context.Context, authorityID uint, path, method string) (bool, error) { if authorityID == 888 { return true, nil } return uc.repo.Authorize(ctx, authorityID, path, method) }