| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package models
- import (
- "strings"
- "github.com/grafana/grafana/pkg/infra/log"
- "github.com/grafana/grafana/pkg/setting"
- "github.com/prometheus/client_golang/prometheus"
- "gopkg.in/macaron.v1"
- )
- type ReqContext struct {
- *macaron.Context
- *SignedInUser
- UserToken *UserToken
- IsSignedIn bool
- IsRenderCall bool
- AllowAnonymous bool
- SkipCache bool
- Logger log.Logger
- }
- // Handle handles and logs error by given status.
- func (ctx *ReqContext) Handle(status int, title string, err error) {
- if err != nil {
- ctx.Logger.Error(title, "error", err)
- if setting.Env != setting.PROD {
- ctx.Data["ErrorMsg"] = err
- }
- }
- ctx.Data["Title"] = title
- ctx.Data["AppSubUrl"] = setting.AppSubUrl
- ctx.Data["Theme"] = "dark"
- ctx.HTML(status, setting.ERR_TEMPLATE_NAME)
- }
- func (ctx *ReqContext) JsonOK(message string) {
- resp := make(map[string]interface{})
- resp["message"] = message
- ctx.JSON(200, resp)
- }
- func (ctx *ReqContext) IsApiRequest() bool {
- return strings.HasPrefix(ctx.Req.URL.Path, "/api")
- }
- func (ctx *ReqContext) JsonApiErr(status int, message string, err error) {
- resp := make(map[string]interface{})
- if err != nil {
- ctx.Logger.Error(message, "error", err)
- if setting.Env != setting.PROD {
- resp["error"] = err.Error()
- }
- }
- switch status {
- case 404:
- resp["message"] = "Not Found"
- case 500:
- resp["message"] = "Internal Server Error"
- }
- if message != "" {
- resp["message"] = message
- }
- ctx.JSON(status, resp)
- }
- func (ctx *ReqContext) HasUserRole(role RoleType) bool {
- return ctx.OrgRole.Includes(role)
- }
- func (ctx *ReqContext) HasHelpFlag(flag HelpFlags1) bool {
- return ctx.HelpFlags1.HasFlag(flag)
- }
- func (ctx *ReqContext) TimeRequest(timer prometheus.Summary) {
- ctx.Data["perfmon.timer"] = timer
- }
|