diff --git a/service/internal/acl/acl.go b/service/internal/acl/acl.go index 93223c9..ac4796a 100644 --- a/service/internal/acl/acl.go +++ b/service/internal/acl/acl.go @@ -108,22 +108,24 @@ func logAclNoneMatched(cfg *config.Config, aclFunction string, user *Authenticat } func permissionsConfigToBits(permissions config.PermissionsList) PermissionBits { + type permPair struct { + enabled bool + bit PermissionBits + } + + permMap := []permPair{ + {permissions.View, View}, + {permissions.Exec, Exec}, + {permissions.Logs, Logs}, + {permissions.Kill, Kill}, + } + var ret PermissionBits - if permissions.View { - ret |= View - } - - if permissions.Exec { - ret |= Exec - } - - if permissions.Logs { - ret |= Logs - } - - if permissions.Kill { - ret |= Kill + for _, perm := range permMap { + if perm.enabled { + ret |= perm.bit + } } return ret diff --git a/service/internal/entityfiles/entityfiles.go b/service/internal/entityfiles/entityfiles.go index e58ba82..42895f7 100644 --- a/service/internal/entityfiles/entityfiles.go +++ b/service/internal/entityfiles/entityfiles.go @@ -9,10 +9,10 @@ import ( sv "github.com/OliveTin/OliveTin/internal/stringvariables" log "github.com/sirupsen/logrus" "gopkg.in/yaml.v3" + "math" "os" "path/filepath" "strings" - "math" ) var ( diff --git a/service/internal/entityfiles/entityfiles_test.go b/service/internal/entityfiles/entityfiles_test.go index 3de9480..79e1f34 100644 --- a/service/internal/entityfiles/entityfiles_test.go +++ b/service/internal/entityfiles/entityfiles_test.go @@ -1,9 +1,9 @@ package entityfiles import ( - "testing" - "github.com/stretchr/testify/assert" sv "github.com/OliveTin/OliveTin/internal/stringvariables" + "github.com/stretchr/testify/assert" + "testing" ) func TestLoadObjectPerLineJsonFile(t *testing.T) { diff --git a/service/internal/grpcapi/grpcApi.go b/service/internal/grpcapi/grpcApi.go index e61dd29..1a92ff6 100644 --- a/service/internal/grpcapi/grpcApi.go +++ b/service/internal/grpcapi/grpcApi.go @@ -49,7 +49,6 @@ func (api *oliveTinAPI) KillAction(ctx ctx.Context, req *apiv1.KillActionRequest log.Warnf("Killing execution request by tracking ID: %v", req.ExecutionTrackingId) - user := acl.UserFromContext(ctx, cfg) action := cfg.FindAction(execReqLogEntry.ActionTitle) if action == nil { @@ -58,10 +57,17 @@ func (api *oliveTinAPI) KillAction(ctx ctx.Context, req *apiv1.KillActionRequest return ret, nil } + user := acl.UserFromContext(ctx, cfg) + + api.killActionByTrackingId(user, action, execReqLogEntry, ret) + + return ret, nil +} + +func (api *oliveTinAPI) killActionByTrackingId(user *acl.AuthenticatedUser, action *config.Action, execReqLogEntry *executor.InternalLogEntry, ret *apiv1.KillActionResponse) { if !acl.IsAllowedKill(cfg, user, action) { - log.Warnf("Killing execution request not possible - user not allowed to kill this action: %v", req.ExecutionTrackingId) + log.Warnf("Killing execution request not possible - user not allowed to kill this action: %v", execReqLogEntry.ExecutionTrackingID) ret.Killed = false - return ret, nil } err := api.executor.Kill(execReqLogEntry) @@ -73,8 +79,6 @@ func (api *oliveTinAPI) KillAction(ctx ctx.Context, req *apiv1.KillActionRequest } else { ret.Killed = true } - - return ret, nil } func (api *oliveTinAPI) StartAction(ctx ctx.Context, req *apiv1.StartActionRequest) (*apiv1.StartActionResponse, error) { diff --git a/service/internal/grpcapi/grpcApiActions.go b/service/internal/grpcapi/grpcApiActions.go index 4009900..bded6e3 100644 --- a/service/internal/grpcapi/grpcApiActions.go +++ b/service/internal/grpcapi/grpcApiActions.go @@ -91,7 +91,7 @@ func buildAction(actionId string, actionBinding *executor.ActionBinding, user *a btn := apiv1.Action{ Id: actionId, Title: sv.ReplaceEntityVars(actionBinding.EntityPrefix, action.Title), - Icon: action.Icon, + Icon: sv.ReplaceEntityVars(actionBinding.EntityPrefix, action.Icon), CanExec: acl.IsAllowedExec(cfg, user, action), PopupOnStart: action.PopupOnStart, Order: int32(actionBinding.ConfigOrder),