feat: preview task canvases with workspace data (#3887)
This commit is contained in:
@@ -166,6 +166,7 @@ type webAppContext struct {
|
||||
WebAppKey string `json:"web_app_key"`
|
||||
Placement string `json:"placement"`
|
||||
ScopeKind string `json:"scope_kind"`
|
||||
DataScopeKind string `json:"data_scope_kind"`
|
||||
WorkspaceID string `json:"workspace_id,omitempty"`
|
||||
TaskID string `json:"task_id,omitempty"`
|
||||
SessionID string `json:"session_id,omitempty"`
|
||||
@@ -190,6 +191,7 @@ func (s *Service) handleWebAppContext(w http.ResponseWriter, r *http.Request, bi
|
||||
WebAppKey: binding.WebAppKey,
|
||||
Placement: binding.Placement,
|
||||
ScopeKind: binding.ScopeKind,
|
||||
DataScopeKind: instances.EffectiveDataScopeKind(binding.ScopeKind, binding.DataScopeKind),
|
||||
WorkspaceID: binding.WorkspaceID,
|
||||
TaskID: binding.TaskID,
|
||||
SessionID: binding.SessionID,
|
||||
@@ -364,6 +366,9 @@ func (s *Service) validateWebAppBinding(ctx context.Context, binding webapp.Capa
|
||||
}
|
||||
instance, err := store.Get(ctx, binding.InstanceID)
|
||||
if err != nil || instance.Status != instances.StatusActive || instance.PluginID != binding.PluginID ||
|
||||
instance.ScopeKind != binding.ScopeKind ||
|
||||
instance.EffectiveDataScopeKind() != instances.EffectiveDataScopeKind(binding.ScopeKind, binding.DataScopeKind) ||
|
||||
instance.WorkspaceID != binding.WorkspaceID || instance.TaskID != binding.TaskID ||
|
||||
instance.ActiveReleaseID != binding.ReleaseID || instance.GrantGeneration != binding.GrantGeneration {
|
||||
return webapp.ErrRuntimeTokenStale
|
||||
}
|
||||
@@ -395,13 +400,14 @@ func (s *Service) validateWebAppPermissions(ctx context.Context, binding webapp.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dataScope := instances.EffectiveDataScopeKind(binding.ScopeKind, binding.DataScopeKind)
|
||||
for _, permission := range webAppDeclaredPermissions(m, binding.WebAppKey) {
|
||||
if !webAppGrantCovers(permission, binding.ScopeKind, grants) {
|
||||
if !webAppGrantCovers(permission, dataScope, grants) {
|
||||
return errors.New("web app permission grant is stale")
|
||||
}
|
||||
}
|
||||
for _, origin := range binding.NetworkOrigins {
|
||||
if !webAppOriginGranted(origin, binding.ScopeKind, grants) {
|
||||
if !webAppOriginGranted(origin, dataScope, grants) {
|
||||
return errors.New("web app network grant is stale")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user