mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
|
|
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginsettings"
|
|
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore"
|
|
"github.com/grafana/grafana/pkg/web"
|
|
)
|
|
|
|
func checkAppEnabled(pluginStore pluginstore.Store, pluginSettings pluginsettings.Service) func(c *contextmodel.ReqContext) {
|
|
return func(c *contextmodel.ReqContext) {
|
|
pluginID := web.Params(c.Req)[":pluginId"]
|
|
p, exists := pluginStore.Plugin(c.Req.Context(), pluginID)
|
|
if !exists {
|
|
c.JsonApiErr(http.StatusNotFound, "Plugin not found", nil)
|
|
return
|
|
}
|
|
if !p.IsApp() {
|
|
return
|
|
}
|
|
|
|
ps, err := pluginSettings.GetPluginSettingByPluginID(c.Req.Context(), &pluginsettings.GetByPluginIDArgs{
|
|
OrgID: c.OrgID,
|
|
PluginID: pluginID,
|
|
})
|
|
if err != nil {
|
|
if errors.Is(err, pluginsettings.ErrPluginSettingNotFound) {
|
|
// If the plugin is auto enabled, we don't want to return an error because auto enabling allows us
|
|
// to enable plugins that are not explicitly configured.
|
|
if p.AutoEnabled {
|
|
return
|
|
}
|
|
|
|
c.JsonApiErr(http.StatusNotFound, "Plugin setting not found", nil)
|
|
return
|
|
}
|
|
c.JsonApiErr(http.StatusInternalServerError, "Failed to get plugin settings", err)
|
|
return
|
|
}
|
|
|
|
if !ps.Enabled {
|
|
c.JsonApiErr(http.StatusNotFound, "Plugin is not enabled", nil)
|
|
return
|
|
}
|
|
}
|
|
}
|