diff options
author | Steve Manuel <nilslice@gmail.com> | 2017-05-01 01:18:30 -0500 |
---|---|---|
committer | Steve Manuel <nilslice@gmail.com> | 2017-05-01 01:18:30 -0500 |
commit | d991bfd3e75a08ad38710975a2747bae197e5a4e (patch) | |
tree | 8f3571c6a63b4b5a73aae83064b6cb1a8c51f00a | |
parent | 85a3a3a7f37b7c459dac824ea837bcb1f5a12d4c (diff) |
adding admin action hooks to handlers and hookable interface
-rw-r--r-- | system/admin/handlers.go | 40 | ||||
-rw-r--r-- | system/item/item.go | 59 |
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) { |