Identity: Unfurl OrgID in pkg/services to allow using identity.Requester interface (#76113)

Unfurl OrgID in pkg/services to allow using identity.Requester interface
This commit is contained in:
Jo
2023-10-09 10:40:19 +02:00
committed by GitHub
parent 20d64705f5
commit dcd0c6b11e
19 changed files with 100 additions and 98 deletions

View File

@ -118,7 +118,7 @@ func Auth(options *AuthOptions) web.Handler {
if !forceLogin { if !forceLogin {
orgIDValue := c.Req.URL.Query().Get("orgId") orgIDValue := c.Req.URL.Query().Get("orgId")
orgID, err := strconv.ParseInt(orgIDValue, 10, 64) orgID, err := strconv.ParseInt(orgIDValue, 10, 64)
if err == nil && orgID > 0 && orgID != c.OrgID { if err == nil && orgID > 0 && orgID != c.SignedInUser.GetOrgID() {
forceLogin = true forceLogin = true
} }
} }

View File

@ -48,7 +48,7 @@ func (s *CorrelationsService) createHandler(c *contextmodel.ReqContext) response
return response.Error(http.StatusBadRequest, "bad request data", err) return response.Error(http.StatusBadRequest, "bad request data", err)
} }
cmd.SourceUID = web.Params(c.Req)[":uid"] cmd.SourceUID = web.Params(c.Req)[":uid"]
cmd.OrgId = c.OrgID cmd.OrgId = c.SignedInUser.GetOrgID()
correlation, err := s.CreateCorrelation(c.Req.Context(), cmd) correlation, err := s.CreateCorrelation(c.Req.Context(), cmd)
if err != nil { if err != nil {
@ -91,7 +91,7 @@ func (s *CorrelationsService) deleteHandler(c *contextmodel.ReqContext) response
cmd := DeleteCorrelationCommand{ cmd := DeleteCorrelationCommand{
UID: web.Params(c.Req)[":correlationUID"], UID: web.Params(c.Req)[":correlationUID"],
SourceUID: web.Params(c.Req)[":uid"], SourceUID: web.Params(c.Req)[":uid"],
OrgId: c.OrgID, OrgId: c.SignedInUser.GetOrgID(),
} }
err := s.DeleteCorrelation(c.Req.Context(), cmd) err := s.DeleteCorrelation(c.Req.Context(), cmd)
@ -153,7 +153,7 @@ func (s *CorrelationsService) updateHandler(c *contextmodel.ReqContext) response
cmd.UID = web.Params(c.Req)[":correlationUID"] cmd.UID = web.Params(c.Req)[":correlationUID"]
cmd.SourceUID = web.Params(c.Req)[":uid"] cmd.SourceUID = web.Params(c.Req)[":uid"]
cmd.OrgId = c.OrgID cmd.OrgId = c.SignedInUser.GetOrgID()
correlation, err := s.UpdateCorrelation(c.Req.Context(), cmd) correlation, err := s.UpdateCorrelation(c.Req.Context(), cmd)
if err != nil { if err != nil {
@ -206,7 +206,7 @@ func (s *CorrelationsService) getCorrelationHandler(c *contextmodel.ReqContext)
query := GetCorrelationQuery{ query := GetCorrelationQuery{
UID: web.Params(c.Req)[":correlationUID"], UID: web.Params(c.Req)[":correlationUID"],
SourceUID: web.Params(c.Req)[":uid"], SourceUID: web.Params(c.Req)[":uid"],
OrgId: c.OrgID, OrgId: c.SignedInUser.GetOrgID(),
} }
correlation, err := s.getCorrelation(c.Req.Context(), query) correlation, err := s.getCorrelation(c.Req.Context(), query)
@ -252,7 +252,7 @@ type GetCorrelationResponse struct {
func (s *CorrelationsService) getCorrelationsBySourceUIDHandler(c *contextmodel.ReqContext) response.Response { func (s *CorrelationsService) getCorrelationsBySourceUIDHandler(c *contextmodel.ReqContext) response.Response {
query := GetCorrelationsBySourceUIDQuery{ query := GetCorrelationsBySourceUIDQuery{
SourceUID: web.Params(c.Req)[":uid"], SourceUID: web.Params(c.Req)[":uid"],
OrgId: c.OrgID, OrgId: c.SignedInUser.GetOrgID(),
} }
correlations, err := s.getCorrelationsBySourceUID(c.Req.Context(), query) correlations, err := s.getCorrelationsBySourceUID(c.Req.Context(), query)
@ -308,7 +308,7 @@ func (s *CorrelationsService) getCorrelationsHandler(c *contextmodel.ReqContext)
sourceUIDs := c.QueryStrings("sourceUID") sourceUIDs := c.QueryStrings("sourceUID")
query := GetCorrelationsQuery{ query := GetCorrelationsQuery{
OrgId: c.OrgID, OrgId: c.SignedInUser.GetOrgID(),
Limit: limit, Limit: limit,
Page: page, Page: page,
SourceUIDs: sourceUIDs, SourceUIDs: sourceUIDs,

View File

@ -49,7 +49,7 @@ func (l *LibraryElementService) createHandler(c *contextmodel.ReqContext) respon
if *cmd.FolderUID == "" { if *cmd.FolderUID == "" {
cmd.FolderID = 0 cmd.FolderID = 0
} else { } else {
folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.OrgID, UID: cmd.FolderUID, SignedInUser: c.SignedInUser}) folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), UID: cmd.FolderUID, SignedInUser: c.SignedInUser})
if err != nil || folder == nil { if err != nil || folder == nil {
return response.ErrOrFallback(http.StatusBadRequest, "failed to get folder", err) return response.ErrOrFallback(http.StatusBadRequest, "failed to get folder", err)
} }
@ -62,7 +62,7 @@ func (l *LibraryElementService) createHandler(c *contextmodel.ReqContext) respon
} }
if element.FolderID != 0 { if element.FolderID != 0 {
folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.OrgID, ID: &element.FolderID, SignedInUser: c.SignedInUser}) folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), ID: &element.FolderID, SignedInUser: c.SignedInUser})
if err != nil { if err != nil {
return response.ErrOrFallback(http.StatusInternalServerError, "failed to get folder", err) return response.ErrOrFallback(http.StatusInternalServerError, "failed to get folder", err)
} }
@ -181,7 +181,7 @@ func (l *LibraryElementService) patchHandler(c *contextmodel.ReqContext) respons
if *cmd.FolderUID == "" { if *cmd.FolderUID == "" {
cmd.FolderID = 0 cmd.FolderID = 0
} else { } else {
folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.OrgID, UID: cmd.FolderUID, SignedInUser: c.SignedInUser}) folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), UID: cmd.FolderUID, SignedInUser: c.SignedInUser})
if err != nil || folder == nil { if err != nil || folder == nil {
return response.Error(http.StatusBadRequest, "failed to get folder", err) return response.Error(http.StatusBadRequest, "failed to get folder", err)
} }
@ -195,7 +195,7 @@ func (l *LibraryElementService) patchHandler(c *contextmodel.ReqContext) respons
} }
if element.FolderID != 0 { if element.FolderID != 0 {
folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.OrgID, ID: &element.FolderID, SignedInUser: c.SignedInUser}) folder, err := l.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), ID: &element.FolderID, SignedInUser: c.SignedInUser})
if err != nil { if err != nil {
return response.Error(http.StatusInternalServerError, "failed to get folder", err) return response.Error(http.StatusInternalServerError, "failed to get folder", err)
} }

View File

@ -54,7 +54,7 @@ func (s *ServiceImpl) getAdminNode(c *contextmodel.ReqContext) (*navtree.NavLink
}) })
} }
disabled, err := s.apiKeyService.IsDisabled(c.Req.Context(), c.OrgID) disabled, err := s.apiKeyService.IsDisabled(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -20,7 +20,7 @@ func (s *ServiceImpl) addAppLinks(treeRoot *navtree.NavTreeRoot, c *contextmodel
hasAccess := ac.HasAccess(s.accessControl, c) hasAccess := ac.HasAccess(s.accessControl, c)
appLinks := []*navtree.NavLink{} appLinks := []*navtree.NavLink{}
pss, err := s.pluginSettings.GetPluginSettings(c.Req.Context(), &pluginsettings.GetArgs{OrgID: c.OrgID}) pss, err := s.pluginSettings.GetPluginSettings(c.Req.Context(), &pluginsettings.GetArgs{OrgID: c.SignedInUser.GetOrgID()})
if err != nil { if err != nil {
return err return err
} }

View File

@ -129,7 +129,7 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere
treeRoot.AddSection(s.getProfileNode(c)) treeRoot.AddSection(s.getProfileNode(c))
} }
_, uaIsDisabledForOrg := s.cfg.UnifiedAlerting.DisabledOrgs[c.OrgID] _, uaIsDisabledForOrg := s.cfg.UnifiedAlerting.DisabledOrgs[c.SignedInUser.GetOrgID()]
uaVisibleForOrg := s.cfg.UnifiedAlerting.IsEnabled() && !uaIsDisabledForOrg uaVisibleForOrg := s.cfg.UnifiedAlerting.IsEnabled() && !uaIsDisabledForOrg
if setting.AlertingEnabled != nil && *setting.AlertingEnabled { if setting.AlertingEnabled != nil && *setting.AlertingEnabled {
@ -294,7 +294,7 @@ func (s *ServiceImpl) buildStarredItemsNavLinks(c *contextmodel.ReqContext) ([]*
for id := range starredDashboardResult.UserStars { for id := range starredDashboardResult.UserStars {
ids = append(ids, id) ids = append(ids, id)
} }
starredDashboards, err := s.dashboardService.GetDashboards(c.Req.Context(), &dashboards.GetDashboardsQuery{DashboardIDs: ids, OrgID: c.OrgID}) starredDashboards, err := s.dashboardService.GetDashboards(c.Req.Context(), &dashboards.GetDashboardsQuery{DashboardIDs: ids, OrgID: c.SignedInUser.GetOrgID()})
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -43,7 +43,7 @@ func (e UnknownReceiverError) Error() string {
} }
func (srv AlertmanagerSrv) RouteGetAMStatus(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetAMStatus(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -58,7 +58,7 @@ func (srv AlertmanagerSrv) RouteCreateSilence(c *contextmodel.ReqContext, postab
return ErrResp(http.StatusBadRequest, err, "silence failed validation") return ErrResp(http.StatusBadRequest, err, "silence failed validation")
} }
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -93,7 +93,7 @@ func (srv AlertmanagerSrv) RouteCreateSilence(c *contextmodel.ReqContext, postab
} }
func (srv AlertmanagerSrv) RouteDeleteAlertingConfig(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteDeleteAlertingConfig(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -107,7 +107,7 @@ func (srv AlertmanagerSrv) RouteDeleteAlertingConfig(c *contextmodel.ReqContext)
} }
func (srv AlertmanagerSrv) RouteDeleteSilence(c *contextmodel.ReqContext, silenceID string) response.Response { func (srv AlertmanagerSrv) RouteDeleteSilence(c *contextmodel.ReqContext, silenceID string) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -122,7 +122,7 @@ func (srv AlertmanagerSrv) RouteDeleteSilence(c *contextmodel.ReqContext, silenc
} }
func (srv AlertmanagerSrv) RouteGetAlertingConfig(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetAlertingConfig(c *contextmodel.ReqContext) response.Response {
config, err := srv.mam.GetAlertmanagerConfiguration(c.Req.Context(), c.OrgID) config, err := srv.mam.GetAlertmanagerConfiguration(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
if errors.Is(err, store.ErrNoAlertmanagerConfiguration) { if errors.Is(err, store.ErrNoAlertmanagerConfiguration) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -134,7 +134,7 @@ func (srv AlertmanagerSrv) RouteGetAlertingConfig(c *contextmodel.ReqContext) re
func (srv AlertmanagerSrv) RouteGetAlertingConfigHistory(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetAlertingConfigHistory(c *contextmodel.ReqContext) response.Response {
limit := c.QueryInt("limit") limit := c.QueryInt("limit")
configs, err := srv.mam.GetAppliedAlertmanagerConfigurations(c.Req.Context(), c.OrgID, limit) configs, err := srv.mam.GetAppliedAlertmanagerConfigurations(c.Req.Context(), c.SignedInUser.GetOrgID(), limit)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, err.Error()) return ErrResp(http.StatusInternalServerError, err, err.Error())
} }
@ -143,7 +143,7 @@ func (srv AlertmanagerSrv) RouteGetAlertingConfigHistory(c *contextmodel.ReqCont
} }
func (srv AlertmanagerSrv) RouteGetAMAlertGroups(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetAMAlertGroups(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -167,7 +167,7 @@ func (srv AlertmanagerSrv) RouteGetAMAlertGroups(c *contextmodel.ReqContext) res
} }
func (srv AlertmanagerSrv) RouteGetAMAlerts(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetAMAlerts(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -194,7 +194,7 @@ func (srv AlertmanagerSrv) RouteGetAMAlerts(c *contextmodel.ReqContext) response
} }
func (srv AlertmanagerSrv) RouteGetSilence(c *contextmodel.ReqContext, silenceID string) response.Response { func (srv AlertmanagerSrv) RouteGetSilence(c *contextmodel.ReqContext, silenceID string) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -211,7 +211,7 @@ func (srv AlertmanagerSrv) RouteGetSilence(c *contextmodel.ReqContext, silenceID
} }
func (srv AlertmanagerSrv) RouteGetSilences(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetSilences(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -233,7 +233,7 @@ func (srv AlertmanagerSrv) RoutePostGrafanaAlertingConfigHistoryActivate(c *cont
return ErrResp(http.StatusBadRequest, err, "failed to parse config id") return ErrResp(http.StatusBadRequest, err, "failed to parse config id")
} }
err = srv.mam.ActivateHistoricalConfiguration(c.Req.Context(), c.OrgID, confId) err = srv.mam.ActivateHistoricalConfiguration(c.Req.Context(), c.SignedInUser.GetOrgID(), confId)
if err != nil { if err != nil {
var unknownReceiverError notifier.UnknownReceiverError var unknownReceiverError notifier.UnknownReceiverError
if errors.As(err, &unknownReceiverError) { if errors.As(err, &unknownReceiverError) {
@ -260,7 +260,7 @@ func (srv AlertmanagerSrv) RoutePostGrafanaAlertingConfigHistoryActivate(c *cont
} }
func (srv AlertmanagerSrv) RoutePostAlertingConfig(c *contextmodel.ReqContext, body apimodels.PostableUserConfig) response.Response { func (srv AlertmanagerSrv) RoutePostAlertingConfig(c *contextmodel.ReqContext, body apimodels.PostableUserConfig) response.Response {
currentConfig, err := srv.mam.GetAlertmanagerConfiguration(c.Req.Context(), c.OrgID) currentConfig, err := srv.mam.GetAlertmanagerConfiguration(c.Req.Context(), c.SignedInUser.GetOrgID())
// If a config is present and valid we proceed with the guard, otherwise we // If a config is present and valid we proceed with the guard, otherwise we
// just bypass the guard which is okay as we are anyway in an invalid state. // just bypass the guard which is okay as we are anyway in an invalid state.
if err == nil { if err == nil {
@ -268,7 +268,7 @@ func (srv AlertmanagerSrv) RoutePostAlertingConfig(c *contextmodel.ReqContext, b
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
} }
} }
err = srv.mam.ApplyAlertmanagerConfiguration(c.Req.Context(), c.OrgID, body) err = srv.mam.ApplyAlertmanagerConfiguration(c.Req.Context(), c.SignedInUser.GetOrgID(), body)
if err == nil { if err == nil {
return response.JSON(http.StatusAccepted, util.DynMap{"message": "configuration created"}) return response.JSON(http.StatusAccepted, util.DynMap{"message": "configuration created"})
} }
@ -291,7 +291,7 @@ func (srv AlertmanagerSrv) RoutePostAlertingConfig(c *contextmodel.ReqContext, b
} }
func (srv AlertmanagerSrv) RouteGetReceivers(c *contextmodel.ReqContext) response.Response { func (srv AlertmanagerSrv) RouteGetReceivers(c *contextmodel.ReqContext) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -301,7 +301,7 @@ func (srv AlertmanagerSrv) RouteGetReceivers(c *contextmodel.ReqContext) respons
} }
func (srv AlertmanagerSrv) RoutePostTestReceivers(c *contextmodel.ReqContext, body apimodels.TestReceiversConfigBodyParams) response.Response { func (srv AlertmanagerSrv) RoutePostTestReceivers(c *contextmodel.ReqContext, body apimodels.TestReceiversConfigBodyParams) response.Response {
if err := srv.crypto.ProcessSecureSettings(c.Req.Context(), c.OrgID, body.Receivers); err != nil { if err := srv.crypto.ProcessSecureSettings(c.Req.Context(), c.SignedInUser.GetOrgID(), body.Receivers); err != nil {
var unknownReceiverError UnknownReceiverError var unknownReceiverError UnknownReceiverError
if errors.As(err, &unknownReceiverError) { if errors.As(err, &unknownReceiverError) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
@ -319,7 +319,7 @@ func (srv AlertmanagerSrv) RoutePostTestReceivers(c *contextmodel.ReqContext, bo
} }
defer cancelFunc() defer cancelFunc()
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }
@ -336,7 +336,7 @@ func (srv AlertmanagerSrv) RoutePostTestReceivers(c *contextmodel.ReqContext, bo
} }
func (srv AlertmanagerSrv) RoutePostTestTemplates(c *contextmodel.ReqContext, body apimodels.TestTemplatesConfigBodyParams) response.Response { func (srv AlertmanagerSrv) RoutePostTestTemplates(c *contextmodel.ReqContext, body apimodels.TestTemplatesConfigBodyParams) response.Response {
am, errResp := srv.AlertmanagerFor(c.OrgID) am, errResp := srv.AlertmanagerFor(c.SignedInUser.GetOrgID())
if errResp != nil { if errResp != nil {
return errResp return errResp
} }

View File

@ -27,8 +27,8 @@ type ConfigSrv struct {
} }
func (srv ConfigSrv) RouteGetAlertmanagers(c *contextmodel.ReqContext) response.Response { func (srv ConfigSrv) RouteGetAlertmanagers(c *contextmodel.ReqContext) response.Response {
urls := srv.alertmanagerProvider.AlertmanagersFor(c.OrgID) urls := srv.alertmanagerProvider.AlertmanagersFor(c.SignedInUser.GetOrgID())
droppedURLs := srv.alertmanagerProvider.DroppedAlertmanagersFor(c.OrgID) droppedURLs := srv.alertmanagerProvider.DroppedAlertmanagersFor(c.SignedInUser.GetOrgID())
ams := v1.AlertManagersResult{Active: make([]v1.AlertManager, len(urls)), Dropped: make([]v1.AlertManager, len(droppedURLs))} ams := v1.AlertManagersResult{Active: make([]v1.AlertManager, len(urls)), Dropped: make([]v1.AlertManager, len(droppedURLs))}
for i, url := range urls { for i, url := range urls {
ams.Active[i].URL = url.String() ams.Active[i].URL = url.String()
@ -48,7 +48,7 @@ func (srv ConfigSrv) RouteGetNGalertConfig(c *contextmodel.ReqContext) response.
return accessForbiddenResp() return accessForbiddenResp()
} }
cfg, err := srv.store.GetAdminConfiguration(c.OrgID) cfg, err := srv.store.GetAdminConfiguration(c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
if errors.Is(err, store.ErrNoAdminConfiguration) { if errors.Is(err, store.ErrNoAdminConfiguration) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -75,7 +75,7 @@ func (srv ConfigSrv) RoutePostNGalertConfig(c *contextmodel.ReqContext, body api
return response.Error(400, "Invalid alertmanager choice specified", err) return response.Error(400, "Invalid alertmanager choice specified", err)
} }
externalAlertmanagers, err := srv.externalAlertmanagers(c.Req.Context(), c.OrgID) externalAlertmanagers, err := srv.externalAlertmanagers(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return response.Error(500, "Couldn't fetch the external Alertmanagers from datasources", err) return response.Error(500, "Couldn't fetch the external Alertmanagers from datasources", err)
} }
@ -86,7 +86,7 @@ func (srv ConfigSrv) RoutePostNGalertConfig(c *contextmodel.ReqContext, body api
cfg := &ngmodels.AdminConfiguration{ cfg := &ngmodels.AdminConfiguration{
SendAlertsTo: sendAlertsTo, SendAlertsTo: sendAlertsTo,
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
} }
cmd := store.UpdateAdminConfigurationCmd{AdminConfiguration: cfg} cmd := store.UpdateAdminConfigurationCmd{AdminConfiguration: cfg}
@ -104,7 +104,7 @@ func (srv ConfigSrv) RouteDeleteNGalertConfig(c *contextmodel.ReqContext) respon
return accessForbiddenResp() return accessForbiddenResp()
} }
err := srv.store.DeleteAdminConfiguration(c.OrgID) err := srv.store.DeleteAdminConfiguration(c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
srv.log.Error("Unable to delete configuration", "error", err) srv.log.Error("Unable to delete configuration", "error", err)
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
@ -138,7 +138,7 @@ func (srv ConfigSrv) externalAlertmanagers(ctx context.Context, orgID int64) ([]
func (srv ConfigSrv) RouteGetAlertingStatus(c *contextmodel.ReqContext) response.Response { func (srv ConfigSrv) RouteGetAlertingStatus(c *contextmodel.ReqContext) response.Response {
sendsAlertsTo := ngmodels.InternalAlertmanager sendsAlertsTo := ngmodels.InternalAlertmanager
cfg, err := srv.store.GetAdminConfiguration(c.OrgID) cfg, err := srv.store.GetAdminConfiguration(c.SignedInUser.GetOrgID())
if err != nil && !errors.Is(err, store.ErrNoAdminConfiguration) { if err != nil && !errors.Is(err, store.ErrNoAdminConfiguration) {
msg := "failed to fetch configuration from the database" msg := "failed to fetch configuration from the database"
srv.log.Error(msg, "error", err) srv.log.Error(msg, "error", err)
@ -149,7 +149,7 @@ func (srv ConfigSrv) RouteGetAlertingStatus(c *contextmodel.ReqContext) response
} }
// handle errors // handle errors
externalAlertManagers, err := srv.externalAlertmanagers(c.Req.Context(), c.OrgID) externalAlertManagers, err := srv.externalAlertmanagers(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }

View File

@ -49,7 +49,7 @@ func (srv PrometheusSrv) RouteGetAlertStatuses(c *contextmodel.ReqContext) respo
labelOptions = append(labelOptions, ngmodels.WithoutInternalLabels()) labelOptions = append(labelOptions, ngmodels.WithoutInternalLabels())
} }
for _, alertState := range srv.manager.GetAll(c.OrgID) { for _, alertState := range srv.manager.GetAll(c.SignedInUser.GetOrgID()) {
startsAt := alertState.StartsAt startsAt := alertState.StartsAt
valString := "" valString := ""
@ -185,7 +185,7 @@ func (srv PrometheusSrv) RouteGetRuleStatuses(c *contextmodel.ReqContext) respon
labelOptions = append(labelOptions, ngmodels.WithoutInternalLabels()) labelOptions = append(labelOptions, ngmodels.WithoutInternalLabels())
} }
namespaceMap, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.OrgID, c.SignedInUser) namespaceMap, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.SignedInUser.GetOrgID(), c.SignedInUser)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "failed to get namespaces visible to the user") return ErrResp(http.StatusInternalServerError, err, "failed to get namespaces visible to the user")
} }

View File

@ -70,7 +70,7 @@ type AlertRuleService interface {
} }
func (srv *ProvisioningSrv) RouteGetPolicyTree(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetPolicyTree(c *contextmodel.ReqContext) response.Response {
policies, err := srv.policies.GetPolicyTree(c.Req.Context(), c.OrgID) policies, err := srv.policies.GetPolicyTree(c.Req.Context(), c.SignedInUser.GetOrgID())
if errors.Is(err, store.ErrNoAlertmanagerConfiguration) { if errors.Is(err, store.ErrNoAlertmanagerConfiguration) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
} }
@ -82,7 +82,7 @@ func (srv *ProvisioningSrv) RouteGetPolicyTree(c *contextmodel.ReqContext) respo
} }
func (srv *ProvisioningSrv) RouteGetPolicyTreeExport(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetPolicyTreeExport(c *contextmodel.ReqContext) response.Response {
policies, err := srv.policies.GetPolicyTree(c.Req.Context(), c.OrgID) policies, err := srv.policies.GetPolicyTree(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
if errors.Is(err, store.ErrNoAlertmanagerConfiguration) { if errors.Is(err, store.ErrNoAlertmanagerConfiguration) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -90,7 +90,7 @@ func (srv *ProvisioningSrv) RouteGetPolicyTreeExport(c *contextmodel.ReqContext)
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
e, err := AlertingFileExportFromRoute(c.OrgID, policies) e, err := AlertingFileExportFromRoute(c.SignedInUser.GetOrgID(), policies)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "failed to create alerting file export") return ErrResp(http.StatusInternalServerError, err, "failed to create alerting file export")
} }
@ -100,7 +100,7 @@ func (srv *ProvisioningSrv) RouteGetPolicyTreeExport(c *contextmodel.ReqContext)
func (srv *ProvisioningSrv) RoutePutPolicyTree(c *contextmodel.ReqContext, tree definitions.Route) response.Response { func (srv *ProvisioningSrv) RoutePutPolicyTree(c *contextmodel.ReqContext, tree definitions.Route) response.Response {
provenance := determineProvenance(c) provenance := determineProvenance(c)
err := srv.policies.UpdatePolicyTree(c.Req.Context(), c.OrgID, tree, alerting_models.Provenance(provenance)) err := srv.policies.UpdatePolicyTree(c.Req.Context(), c.SignedInUser.GetOrgID(), tree, alerting_models.Provenance(provenance))
if errors.Is(err, store.ErrNoAlertmanagerConfiguration) { if errors.Is(err, store.ErrNoAlertmanagerConfiguration) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
} }
@ -115,7 +115,7 @@ func (srv *ProvisioningSrv) RoutePutPolicyTree(c *contextmodel.ReqContext, tree
} }
func (srv *ProvisioningSrv) RouteResetPolicyTree(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteResetPolicyTree(c *contextmodel.ReqContext) response.Response {
tree, err := srv.policies.ResetPolicyTree(c.Req.Context(), c.OrgID) tree, err := srv.policies.ResetPolicyTree(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -125,7 +125,7 @@ func (srv *ProvisioningSrv) RouteResetPolicyTree(c *contextmodel.ReqContext) res
func (srv *ProvisioningSrv) RouteGetContactPoints(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetContactPoints(c *contextmodel.ReqContext) response.Response {
q := provisioning.ContactPointQuery{ q := provisioning.ContactPointQuery{
Name: c.Query("name"), Name: c.Query("name"),
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
} }
cps, err := srv.contactPointService.GetContactPoints(c.Req.Context(), q, nil) cps, err := srv.contactPointService.GetContactPoints(c.Req.Context(), q, nil)
if err != nil { if err != nil {
@ -140,7 +140,7 @@ func (srv *ProvisioningSrv) RouteGetContactPoints(c *contextmodel.ReqContext) re
func (srv *ProvisioningSrv) RouteGetContactPointsExport(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetContactPointsExport(c *contextmodel.ReqContext) response.Response {
q := provisioning.ContactPointQuery{ q := provisioning.ContactPointQuery{
Name: c.Query("name"), Name: c.Query("name"),
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
Decrypt: c.QueryBoolWithDefault("decrypt", false), Decrypt: c.QueryBoolWithDefault("decrypt", false),
} }
cps, err := srv.contactPointService.GetContactPoints(c.Req.Context(), q, c.SignedInUser) cps, err := srv.contactPointService.GetContactPoints(c.Req.Context(), q, c.SignedInUser)
@ -151,7 +151,7 @@ func (srv *ProvisioningSrv) RouteGetContactPointsExport(c *contextmodel.ReqConte
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
e, err := AlertingFileExportFromEmbeddedContactPoints(c.OrgID, cps) e, err := AlertingFileExportFromEmbeddedContactPoints(c.SignedInUser.GetOrgID(), cps)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "failed to create alerting file export") return ErrResp(http.StatusInternalServerError, err, "failed to create alerting file export")
} }
@ -161,7 +161,7 @@ func (srv *ProvisioningSrv) RouteGetContactPointsExport(c *contextmodel.ReqConte
func (srv *ProvisioningSrv) RoutePostContactPoint(c *contextmodel.ReqContext, cp definitions.EmbeddedContactPoint) response.Response { func (srv *ProvisioningSrv) RoutePostContactPoint(c *contextmodel.ReqContext, cp definitions.EmbeddedContactPoint) response.Response {
provenance := determineProvenance(c) provenance := determineProvenance(c)
contactPoint, err := srv.contactPointService.CreateContactPoint(c.Req.Context(), c.OrgID, cp, alerting_models.Provenance(provenance)) contactPoint, err := srv.contactPointService.CreateContactPoint(c.Req.Context(), c.SignedInUser.GetOrgID(), cp, alerting_models.Provenance(provenance))
if errors.Is(err, provisioning.ErrValidation) { if errors.Is(err, provisioning.ErrValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
} }
@ -174,7 +174,7 @@ func (srv *ProvisioningSrv) RoutePostContactPoint(c *contextmodel.ReqContext, cp
func (srv *ProvisioningSrv) RoutePutContactPoint(c *contextmodel.ReqContext, cp definitions.EmbeddedContactPoint, UID string) response.Response { func (srv *ProvisioningSrv) RoutePutContactPoint(c *contextmodel.ReqContext, cp definitions.EmbeddedContactPoint, UID string) response.Response {
cp.UID = UID cp.UID = UID
provenance := determineProvenance(c) provenance := determineProvenance(c)
err := srv.contactPointService.UpdateContactPoint(c.Req.Context(), c.OrgID, cp, alerting_models.Provenance(provenance)) err := srv.contactPointService.UpdateContactPoint(c.Req.Context(), c.SignedInUser.GetOrgID(), cp, alerting_models.Provenance(provenance))
if errors.Is(err, provisioning.ErrValidation) { if errors.Is(err, provisioning.ErrValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
} }
@ -188,7 +188,7 @@ func (srv *ProvisioningSrv) RoutePutContactPoint(c *contextmodel.ReqContext, cp
} }
func (srv *ProvisioningSrv) RouteDeleteContactPoint(c *contextmodel.ReqContext, UID string) response.Response { func (srv *ProvisioningSrv) RouteDeleteContactPoint(c *contextmodel.ReqContext, UID string) response.Response {
err := srv.contactPointService.DeleteContactPoint(c.Req.Context(), c.OrgID, UID) err := srv.contactPointService.DeleteContactPoint(c.Req.Context(), c.SignedInUser.GetOrgID(), UID)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -196,7 +196,7 @@ func (srv *ProvisioningSrv) RouteDeleteContactPoint(c *contextmodel.ReqContext,
} }
func (srv *ProvisioningSrv) RouteGetTemplates(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetTemplates(c *contextmodel.ReqContext) response.Response {
templates, err := srv.templates.GetTemplates(c.Req.Context(), c.OrgID) templates, err := srv.templates.GetTemplates(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -208,7 +208,7 @@ func (srv *ProvisioningSrv) RouteGetTemplates(c *contextmodel.ReqContext) respon
} }
func (srv *ProvisioningSrv) RouteGetTemplate(c *contextmodel.ReqContext, name string) response.Response { func (srv *ProvisioningSrv) RouteGetTemplate(c *contextmodel.ReqContext, name string) response.Response {
templates, err := srv.templates.GetTemplates(c.Req.Context(), c.OrgID) templates, err := srv.templates.GetTemplates(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -224,7 +224,7 @@ func (srv *ProvisioningSrv) RoutePutTemplate(c *contextmodel.ReqContext, body de
Template: body.Template, Template: body.Template,
Provenance: determineProvenance(c), Provenance: determineProvenance(c),
} }
modified, err := srv.templates.SetTemplate(c.Req.Context(), c.OrgID, tmpl) modified, err := srv.templates.SetTemplate(c.Req.Context(), c.SignedInUser.GetOrgID(), tmpl)
if err != nil { if err != nil {
if errors.Is(err, provisioning.ErrValidation) { if errors.Is(err, provisioning.ErrValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
@ -235,7 +235,7 @@ func (srv *ProvisioningSrv) RoutePutTemplate(c *contextmodel.ReqContext, body de
} }
func (srv *ProvisioningSrv) RouteDeleteTemplate(c *contextmodel.ReqContext, name string) response.Response { func (srv *ProvisioningSrv) RouteDeleteTemplate(c *contextmodel.ReqContext, name string) response.Response {
err := srv.templates.DeleteTemplate(c.Req.Context(), c.OrgID, name) err := srv.templates.DeleteTemplate(c.Req.Context(), c.SignedInUser.GetOrgID(), name)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -243,7 +243,7 @@ func (srv *ProvisioningSrv) RouteDeleteTemplate(c *contextmodel.ReqContext, name
} }
func (srv *ProvisioningSrv) RouteGetMuteTiming(c *contextmodel.ReqContext, name string) response.Response { func (srv *ProvisioningSrv) RouteGetMuteTiming(c *contextmodel.ReqContext, name string) response.Response {
timings, err := srv.muteTimings.GetMuteTimings(c.Req.Context(), c.OrgID) timings, err := srv.muteTimings.GetMuteTimings(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -256,7 +256,7 @@ func (srv *ProvisioningSrv) RouteGetMuteTiming(c *contextmodel.ReqContext, name
} }
func (srv *ProvisioningSrv) RouteGetMuteTimings(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetMuteTimings(c *contextmodel.ReqContext) response.Response {
timings, err := srv.muteTimings.GetMuteTimings(c.Req.Context(), c.OrgID) timings, err := srv.muteTimings.GetMuteTimings(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -265,7 +265,7 @@ func (srv *ProvisioningSrv) RouteGetMuteTimings(c *contextmodel.ReqContext) resp
func (srv *ProvisioningSrv) RoutePostMuteTiming(c *contextmodel.ReqContext, mt definitions.MuteTimeInterval) response.Response { func (srv *ProvisioningSrv) RoutePostMuteTiming(c *contextmodel.ReqContext, mt definitions.MuteTimeInterval) response.Response {
mt.Provenance = determineProvenance(c) mt.Provenance = determineProvenance(c)
created, err := srv.muteTimings.CreateMuteTiming(c.Req.Context(), mt, c.OrgID) created, err := srv.muteTimings.CreateMuteTiming(c.Req.Context(), mt, c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
if errors.Is(err, provisioning.ErrValidation) { if errors.Is(err, provisioning.ErrValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
@ -278,7 +278,7 @@ func (srv *ProvisioningSrv) RoutePostMuteTiming(c *contextmodel.ReqContext, mt d
func (srv *ProvisioningSrv) RoutePutMuteTiming(c *contextmodel.ReqContext, mt definitions.MuteTimeInterval, name string) response.Response { func (srv *ProvisioningSrv) RoutePutMuteTiming(c *contextmodel.ReqContext, mt definitions.MuteTimeInterval, name string) response.Response {
mt.Name = name mt.Name = name
mt.Provenance = determineProvenance(c) mt.Provenance = determineProvenance(c)
updated, err := srv.muteTimings.UpdateMuteTiming(c.Req.Context(), mt, c.OrgID) updated, err := srv.muteTimings.UpdateMuteTiming(c.Req.Context(), mt, c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
if errors.Is(err, provisioning.ErrValidation) { if errors.Is(err, provisioning.ErrValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
@ -292,7 +292,7 @@ func (srv *ProvisioningSrv) RoutePutMuteTiming(c *contextmodel.ReqContext, mt de
} }
func (srv *ProvisioningSrv) RouteDeleteMuteTiming(c *contextmodel.ReqContext, name string) response.Response { func (srv *ProvisioningSrv) RouteDeleteMuteTiming(c *contextmodel.ReqContext, name string) response.Response {
err := srv.muteTimings.DeleteMuteTiming(c.Req.Context(), name, c.OrgID) err := srv.muteTimings.DeleteMuteTiming(c.Req.Context(), name, c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -300,7 +300,7 @@ func (srv *ProvisioningSrv) RouteDeleteMuteTiming(c *contextmodel.ReqContext, na
} }
func (srv *ProvisioningSrv) RouteGetAlertRules(c *contextmodel.ReqContext) response.Response { func (srv *ProvisioningSrv) RouteGetAlertRules(c *contextmodel.ReqContext) response.Response {
rules, err := srv.alertRules.GetAlertRules(c.Req.Context(), c.OrgID) rules, err := srv.alertRules.GetAlertRules(c.Req.Context(), c.SignedInUser.GetOrgID())
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -308,7 +308,7 @@ func (srv *ProvisioningSrv) RouteGetAlertRules(c *contextmodel.ReqContext) respo
} }
func (srv *ProvisioningSrv) RouteRouteGetAlertRule(c *contextmodel.ReqContext, UID string) response.Response { func (srv *ProvisioningSrv) RouteRouteGetAlertRule(c *contextmodel.ReqContext, UID string) response.Response {
rule, provenace, err := srv.alertRules.GetAlertRule(c.Req.Context(), c.OrgID, UID) rule, provenace, err := srv.alertRules.GetAlertRule(c.Req.Context(), c.SignedInUser.GetOrgID(), UID)
if err != nil { if err != nil {
if errors.Is(err, alerting_models.ErrAlertRuleNotFound) { if errors.Is(err, alerting_models.ErrAlertRuleNotFound) {
return response.Empty(http.StatusNotFound) return response.Empty(http.StatusNotFound)
@ -320,7 +320,7 @@ func (srv *ProvisioningSrv) RouteRouteGetAlertRule(c *contextmodel.ReqContext, U
func (srv *ProvisioningSrv) RoutePostAlertRule(c *contextmodel.ReqContext, ar definitions.ProvisionedAlertRule) response.Response { func (srv *ProvisioningSrv) RoutePostAlertRule(c *contextmodel.ReqContext, ar definitions.ProvisionedAlertRule) response.Response {
upstreamModel, err := AlertRuleFromProvisionedAlertRule(ar) upstreamModel, err := AlertRuleFromProvisionedAlertRule(ar)
upstreamModel.OrgID = c.OrgID upstreamModel.OrgID = c.SignedInUser.GetOrgID()
if err != nil { if err != nil {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
} }
@ -348,7 +348,7 @@ func (srv *ProvisioningSrv) RoutePutAlertRule(c *contextmodel.ReqContext, ar def
if err != nil { if err != nil {
ErrResp(http.StatusBadRequest, err, "") ErrResp(http.StatusBadRequest, err, "")
} }
updated.OrgID = c.OrgID updated.OrgID = c.SignedInUser.GetOrgID()
updated.UID = UID updated.UID = UID
provenance := determineProvenance(c) provenance := determineProvenance(c)
updatedAlertRule, err := srv.alertRules.UpdateAlertRule(c.Req.Context(), updated, alerting_models.Provenance(provenance)) updatedAlertRule, err := srv.alertRules.UpdateAlertRule(c.Req.Context(), updated, alerting_models.Provenance(provenance))
@ -371,7 +371,7 @@ func (srv *ProvisioningSrv) RoutePutAlertRule(c *contextmodel.ReqContext, ar def
func (srv *ProvisioningSrv) RouteDeleteAlertRule(c *contextmodel.ReqContext, UID string) response.Response { func (srv *ProvisioningSrv) RouteDeleteAlertRule(c *contextmodel.ReqContext, UID string) response.Response {
provenance := determineProvenance(c) provenance := determineProvenance(c)
err := srv.alertRules.DeleteAlertRule(c.Req.Context(), c.OrgID, UID, alerting_models.Provenance(provenance)) err := srv.alertRules.DeleteAlertRule(c.Req.Context(), c.SignedInUser.GetOrgID(), UID, alerting_models.Provenance(provenance))
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "") return ErrResp(http.StatusInternalServerError, err, "")
} }
@ -379,7 +379,7 @@ func (srv *ProvisioningSrv) RouteDeleteAlertRule(c *contextmodel.ReqContext, UID
} }
func (srv *ProvisioningSrv) RouteGetAlertRuleGroup(c *contextmodel.ReqContext, folder string, group string) response.Response { func (srv *ProvisioningSrv) RouteGetAlertRuleGroup(c *contextmodel.ReqContext, folder string, group string) response.Response {
g, err := srv.alertRules.GetRuleGroup(c.Req.Context(), c.OrgID, folder, group) g, err := srv.alertRules.GetRuleGroup(c.Req.Context(), c.SignedInUser.GetOrgID(), folder, group)
if err != nil { if err != nil {
if errors.Is(err, store.ErrAlertRuleGroupNotFound) { if errors.Is(err, store.ErrAlertRuleGroupNotFound) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -410,7 +410,7 @@ func (srv *ProvisioningSrv) RouteGetAlertRulesExport(c *contextmodel.ReqContext)
return srv.RouteGetAlertRuleGroupExport(c, folderUIDs[0], group) return srv.RouteGetAlertRuleGroupExport(c, folderUIDs[0], group)
} }
groupsWithTitle, err := srv.alertRules.GetAlertGroupsWithFolderTitle(c.Req.Context(), c.OrgID, folderUIDs) groupsWithTitle, err := srv.alertRules.GetAlertGroupsWithFolderTitle(c.Req.Context(), c.SignedInUser.GetOrgID(), folderUIDs)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "failed to get alert rules") return ErrResp(http.StatusInternalServerError, err, "failed to get alert rules")
} }
@ -428,7 +428,7 @@ func (srv *ProvisioningSrv) RouteGetAlertRulesExport(c *contextmodel.ReqContext)
// RouteGetAlertRuleGroupExport retrieves the given alert rule group in a format compatible with file provisioning. // RouteGetAlertRuleGroupExport retrieves the given alert rule group in a format compatible with file provisioning.
func (srv *ProvisioningSrv) RouteGetAlertRuleGroupExport(c *contextmodel.ReqContext, folder string, group string) response.Response { func (srv *ProvisioningSrv) RouteGetAlertRuleGroupExport(c *contextmodel.ReqContext, folder string, group string) response.Response {
g, err := srv.alertRules.GetAlertRuleGroupWithFolderTitle(c.Req.Context(), c.OrgID, folder, group) g, err := srv.alertRules.GetAlertRuleGroupWithFolderTitle(c.Req.Context(), c.SignedInUser.GetOrgID(), folder, group)
if err != nil { if err != nil {
if errors.Is(err, store.ErrAlertRuleGroupNotFound) { if errors.Is(err, store.ErrAlertRuleGroupNotFound) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -446,7 +446,7 @@ func (srv *ProvisioningSrv) RouteGetAlertRuleGroupExport(c *contextmodel.ReqCont
// RouteGetAlertRuleExport retrieves the given alert rule in a format compatible with file provisioning. // RouteGetAlertRuleExport retrieves the given alert rule in a format compatible with file provisioning.
func (srv *ProvisioningSrv) RouteGetAlertRuleExport(c *contextmodel.ReqContext, UID string) response.Response { func (srv *ProvisioningSrv) RouteGetAlertRuleExport(c *contextmodel.ReqContext, UID string) response.Response {
rule, err := srv.alertRules.GetAlertRuleWithFolderTitle(c.Req.Context(), c.OrgID, UID) rule, err := srv.alertRules.GetAlertRuleWithFolderTitle(c.Req.Context(), c.SignedInUser.GetOrgID(), UID)
if err != nil { if err != nil {
if errors.Is(err, alerting_models.ErrAlertRuleNotFound) { if errors.Is(err, alerting_models.ErrAlertRuleNotFound) {
return ErrResp(http.StatusNotFound, err, "") return ErrResp(http.StatusNotFound, err, "")
@ -472,7 +472,7 @@ func (srv *ProvisioningSrv) RoutePutAlertRuleGroup(c *contextmodel.ReqContext, a
ErrResp(http.StatusBadRequest, err, "") ErrResp(http.StatusBadRequest, err, "")
} }
provenance := determineProvenance(c) provenance := determineProvenance(c)
err = srv.alertRules.ReplaceRuleGroup(c.Req.Context(), c.OrgID, groupModel, c.UserID, alerting_models.Provenance(provenance)) err = srv.alertRules.ReplaceRuleGroup(c.Req.Context(), c.SignedInUser.GetOrgID(), groupModel, c.UserID, alerting_models.Provenance(provenance))
if errors.Is(err, alerting_models.ErrAlertRuleFailedValidation) { if errors.Is(err, alerting_models.ErrAlertRuleFailedValidation) {
return ErrResp(http.StatusBadRequest, err, "") return ErrResp(http.StatusBadRequest, err, "")
} }

View File

@ -77,7 +77,7 @@ func (srv RulerSrv) RouteDeleteAlertRules(c *contextmodel.ReqContext, namespaceT
deletionCandidates := map[ngmodels.AlertRuleGroupKey]ngmodels.RulesGroup{} deletionCandidates := map[ngmodels.AlertRuleGroupKey]ngmodels.RulesGroup{}
if group != "" { if group != "" {
key := ngmodels.AlertRuleGroupKey{ key := ngmodels.AlertRuleGroupKey{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
NamespaceUID: namespace.UID, NamespaceUID: namespace.UID,
RuleGroup: group, RuleGroup: group,
} }
@ -173,7 +173,7 @@ func (srv RulerSrv) RouteGetRulesGroupConfig(c *contextmodel.ReqContext, namespa
} }
rules, err := srv.getAuthorizedRuleGroup(c.Req.Context(), c, ngmodels.AlertRuleGroupKey{ rules, err := srv.getAuthorizedRuleGroup(c.Req.Context(), c, ngmodels.AlertRuleGroupKey{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
RuleGroup: ruleGroup, RuleGroup: ruleGroup,
NamespaceUID: namespace.UID, NamespaceUID: namespace.UID,
}) })
@ -194,7 +194,7 @@ func (srv RulerSrv) RouteGetRulesGroupConfig(c *contextmodel.ReqContext, namespa
// RouteGetRulesConfig returns all alert rules that are available to the current user // RouteGetRulesConfig returns all alert rules that are available to the current user
func (srv RulerSrv) RouteGetRulesConfig(c *contextmodel.ReqContext) response.Response { func (srv RulerSrv) RouteGetRulesConfig(c *contextmodel.ReqContext) response.Response {
namespaceMap, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.OrgID, c.SignedInUser) namespaceMap, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.SignedInUser.GetOrgID(), c.SignedInUser)
if err != nil { if err != nil {
return ErrResp(http.StatusInternalServerError, err, "failed to get namespaces visible to the user") return ErrResp(http.StatusInternalServerError, err, "failed to get namespaces visible to the user")
} }
@ -289,7 +289,7 @@ func (srv RulerSrv) updateAlertRulesInGroup(c *contextmodel.ReqContext, groupKey
return err return err
} }
if err := verifyProvisionedRulesNotAffected(c.Req.Context(), srv.provenanceStore, c.OrgID, groupChanges); err != nil { if err := verifyProvisionedRulesNotAffected(c.Req.Context(), srv.provenanceStore, c.SignedInUser.GetOrgID(), groupChanges); err != nil {
return err return err
} }
@ -344,7 +344,7 @@ func (srv RulerSrv) updateAlertRulesInGroup(c *contextmodel.ReqContext, groupKey
if len(finalChanges.New) > 0 { if len(finalChanges.New) > 0 {
limitReached, err := srv.QuotaService.CheckQuotaReached(tranCtx, ngmodels.QuotaTargetSrv, &quota.ScopeParameters{ limitReached, err := srv.QuotaService.CheckQuotaReached(tranCtx, ngmodels.QuotaTargetSrv, &quota.ScopeParameters{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
UserID: c.UserID, UserID: c.UserID,
}) // alert rule is table name }) // alert rule is table name
if err != nil { if err != nil {
@ -508,7 +508,7 @@ func (srv RulerSrv) getAuthorizedRuleByUid(ctx context.Context, c *contextmodel.
hasAccess := accesscontrol.HasAccess(srv.ac, c) hasAccess := accesscontrol.HasAccess(srv.ac, c)
q := ngmodels.GetAlertRulesGroupByRuleUIDQuery{ q := ngmodels.GetAlertRulesGroupByRuleUIDQuery{
UID: ruleUID, UID: ruleUID,
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
} }
var err error var err error
rules, err := srv.store.GetAlertRulesGroupByRuleUID(ctx, &q) rules, err := srv.store.GetAlertRulesGroupByRuleUID(ctx, &q)
@ -553,7 +553,7 @@ func (srv RulerSrv) getAuthorizedRuleGroup(ctx context.Context, c *contextmodel.
func (srv RulerSrv) searchAuthorizedAlertRules(ctx context.Context, c *contextmodel.ReqContext, folderUIDs []string, dashboardUID string, panelID int64) (map[ngmodels.AlertRuleGroupKey]ngmodels.RulesGroup, int, error) { func (srv RulerSrv) searchAuthorizedAlertRules(ctx context.Context, c *contextmodel.ReqContext, folderUIDs []string, dashboardUID string, panelID int64) (map[ngmodels.AlertRuleGroupKey]ngmodels.RulesGroup, int, error) {
hasAccess := accesscontrol.HasAccess(srv.ac, c) hasAccess := accesscontrol.HasAccess(srv.ac, c)
query := ngmodels.ListAlertRulesQuery{ query := ngmodels.ListAlertRulesQuery{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
NamespaceUIDs: folderUIDs, NamespaceUIDs: folderUIDs,
DashboardUID: dashboardUID, DashboardUID: dashboardUID,
PanelID: panelID, PanelID: panelID,

View File

@ -70,7 +70,7 @@ func (srv RulerSrv) ExportRules(c *contextmodel.ReqContext) response.Response {
) )
} }
rulesGroup, err := srv.getRuleGroupWithFolderTitle(c, ngmodels.AlertRuleGroupKey{ rulesGroup, err := srv.getRuleGroupWithFolderTitle(c, ngmodels.AlertRuleGroupKey{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
NamespaceUID: folderUIDs[0], NamespaceUID: folderUIDs[0],
RuleGroup: group, RuleGroup: group,
}) })
@ -132,12 +132,12 @@ func (srv RulerSrv) getRuleGroupWithFolderTitle(c *contextmodel.ReqContext, rule
// getRulesWithFolderTitleInFolders gets list of folders to which user has access, and then calls searchAuthorizedAlertRules. // getRulesWithFolderTitleInFolders gets list of folders to which user has access, and then calls searchAuthorizedAlertRules.
// If argument folderUIDs is not empty it intersects it with the list of folders available for user and then retrieves rules that are in those folders. // If argument folderUIDs is not empty it intersects it with the list of folders available for user and then retrieves rules that are in those folders.
func (srv RulerSrv) getRulesWithFolderTitleInFolders(c *contextmodel.ReqContext, folderUIDs []string) ([]ngmodels.AlertRuleGroupWithFolderTitle, error) { func (srv RulerSrv) getRulesWithFolderTitleInFolders(c *contextmodel.ReqContext, folderUIDs []string) ([]ngmodels.AlertRuleGroupWithFolderTitle, error) {
folders, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.OrgID, c.SignedInUser) folders, err := srv.store.GetUserVisibleNamespaces(c.Req.Context(), c.SignedInUser.GetOrgID(), c.SignedInUser)
if err != nil { if err != nil {
return nil, err return nil, err
} }
query := ngmodels.ListAlertRulesQuery{ query := ngmodels.ListAlertRulesQuery{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
NamespaceUIDs: nil, NamespaceUIDs: nil,
} }
if len(folderUIDs) > 0 { if len(folderUIDs) > 0 {

View File

@ -41,7 +41,7 @@ func (srv *HistorySrv) RouteQueryStateHistory(c *contextmodel.ReqContext) respon
query := models.HistoryQuery{ query := models.HistoryQuery{
RuleUID: ruleUID, RuleUID: ruleUID,
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
DashboardUID: dashUID, DashboardUID: dashUID,
PanelID: panelID, PanelID: panelID,
SignedInUser: c.SignedInUser, SignedInUser: c.SignedInUser,

View File

@ -10,9 +10,10 @@ import (
"github.com/benbjohnson/clock" "github.com/benbjohnson/clock"
"github.com/grafana/alerting/models" "github.com/grafana/alerting/models"
"github.com/grafana/grafana-plugin-sdk-go/data"
amv2 "github.com/prometheus/alertmanager/api/v2/models" amv2 "github.com/prometheus/alertmanager/api/v2/models"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/api/response" "github.com/grafana/grafana/pkg/api/response"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
@ -51,9 +52,9 @@ func (srv TestingApiSrv) RouteTestGrafanaRuleConfig(c *contextmodel.ReqContext,
&body.Rule, &body.Rule,
body.RuleGroup, body.RuleGroup,
srv.cfg.BaseInterval, srv.cfg.BaseInterval,
c.OrgID, c.SignedInUser.GetOrgID(),
&folder.Folder{ &folder.Folder{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
UID: body.NamespaceUID, UID: body.NamespaceUID,
Title: body.NamespaceTitle, Title: body.NamespaceTitle,
}, },
@ -226,7 +227,7 @@ func (srv TestingApiSrv) BacktestAlertRule(c *contextmodel.ReqContext, cmd apimo
Title: cmd.Title, Title: cmd.Title,
// prefix backtesting- is to distinguish between executions of regular rule and backtesting in logs (like expression engine, evaluator, state manager etc) // prefix backtesting- is to distinguish between executions of regular rule and backtesting in logs (like expression engine, evaluator, state manager etc)
UID: "backtesting-" + util.GenerateShortUID(), UID: "backtesting-" + util.GenerateShortUID(),
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
Condition: cmd.Condition, Condition: cmd.Condition,
Data: queries, Data: queries,
IntervalSeconds: intervalSeconds, IntervalSeconds: intervalSeconds,

View File

@ -101,7 +101,7 @@ func (api *Api) ListPublicDashboards(c *contextmodel.ReqContext) response.Respon
} }
resp, err := api.PublicDashboardService.FindAllWithPagination(c.Req.Context(), &PublicDashboardListQuery{ resp, err := api.PublicDashboardService.FindAllWithPagination(c.Req.Context(), &PublicDashboardListQuery{
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
Query: c.Query("query"), Query: c.Query("query"),
Page: page, Page: page,
Limit: perPage, Limit: perPage,
@ -123,7 +123,7 @@ func (api *Api) GetPublicDashboard(c *contextmodel.ReqContext) response.Response
return response.Err(ErrPublicDashboardIdentifierNotSet.Errorf("GetPublicDashboard: no dashboard Uid for public dashboard specified")) return response.Err(ErrPublicDashboardIdentifierNotSet.Errorf("GetPublicDashboard: no dashboard Uid for public dashboard specified"))
} }
pd, err := api.PublicDashboardService.FindByDashboardUid(c.Req.Context(), c.OrgID, dashboardUid) pd, err := api.PublicDashboardService.FindByDashboardUid(c.Req.Context(), c.SignedInUser.GetOrgID(), dashboardUid)
if err != nil { if err != nil {
return response.Err(err) return response.Err(err)
} }
@ -164,7 +164,7 @@ func (api *Api) CreatePublicDashboard(c *contextmodel.ReqContext) response.Respo
// Always set the orgID and userID from the session // Always set the orgID and userID from the session
dto := &SavePublicDashboardDTO{ dto := &SavePublicDashboardDTO{
UserId: c.UserID, UserId: c.UserID,
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
DashboardUid: dashboardUid, DashboardUid: dashboardUid,
PublicDashboard: pdDTO, PublicDashboard: pdDTO,
} }
@ -201,7 +201,7 @@ func (api *Api) UpdatePublicDashboard(c *contextmodel.ReqContext) response.Respo
dto := SavePublicDashboardDTO{ dto := SavePublicDashboardDTO{
Uid: uid, Uid: uid,
UserId: c.UserID, UserId: c.UserID,
OrgID: c.OrgID, OrgID: c.SignedInUser.GetOrgID(),
DashboardUid: dashboardUid, DashboardUid: dashboardUid,
PublicDashboard: pdDTO, PublicDashboard: pdDTO,
} }

View File

@ -84,7 +84,7 @@ func (s *service) QuotaReached(c *contextmodel.ReqContext, targetSrv quota.Targe
params := &quota.ScopeParameters{} params := &quota.ScopeParameters{}
if c.IsSignedIn { if c.IsSignedIn {
params.OrgID = c.OrgID params.OrgID = c.SignedInUser.GetOrgID()
params.UserID = c.UserID params.UserID = c.UserID
} }
return s.CheckQuotaReached(c.Req.Context(), targetSrv, params) return s.CheckQuotaReached(c.Req.Context(), targetSrv, params)

View File

@ -5,9 +5,10 @@ import (
"errors" "errors"
"io" "io"
"github.com/prometheus/client_golang/prometheus"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/prometheus/client_golang/prometheus"
"github.com/grafana/grafana/pkg/api/response" "github.com/grafana/grafana/pkg/api/response"
"github.com/grafana/grafana/pkg/api/routing" "github.com/grafana/grafana/pkg/api/routing"
@ -32,7 +33,7 @@ func (s *searchHTTPService) RegisterHTTPRoutes(storageRoute routing.RouteRegiste
} }
func (s *searchHTTPService) doQuery(c *contextmodel.ReqContext) response.Response { func (s *searchHTTPService) doQuery(c *contextmodel.ReqContext) response.Response {
searchReadinessCheckResp := s.search.IsReady(c.Req.Context(), c.OrgID) searchReadinessCheckResp := s.search.IsReady(c.Req.Context(), c.SignedInUser.GetOrgID())
if !searchReadinessCheckResp.IsReady { if !searchReadinessCheckResp.IsReady {
dashboardSearchNotServedRequestsCounter.With(prometheus.Labels{ dashboardSearchNotServedRequestsCounter.With(prometheus.Labels{
"reason": searchReadinessCheckResp.Reason, "reason": searchReadinessCheckResp.Reason,
@ -57,7 +58,7 @@ func (s *searchHTTPService) doQuery(c *contextmodel.ReqContext) response.Respons
return response.Error(400, "error parsing body", err) return response.Error(400, "error parsing body", err)
} }
resp := s.search.doDashboardQuery(c.Req.Context(), c.SignedInUser, c.OrgID, *query) resp := s.search.doDashboardQuery(c.Req.Context(), c.SignedInUser, c.SignedInUser.GetOrgID(), *query)
if resp.Error != nil { if resp.Error != nil {
return response.Error(500, "error handling search request", resp.Error) return response.Error(500, "error handling search request", resp.Error)

View File

@ -70,7 +70,7 @@ func (s *httpEntityStore) getGRNFromRequest(c *contextmodel.ReqContext) (*grn.GR
} }
} }
return &grn.GRN{ return &grn.GRN{
TenantID: c.OrgID, TenantID: c.SignedInUser.GetOrgID(),
ResourceKind: params[":kind"], ResourceKind: params[":kind"],
ResourceIdentifier: params[":uid"], ResourceIdentifier: params[":uid"],
}, params, nil }, params, nil
@ -267,7 +267,7 @@ func (s *httpEntityStore) doUpload(c *contextmodel.ReqContext) response.Response
grn := &grn.GRN{ grn := &grn.GRN{
ResourceIdentifier: uid, ResourceIdentifier: uid,
ResourceKind: kind.ID, ResourceKind: kind.ID,
TenantID: c.OrgID, TenantID: c.SignedInUser.GetOrgID(),
} }
if !overwriteExistingFile { if !overwriteExistingFile {

View File

@ -272,7 +272,7 @@ func (s *standardStorageService) list(c *contextmodel.ReqContext) response.Respo
func (s *standardStorageService) getConfig(c *contextmodel.ReqContext) response.Response { func (s *standardStorageService) getConfig(c *contextmodel.ReqContext) response.Response {
roots := make([]RootStorageMeta, 0) roots := make([]RootStorageMeta, 0)
orgId := c.OrgID orgId := c.SignedInUser.GetOrgID()
t := s.tree t := s.tree
t.assureOrgIsInitialized(orgId) t.assureOrgIsInitialized(orgId)