代码拉取完成,页面将自动刷新
同步操作将从 go-admin/go-admin 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package beego
import (
"bytes"
"errors"
"github.com/astaxie/beego"
"github.com/astaxie/beego/context"
gctx "github.com/chenhg5/go-admin/context"
"github.com/chenhg5/go-admin/modules/auth"
"github.com/chenhg5/go-admin/modules/config"
"github.com/chenhg5/go-admin/modules/menu"
"github.com/chenhg5/go-admin/plugins"
"github.com/chenhg5/go-admin/template"
"github.com/chenhg5/go-admin/template/types"
template2 "html/template"
"net/http"
"strings"
"github.com/chenhg5/go-admin/engine"
)
type Beego struct {
}
func init() {
engine.Register(new(Beego))
}
func (bee *Beego) Use(router interface{}, plugin []plugins.Plugin) error {
var (
eng *beego.App
ok bool
)
if eng, ok = router.(*beego.App); !ok {
return errors.New("wrong parameter")
}
for _, plug := range plugin {
var plugCopy plugins.Plugin
plugCopy = plug
for _, req := range plug.GetRequest() {
eng.Handlers.AddMethod(req.Method, req.URL, func(c *context.Context) {
for key, value := range c.Input.Params() {
if c.Request.URL.RawQuery == "" {
c.Request.URL.RawQuery += strings.Replace(key, ":", "", -1) + "=" + value
} else {
c.Request.URL.RawQuery += "&" + strings.Replace(key, ":", "", -1) + "=" + value
}
}
ctx := gctx.NewContext(c.Request)
plugCopy.GetHandler(c.Request.URL.Path, strings.ToLower(c.Request.Method))(ctx)
for key, head := range ctx.Response.Header {
c.ResponseWriter.Header().Add(key, head[0])
}
c.ResponseWriter.WriteHeader(ctx.Response.StatusCode)
if ctx.Response.Body != nil {
buf := new(bytes.Buffer)
buf.ReadFrom(ctx.Response.Body)
c.WriteString(buf.String())
}
})
}
}
return nil
}
func (bee *Beego) Content(contextInterface interface{}, c types.GetPanel) {
var (
ctx *context.Context
ok bool
)
if ctx, ok = contextInterface.(*context.Context); !ok {
panic("wrong parameter")
}
globalConfig := config.Get()
sesKey := ctx.GetCookie("go_admin_session")
if sesKey == "" {
ctx.Redirect(http.StatusFound, "/"+globalConfig.PREFIX+"/login")
return
}
userId, ok := auth.Driver.Load(sesKey)["user_id"]
if !ok {
ctx.Redirect(http.StatusFound, "/"+globalConfig.PREFIX+"/login")
return
}
user, ok := auth.GetCurUserById(userId.(string))
if !ok {
ctx.Redirect(http.StatusFound, "/"+globalConfig.PREFIX+"/login")
return
}
var panel types.Panel
if !auth.CheckPermissions(user, ctx.Request.URL.Path, ctx.Request.Method) {
alert := template.Get(globalConfig.THEME).Alert().SetTitle(template2.HTML(`<i class="icon fa fa-warning"></i> Error!`)).
SetTheme("warning").SetContent(template2.HTML("没有权限")).GetContent()
panel = types.Panel{
Content: alert,
Description: "Error",
Title: "Error",
}
} else {
panel = c()
}
tmpl, tmplName := template.Get(globalConfig.THEME).GetTemplate(ctx.Request.Header.Get("X-PJAX") == "true")
ctx.ResponseWriter.Header().Add("Content-Type", "text/html; charset=utf-8")
buf := new(bytes.Buffer)
tmpl.ExecuteTemplate(buf, tmplName, types.Page{
User: user,
Menu: menu.GetGlobalMenu(user),
System: types.SystemInfo{
"0.0.1",
},
Panel: panel,
AssertRootUrl: "/" + globalConfig.PREFIX,
Title: globalConfig.TITLE,
Logo: globalConfig.LOGO,
MiniLogo: globalConfig.MINILOGO,
})
ctx.WriteString(buf.String())
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。