Connor McCutcheon
/ Skykit
view.go
go
package skykit
import "net/http"
type AccessCheck func(*Application, http.ResponseWriter, *http.Request) bool
type View struct {
	app   *Application
	name  string
	check AccessCheck
}
func (app *Application) Serve(name string, check AccessCheck) *View {
	return &View{app: app, name: name, check: check}
}
func (v *View) Render(w http.ResponseWriter, r *http.Request, data any) {
	v.app.Render(w, r, v.name, data)
}
func (v *View) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	if v.check == nil {
		v.app.Render(w, r, v.name, nil)
		return
	}
	if !v.check(v.app, w, r) {
		w.Write([]byte("Access Denied"))
		return
	}
	v.app.Render(w, r, v.name, nil)
}
No comments yet.