mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			741 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			741 B
		
	
	
	
		
			Go
		
	
	
	
| package app
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/apimachinery/identity"
 | |
| 	"k8s.io/apiserver/pkg/authorization/authorizer"
 | |
| )
 | |
| 
 | |
| func GetAuthorizer() authorizer.Authorizer {
 | |
| 	return authorizer.AuthorizerFunc(func(
 | |
| 		ctx context.Context, attr authorizer.Attributes,
 | |
| 	) (authorized authorizer.Decision, reason string, err error) {
 | |
| 		if !attr.IsResourceRequest() {
 | |
| 			return authorizer.DecisionNoOpinion, "", nil
 | |
| 		}
 | |
| 
 | |
| 		// require a user
 | |
| 		u, err := identity.GetRequester(ctx)
 | |
| 		if err != nil {
 | |
| 			return authorizer.DecisionDeny, "valid user is required", err
 | |
| 		}
 | |
| 
 | |
| 		// check if is admin
 | |
| 		if u.HasRole(identity.RoleAdmin) {
 | |
| 			return authorizer.DecisionAllow, "", nil
 | |
| 		}
 | |
| 
 | |
| 		return authorizer.DecisionDeny, "forbidden", nil
 | |
| 	})
 | |
| }
 |