package allowances import ( "encoding/json" "log" "net/http" ) const sessionName = "allowances" type authed func(w http.ResponseWriter, r *http.Request, uid string) error func (a *Allowances) protected(handler authed) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { session, err := a.store.Get(r, sessionName) if err != nil { log.Printf("%+v", err) http.Error(w, err.Error(), http.StatusBadRequest) return } u, ok := session.Values["uuid"] if !ok { http.Redirect( w, r, prefix["login"], http.StatusTemporaryRedirect, ) return } err = handler(w, r, u.(string)) if err != nil { json.NewEncoder(w).Encode(NewFailure(err.Error())) return } } }