admin: add routes listing all sources and domains
This commit is contained in:
parent
8ea5b0d235
commit
fe57f5e4f9
|
@ -54,6 +54,7 @@ func init() {
|
||||||
router.PUT("/api/users/:userid/domains/:domain", api.ApiHandler(userHandler(domainHandler(updateUserDomain))))
|
router.PUT("/api/users/:userid/domains/:domain", api.ApiHandler(userHandler(domainHandler(updateUserDomain))))
|
||||||
router.DELETE("/api/users/:userid/domains/:domain", api.ApiHandler(userHandler(deleteUserDomain)))
|
router.DELETE("/api/users/:userid/domains/:domain", api.ApiHandler(userHandler(deleteUserDomain)))
|
||||||
|
|
||||||
|
router.GET("/api/domains", api.ApiHandler(getAllDomains))
|
||||||
router.DELETE("/api/domains", api.ApiHandler(clearDomains))
|
router.DELETE("/api/domains", api.ApiHandler(clearDomains))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,6 +99,25 @@ func getUserDomain(_ *config.Options, domain *happydns.Domain, _ httprouter.Para
|
||||||
return api.NewAPIResponse(domain, nil)
|
return api.NewAPIResponse(domain, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getAllDomains(_ *config.Options, _ httprouter.Params, _ io.Reader) api.Response {
|
||||||
|
var domains happydns.Domains
|
||||||
|
|
||||||
|
users, err := storage.MainStore.GetUsers()
|
||||||
|
if err != nil {
|
||||||
|
return api.NewAPIResponse(nil, fmt.Errorf("Unable to retrieve users list: %w", err))
|
||||||
|
}
|
||||||
|
for _, user := range users {
|
||||||
|
usersDomains, err := storage.MainStore.GetDomains(user)
|
||||||
|
if err != nil {
|
||||||
|
return api.NewAPIResponse(nil, fmt.Errorf("Unable to retrieve %s's domains: %w", user.Email, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
domains = append(domains, usersDomains...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return api.NewAPIResponse(domains, nil)
|
||||||
|
}
|
||||||
|
|
||||||
func updateUserDomain(_ *config.Options, domain *happydns.Domain, _ httprouter.Params, body io.Reader) api.Response {
|
func updateUserDomain(_ *config.Options, domain *happydns.Domain, _ httprouter.Params, body io.Reader) api.Response {
|
||||||
ud := &happydns.Domain{}
|
ud := &happydns.Domain{}
|
||||||
err := json.NewDecoder(body).Decode(&ud)
|
err := json.NewDecoder(body).Decode(&ud)
|
||||||
|
|
|
@ -53,6 +53,7 @@ func init() {
|
||||||
router.PUT("/api/users/:userid/sources/:source", api.ApiHandler(userHandler(sourceHandler(updateUserSource))))
|
router.PUT("/api/users/:userid/sources/:source", api.ApiHandler(userHandler(sourceHandler(updateUserSource))))
|
||||||
router.DELETE("/api/users/:userid/sources/:source", api.ApiHandler(userHandler(sourceMetaHandler(deleteUserSource))))
|
router.DELETE("/api/users/:userid/sources/:source", api.ApiHandler(userHandler(sourceMetaHandler(deleteUserSource))))
|
||||||
|
|
||||||
|
router.GET("/api/sources", api.ApiHandler(getAllSources))
|
||||||
router.DELETE("/api/sources", api.ApiHandler(clearSources))
|
router.DELETE("/api/sources", api.ApiHandler(clearSources))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,6 +107,25 @@ func getUserSource(_ *config.Options, source *happydns.SourceCombined, _ httprou
|
||||||
return api.NewAPIResponse(source, nil)
|
return api.NewAPIResponse(source, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getAllSources(_ *config.Options, _ httprouter.Params, _ io.Reader) api.Response {
|
||||||
|
var sources []happydns.SourceMeta
|
||||||
|
|
||||||
|
users, err := storage.MainStore.GetUsers()
|
||||||
|
if err != nil {
|
||||||
|
return api.NewAPIResponse(nil, fmt.Errorf("Unable to retrieve users list: %w", err))
|
||||||
|
}
|
||||||
|
for _, user := range users {
|
||||||
|
usersSources, err := storage.MainStore.GetSourceMetas(user)
|
||||||
|
if err != nil {
|
||||||
|
return api.NewAPIResponse(nil, fmt.Errorf("Unable to retrieve %s's sources: %w", user.Email, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
sources = append(sources, usersSources...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return api.NewAPIResponse(sources, nil)
|
||||||
|
}
|
||||||
|
|
||||||
func updateUserSource(_ *config.Options, source *happydns.SourceCombined, _ httprouter.Params, body io.Reader) api.Response {
|
func updateUserSource(_ *config.Options, source *happydns.SourceCombined, _ httprouter.Params, body io.Reader) api.Response {
|
||||||
us, err := api.DecodeSource(body)
|
us, err := api.DecodeSource(body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user