Files
2025-01-21 12:06:55 +03:00

32 lines
867 B
Go

package resource
import (
context "context"
"fmt"
claims "github.com/grafana/authlib/types"
)
type WriteAccessHooks struct {
// When configured, this will make sure a user is allowed to save to a given origin
CanWriteValueFromRepoCheck func(ctx context.Context, user claims.AuthInfo, origin string) bool
}
type LifecycleHooks interface {
// Called once at initialization
Init(context.Context) error
// Stop function -- after calling this, any additional storage functions may error
Stop(context.Context) error
}
func (a *WriteAccessHooks) CanWriteValueFromRepository(ctx context.Context, user claims.AuthInfo, uid string) error {
if a.CanWriteValueFromRepoCheck == nil || uid == "UI" {
return nil // default to OK
}
if !a.CanWriteValueFromRepoCheck(ctx, user, uid) {
return fmt.Errorf("not allowed to write resource at origin")
}
return nil
}