package controllers import ( "hudongzhuanjia/libs/jwt" "hudongzhuanjia/utils/define" ) //执行路由方法前校验登陆态,并且解析page、pageSize type AuthorCtl struct { BaseCtl claims *jwt.JwtClaims } 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(¶m) t.CheckErr(err) if tokenStr, ok := param[define.TOKEN]; ok { token = tokenStr.(string) } } claims, err := jwt.ParseAccessToken(token) t.CheckErr(err) 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) MustGetName() string { return t.claims.Username } func (t *AuthorCtl) MustGetCustomerId() int64 { 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 : 主账号 子账号 录入人员 用户