У меня проблема с получением сеанса для ограничения навигации пользователя. В шаблоне я использую это.
<ul>
{{if UserHasPermission `page_report`}}
<li data-menu="staff-report">
<a href="#"><span class="idh-nav-icon"><i class="fas fa-chart-bar"></i></span> Report</a>
</li>
{{end}}
</ul>
В user.go
я создал init ()
func init() {
self := new(UserController)
beego.AddFuncMap("UserHasPermission", self.HasPermission)
}
, и это функция
func (this *UserController) HasPermission(name string) bool {
if name == "" {
return false
}
userSess := this.GetSession("user")
if userSess == nil {
return false
}
userSessMap := userSess.(map[string]interface{})
permissions := userSessMap["permissions"].([]string)
if utils.InSlice(name, permissions) {
return true
}
return false
}
Но затем я получил ошибку
template Execute err: template: chunks/navleft.tpl:21:21: executing "chunks/navleft.tpl" at <UserHasPermission `page_report`>: error calling UserHasPermission: runtime error: invalid memory address or nil pointer dereference
this.GetSession("user")
определенно виноват, но я не смог его отследить.
Кто-нибудь знает, что пошло не так? Спасибо!