| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package middleware
- import (
- "github.com/grafana/grafana/pkg/infra/remotecache"
- authproxy "github.com/grafana/grafana/pkg/middleware/auth_proxy"
- m "github.com/grafana/grafana/pkg/models"
- )
- const (
- // cachePrefix is a prefix for the cache key
- cachePrefix = authproxy.CachePrefix
- )
- func initContextWithAuthProxy(store *remotecache.RemoteCache, ctx *m.ReqContext, orgID int64) bool {
- auth := authproxy.New(&authproxy.Options{
- Store: store,
- Ctx: ctx,
- OrgID: orgID,
- })
- // Bail if auth proxy is not enabled
- if auth.IsEnabled() == false {
- return false
- }
- // If the there is no header - we can't move forward
- if auth.HasHeader() == false {
- return false
- }
- // Check if allowed to continue with this IP
- if result, err := auth.IsAllowedIP(); result == false {
- ctx.Handle(407, err.Error(), err.DetailsError)
- return true
- }
- // Try to get user id from various sources
- id, err := auth.GetUserID()
- if err != nil {
- ctx.Handle(500, err.Error(), err.DetailsError)
- return true
- }
- // Get full user info
- user, err := auth.GetSignedUser(id)
- if err != nil {
- ctx.Handle(500, err.Error(), err.DetailsError)
- return true
- }
- // Add user info to context
- ctx.SignedInUser = user
- ctx.IsSignedIn = true
- // Remember user data it in cache
- if err := auth.Remember(); err != nil {
- ctx.Handle(500, err.Error(), err.DetailsError)
- return true
- }
- return true
- }
|