diff --git a/internal/languages/usecase/permission.go b/internal/contests/usecase/policy_agent.go similarity index 93% rename from internal/languages/usecase/permission.go rename to internal/contests/usecase/policy_agent.go index ae3855f..e2c0f82 100644 --- a/internal/languages/usecase/permission.go +++ b/internal/contests/usecase/policy_agent.go @@ -13,7 +13,7 @@ type PermissionService struct { func NewPermissionService() *PermissionService { query, err := rego.New( rego.Query("allow = data.problem.rbac.allow"), - rego.Load([]string{"./opa/all.rego"}, nil), + rego.Load([]string{"./opa/problem.rego"}, nil), ).PrepareForEval(context.TODO()) if err != nil { diff --git a/internal/problems/usecase/permission.go b/internal/problems/usecase/permission.go deleted file mode 100644 index ae3855f..0000000 --- a/internal/problems/usecase/permission.go +++ /dev/null @@ -1,39 +0,0 @@ -package usecase - -import ( - "context" - "git.sch9.ru/new_gate/models" - "github.com/open-policy-agent/opa/rego" -) - -type PermissionService struct { - query *rego.PreparedEvalQuery -} - -func NewPermissionService() *PermissionService { - query, err := rego.New( - rego.Query("allow = data.problem.rbac.allow"), - rego.Load([]string{"./opa/all.rego"}, nil), - ).PrepareForEval(context.TODO()) - - if err != nil { - panic(err) - } - - return &PermissionService{ - query: &query, - } -} - -func (s *PermissionService) Allowed(ctx context.Context, user *models.User, action string) bool { - input := map[string]interface{}{ - "user": user, - "action": action, - } - - result, err := s.query.Eval(ctx, rego.EvalInput(input)) - if err != nil { - panic(err) - } - return result[0].Bindings["allow"].(bool) -}