filter.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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, conf.URLFor("AccountController.Login") + "?url=" + url.PathEscape(conf.BaseUrl + 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. beego.InsertFilter("/manage/*", beego.BeforeRouter,FilterUser)
  33. var FinishRouter = func(ctx *context.Context) {
  34. ctx.ResponseWriter.Header().Add("MinDoc-Version", conf.VERSION)
  35. ctx.ResponseWriter.Header().Add("MinDoc-Site", "https://www.iminho.me")
  36. }
  37. beego.InsertFilter("/*", beego.BeforeRouter, FinishRouter, false)
  38. }