mirror of
https://github.com/grafana/grafana.git
synced 2024-12-02 05:29:42 -06:00
56 lines
1.0 KiB
Go
56 lines
1.0 KiB
Go
|
package middleware
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
|
||
|
m "github.com/grafana/grafana/pkg/models"
|
||
|
"github.com/grafana/grafana/pkg/util"
|
||
|
)
|
||
|
|
||
|
var renderKeysLock sync.Mutex
|
||
|
var renderKeys map[string]*m.SignedInUser = make(map[string]*m.SignedInUser)
|
||
|
|
||
|
func initContextWithRenderAuth(ctx *Context) bool {
|
||
|
key := ctx.GetCookie("renderKey")
|
||
|
if key == "" {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
renderKeysLock.Lock()
|
||
|
defer renderKeysLock.Unlock()
|
||
|
|
||
|
if renderUser, exists := renderKeys[key]; !exists {
|
||
|
ctx.JsonApiErr(401, "Invalid Render Key", nil)
|
||
|
return true
|
||
|
} else {
|
||
|
|
||
|
ctx.IsSignedIn = true
|
||
|
ctx.SignedInUser = renderUser
|
||
|
ctx.IsRenderCall = true
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type renderContextFunc func(key string) (string, error)
|
||
|
|
||
|
func AddRenderAuthKey(orgId int64) string {
|
||
|
renderKeysLock.Lock()
|
||
|
|
||
|
key := util.GetRandomString(32)
|
||
|
|
||
|
renderKeys[key] = &m.SignedInUser{
|
||
|
OrgId: orgId,
|
||
|
OrgRole: m.ROLE_VIEWER,
|
||
|
}
|
||
|
|
||
|
renderKeysLock.Unlock()
|
||
|
|
||
|
return key
|
||
|
}
|
||
|
|
||
|
func RemoveRenderAuthKey(key string) {
|
||
|
renderKeysLock.Lock()
|
||
|
delete(renderKeys, key)
|
||
|
renderKeysLock.Unlock()
|
||
|
}
|