mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 23:52:19 +08:00
32 lines
867 B
Go
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
|
|
}
|