func RequireAdmin(h wombat.Handler) wombat.Handler { return func(ctx wombat.Context) { if ctx.User.IsAnonymous() { ctx.Redirect(config.SigninURL) } else if !ctx.User.IsAdmin() { if v := views.Get(fmt.Sprintf("%s%s", wombat.ERR_TMPL, "401.html")); v != nil { v.Execute(ctx.Context, data.New(ctx)) } else { ctx.HttpError(http.StatusUnauthorized) } } else { h(ctx) } } }
func Error(ctx dingo.Context, status int) bool { // default to 500 if in invalid status is given if status < 100 || status > 505 { status = 500 // TODO Log an error } r := ctx.Response r.WriteHeader(status) if request.IsTextHTML(ctx.Request) { // write matching error template n := fmt.Sprintf("%s%d.html", ERR_TMPL, status) if v := views.Get(n); v != nil { v.Execute(ctx, nil) } else { m := []byte(http.StatusText(status)) r.Write(m) } } return true }