summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2017-05-01 01:18:30 -0500
committerSteve Manuel <nilslice@gmail.com>2017-05-01 01:18:30 -0500
commitd991bfd3e75a08ad38710975a2747bae197e5a4e (patch)
tree8f3571c6a63b4b5a73aae83064b6cb1a8c51f00a
parent85a3a3a7f37b7c459dac824ea837bcb1f5a12d4c (diff)
adding admin action hooks to handlers and hookable interface
-rw-r--r--system/admin/handlers.go40
-rw-r--r--system/item/item.go59
2 files changed, 99 insertions, 0 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index 286b0a7..23c7e50 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -1913,6 +1913,20 @@ func editHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ if cid == "-1" {
+ err = hook.BeforeAdminCreate(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminCreate method in editHandler for:", t, err)
+ return
+ }
+ } else {
+ err = hook.BeforeAdminUpdate(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ }
+
err = hook.BeforeSave(res, req)
if err != nil {
log.Println("Error running BeforeSave method in editHandler for:", t, err)
@@ -1942,6 +1956,20 @@ func editHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ if cid == "-1" {
+ err = hook.AfterAdminCreate(res, req)
+ if err != nil {
+ log.Println("Error running AfterAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ } else {
+ err = hook.AfterAdminUpdate(res, req)
+ if err != nil {
+ log.Println("Error running AfterAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ }
+
scheme := req.URL.Scheme
host := req.URL.Host
path := req.URL.Path
@@ -2029,6 +2057,12 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) {
}
}
+ err = hook.BeforeAdminDelete(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminDelete method in deleteHandler for:", t, err)
+ return
+ }
+
err = hook.BeforeDelete(res, req)
if err != nil {
log.Println("Error running BeforeDelete method in deleteHandler for:", t, err)
@@ -2048,6 +2082,12 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ err = hook.AfterAdminDelete(res, req)
+ if err != nil {
+ log.Println("Error running AfterDelete method in deleteHandler for:", t, err)
+ return
+ }
+
if reject == "true" {
err = hook.AfterReject(res, req)
if err != nil {
diff --git a/system/item/item.go b/system/item/item.go
index 961516a..f2e8209 100644
--- a/system/item/item.go
+++ b/system/item/item.go
@@ -56,6 +56,15 @@ type Hookable interface {
BeforeAPIDelete(http.ResponseWriter, *http.Request) error
AfterAPIDelete(http.ResponseWriter, *http.Request) error
+ BeforeAdminCreate(http.ResponseWriter, *http.Request) error
+ AfterAdminCreate(http.ResponseWriter, *http.Request) error
+
+ BeforeAdminUpdate(http.ResponseWriter, *http.Request) error
+ AfterAdminUpdate(http.ResponseWriter, *http.Request) error
+
+ BeforeAdminDelete(http.ResponseWriter, *http.Request) error
+ AfterAdminDelete(http.ResponseWriter, *http.Request) error
+
BeforeSave(http.ResponseWriter, *http.Request) error
AfterSave(http.ResponseWriter, *http.Request) error
@@ -180,6 +189,36 @@ func (i Item) AfterAPIDelete(res http.ResponseWriter, req *http.Request) error {
return nil
}
+// BeforeAdminCreate is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) BeforeAdminCreate(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// AfterAdminCreate is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) AfterAdminCreate(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// BeforeAdminUpdate is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) BeforeAdminUpdate(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// AfterAdminUpdate is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) AfterAdminUpdate(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// BeforeAdminDelete is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) BeforeAdminDelete(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// AfterAdminDelete is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) AfterAdminDelete(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
// BeforeSave is a no-op to ensure structs which embed Item implement Hookable
func (i Item) BeforeSave(res http.ResponseWriter, req *http.Request) error {
return nil
@@ -220,6 +259,26 @@ func (i Item) AfterReject(res http.ResponseWriter, req *http.Request) error {
return nil
}
+// BeforeEnable is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) BeforeEnable(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// AfterEnable is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) AfterEnable(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// BeforeDisable is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) BeforeDisable(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
+// AfterDisable is a no-op to ensure structs which embed Item implement Hookable
+func (i Item) AfterDisable(res http.ResponseWriter, req *http.Request) error {
+ return nil
+}
+
// SearchMapping returns a default implementation of a Bleve IndexMappingImpl
// partially implements search.Searchable
func (i Item) SearchMapping() (*mapping.IndexMappingImpl, error) {