filter.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package routers
  2. import (
  3. "encoding/json"
  4. "github.com/astaxie/beego"
  5. "github.com/astaxie/beego/context"
  6. "github.com/lifei6671/mindoc/conf"
  7. "github.com/lifei6671/mindoc/models"
  8. "net/url"
  9. )
  10. func init() {
  11. var FilterUser = func(ctx *context.Context) {
  12. _, ok := ctx.Input.Session(conf.LoginSessionName).(models.Member)
  13. if !ok {
  14. if ctx.Input.IsAjax() {
  15. jsonData := make(map[string]interface{}, 3)
  16. jsonData["errcode"] = 403
  17. jsonData["message"] = "请登录后再操作"
  18. returnJSON, _ := json.Marshal(jsonData)
  19. ctx.ResponseWriter.Write(returnJSON)
  20. } else {
  21. ctx.Redirect(302, beego.URLFor("AccountController.Login") + "?url=" + url.PathEscape(ctx.Request.URL.RequestURI()))
  22. }
  23. }
  24. }
  25. beego.InsertFilter("/manager", beego.BeforeRouter, FilterUser)
  26. beego.InsertFilter("/manager/*", beego.BeforeRouter, FilterUser)
  27. beego.InsertFilter("/setting", beego.BeforeRouter, FilterUser)
  28. beego.InsertFilter("/setting/*", beego.BeforeRouter, FilterUser)
  29. beego.InsertFilter("/book", beego.BeforeRouter, FilterUser)
  30. beego.InsertFilter("/book/*", beego.BeforeRouter, FilterUser)
  31. beego.InsertFilter("/api/*", beego.BeforeRouter, FilterUser)
  32. var FinishRouter = func(ctx *context.Context) {
  33. ctx.ResponseWriter.Header().Add("MinDoc-Version", conf.VERSION)
  34. ctx.ResponseWriter.Header().Add("MinDoc-Site", "https://www.iminho.me")
  35. }
  36. beego.InsertFilter("/*", beego.BeforeRouter, FinishRouter, false)
  37. }