|
@@ -149,12 +149,14 @@ func Handlers(models []interface{}) *mux.Router {
|
|
|
|
|
|
r.Handle("/", jwtCookie.Handler(recoverHandler(homeHandler())))
|
|
|
|
|
|
- // Generate model handlers
|
|
|
+ // Generate CRUD handlers
|
|
|
|
|
|
for _, model := range models {
|
|
|
generateHandler(r, model)
|
|
|
}
|
|
|
|
|
|
+ r.Handle("/documents/{id}/execute", jwtCookie.Handler(recoverHandler(executeHandler()))).Methods("GET")
|
|
|
+
|
|
|
// Token handling
|
|
|
|
|
|
r.Handle("/get_token", tokenHandler())
|
|
@@ -306,6 +308,23 @@ func modelHandler(model string, pattern PathPattern) http.Handler {
|
|
|
return http.HandlerFunc(fn)
|
|
|
}
|
|
|
|
|
|
+func executeHandler() http.Handler {
|
|
|
+ fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
+ switch r.Method {
|
|
|
+ case "GET":
|
|
|
+ get(w, r, model, pattern)
|
|
|
+
|
|
|
+ case "POST":
|
|
|
+ post(w, r, model, pattern)
|
|
|
+
|
|
|
+ case "DELETE":
|
|
|
+ delete(w, r, model, pattern)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return http.HandlerFunc(fn)
|
|
|
+}
|
|
|
+
|
|
|
func homeHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
http.Redirect(w, r, "/teachers?format=html&tpl_layout=teachers&tpl_content=teachers", http.StatusSeeOther)
|