46 lines
951 B
Go
46 lines
951 B
Go
package usecase
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
type OpaUseCase interface {
|
|
// CheckRBACPermission 確認有無權限
|
|
CheckRBACPermission(ctx context.Context, req CheckReq) (CheckOPAResp, error)
|
|
// LoadPolicy 將 Policy 從其他地方加載到 opa 的 policy 當中
|
|
LoadPolicy(ctx context.Context, input []Policy) error
|
|
GetPolicy(ctx context.Context) []map[string]any
|
|
}
|
|
|
|
type CheckReq struct {
|
|
ID string
|
|
Roles []string
|
|
Path string
|
|
Method string
|
|
}
|
|
|
|
type Grant struct {
|
|
ID string
|
|
Path string
|
|
Method string
|
|
}
|
|
|
|
type Policy struct {
|
|
Methods []string `json:"methods"`
|
|
Name string `json:"name"`
|
|
Path string `json:"path"`
|
|
Role string `json:"role"`
|
|
}
|
|
|
|
type RuleRequest struct {
|
|
Method string `json:"method"`
|
|
Path string `json:"path"`
|
|
Policies []Policy `json:"policies"`
|
|
Roles []string `json:"roles"`
|
|
}
|
|
|
|
type CheckOPAResp struct {
|
|
Allow bool `json:"allow"`
|
|
Request RuleRequest `json:"request"`
|
|
}
|