互动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.6 KiB

package controllers
import (
"hudongzhuanjia/libs/jwt"
"hudongzhuanjia/utils/code"
"hudongzhuanjia/utils/define"
)
//执行路由方法前校验登陆态,并且解析page、pageSize
type AuthorCtl struct {
BaseCtl
claims *jwt.Claims
}
func (t *AuthorCtl) Prepare() {
t.BaseCtl.Prepare()
token := ""
if tokenStr, ok := t.Request.SESSION[define.TOKEN]; ok {
token = tokenStr
} else if tokenStr, ok = t.Request.REQUEST[define.TOKEN]; ok {
token = tokenStr
} else if tokenStr, ok = t.Request.HEADER[define.TOKEN]; ok {
token = tokenStr
} else {
var param = make(map[string]interface{}, 0)
err := t.RequestToStruct(&param)
t.CheckErr(err)
if tokenStr, ok := param[define.TOKEN]; ok {
token = tokenStr.(string)
}
}
claims, err := jwt.ParseAccessToken(token)
if err != nil {
t.ERROR("token 失效", code.MSG_ERR_Authority)
}
t.claims = claims
// 最后多地区:子账号的area_id = area_id, 但是主账号的area_id 需要通过activity_id 进行获取
}
func (t *AuthorCtl) MustGetUID() int64 {
return t.claims.AccountId
}
// token 应该携带某个主活动i
func (t *AuthorCtl) MustGetActivityId() int64 {
return t.MustGetInt64("activity_id")
}
func (t *AuthorCtl) MustGetCustomerId() int64 {
if t.claims.CustomerId == 0 {
return t.MustGetInt64("customer_id")
}
return t.claims.CustomerId
}
func (t *AuthorCtl) MustGetCustomerPid() int64 {
return t.claims.CustomerPid
}
func (t *AuthorCtl) MustGetAreaId() int64 {
return t.claims.AreaId
}
// 对各种角色进行不同的接口权限限定
// role: main sub entry user : 主账号 子账号 录入人员 用户