Example #1
0
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)
		}
	}
}
Example #2
0
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
}