mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			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
 | 
						|
}
 |