summaryrefslogtreecommitdiffhomepage
path: root/internal/permission
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-21 14:29:03 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 14:29:28 +0200
commita8d5787e8ef561037f73b669128f46ae1b1e8553 (patch)
treeb606adbc85069d60cc518c74508a7ecbc87c051b /internal/permission
parent9ae6af8856ca6a13d575ec6a8989a5f6ee4297b1 (diff)
downloadopencode-a8d5787e8ef561037f73b669128f46ae1b1e8553.tar.gz
opencode-a8d5787e8ef561037f73b669128f46ae1b1e8553.zip
config validation
Diffstat (limited to 'internal/permission')
-rw-r--r--internal/permission/permission.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/internal/permission/permission.go b/internal/permission/permission.go
index 4cb379dea..06f69a33d 100644
--- a/internal/permission/permission.go
+++ b/internal/permission/permission.go
@@ -2,10 +2,12 @@ package permission
import (
"errors"
+ "path/filepath"
"sync"
"time"
"github.com/google/uuid"
+ "github.com/kujtimiihoxha/opencode/internal/config"
"github.com/kujtimiihoxha/opencode/internal/pubsub"
)
@@ -67,9 +69,13 @@ func (s *permissionService) Deny(permission PermissionRequest) {
}
func (s *permissionService) Request(opts CreatePermissionRequest) bool {
+ dir := filepath.Dir(opts.Path)
+ if dir == "." {
+ dir = config.WorkingDirectory()
+ }
permission := PermissionRequest{
ID: uuid.New().String(),
- Path: opts.Path,
+ Path: dir,
ToolName: opts.ToolName,
Description: opts.Description,
Action: opts.Action,
@@ -77,7 +83,7 @@ func (s *permissionService) Request(opts CreatePermissionRequest) bool {
}
for _, p := range s.sessionPermissions {
- if p.ToolName == permission.ToolName && p.Action == permission.Action {
+ if p.ToolName == permission.ToolName && p.Action == permission.Action && p.SessionID == permission.SessionID && p.Path == permission.Path {
return true
}
}