Files
2019-08-08 17:13:34 +08:00

67 lines
1.8 KiB
Go

package controllers
import (
"anytunnel/at-admin/app/models"
"strings"
"time"
)
type JSONResponse struct {
Code int `json:"code"`
Message interface{} `json:"message"`
Data interface{} `json:"data"`
Redirect map[string]interface{} `json:"redirect"`
}
type BaseAdminController struct {
BaseController
loginUser map[string]string
}
func (this *BaseAdminController) Prepare() {
if !this.isLogin() {
this.Redirect("/login/index.html", 302)
this.StopRun()
}
user := this.GetSession("author").(map[string]string)
this.Data["loginUser"] = user
this.loginUser = user
this.checkAccess()
this.Data["TimeNowYear"] = time.Now().Format("2006")
this.Layout = "layout/default.html"
}
func (this *BaseAdminController) checkAccess() {
controllerName, actionName := this.GetControllerAndAction()
controllerName = strings.ToLower(controllerName[0 : len(controllerName)-10])
actionName = strings.ToLower(actionName)
if (controllerName == "main" && actionName == "index") || controllerName == "main" && actionName == "default" {
return
}
//检查权限
if "1" != this.loginUser["user_id"] {
privilege := models.Privilege{}
_, _, controllers, err := privilege.GetTypedPrivileges(this.loginUser["user_id"], "-1")
if err != nil {
this.jsonError(err.Error(), "")
}
found := false
for _, c := range controllers {
action := strings.ToLower(c["action"])
if strings.Contains(action, ".") {
action = action[:strings.LastIndex(action, ".")]
}
if controllerName == strings.ToLower(c["controller"]) && actionName == action {
found = true
break
}
}
if !found {
if this.IsAjax() {
this.jsonError("您无权限进行此操作")
} else {
this.viewError("您无权限进行此操作")
}
}
}
}