140 lines
15 KiB
Go
140 lines
15 KiB
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/julienschmidt/httprouter"
|
|
"github.com/justinas/alice"
|
|
)
|
|
|
|
func (app *application) routes() http.Handler {
|
|
dynamicRouter := httprouter.New()
|
|
|
|
dynamicRouter.NotFound = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
app.notFound(w)
|
|
})
|
|
|
|
dynamicRouter.HandlerFunc(http.MethodGet, routePath("home"), app.home)
|
|
dynamicRouter.HandlerFunc(http.MethodGet, routePath("healthcheck"), app.healthcheck)
|
|
dynamicRouter.HandlerFunc(http.MethodGet, routePath("privacy"), app.privacy)
|
|
dynamicRouter.HandlerFunc(http.MethodGet, routePath("login"), app.signIn)
|
|
dynamicRouter.HandlerFunc(http.MethodPost, routePath("login"), app.signInPost)
|
|
dynamicRouter.HandlerFunc(http.MethodGet, routePath("activate"), app.activateUser)
|
|
dynamicRouter.HandlerFunc(http.MethodPost, routePath("activate"), app.activateUserPost)
|
|
dynamicRouter.Handler(http.MethodPost, routePath("logout"), app.requireAuthentication(http.HandlerFunc(app.signOutPost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("account"), app.requireActivatedUser(http.HandlerFunc(app.account)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("account.profile"), app.requireActivatedUser(http.HandlerFunc(app.accountProfilePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("account.password"), app.requireActivatedUser(http.HandlerFunc(app.accountPasswordPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("account.email"), app.requireActivatedUser(http.HandlerFunc(app.accountEmailPost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("account.email-confirm"), app.requireActivatedUser(http.HandlerFunc(app.accountEmailConfirm)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("account.email-confirm"), app.requireActivatedUser(http.HandlerFunc(app.accountEmailConfirmPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("account.session.delete"), app.requireActivatedUser(http.HandlerFunc(app.accountSessionDeletePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("settings"), app.requireActivatedUser(http.HandlerFunc(app.settings)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("admin"), app.requireAdmin(http.HandlerFunc(app.admin)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.user.invite"), app.requireAdmin(http.HandlerFunc(app.adminUserInvitePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.user.role"), app.requireAdmin(http.HandlerFunc(app.adminUserRolePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.user.delete"), app.requireAdmin(http.HandlerFunc(app.adminUserDeletePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.role.new"), app.requireAdmin(http.HandlerFunc(app.adminRoleCreatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.role.update"), app.requireAdmin(http.HandlerFunc(app.adminRoleUpdatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.role.delete"), app.requireAdmin(http.HandlerFunc(app.adminRoleDeletePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.application-settings"), app.requireAdmin(http.HandlerFunc(app.adminApplicationSettingsPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.test-mail"), app.requireAdmin(http.HandlerFunc(app.adminTestMailPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.species-category.new"), app.requireAdmin(http.HandlerFunc(app.adminSpeciesCategoryCreatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.species-category.edit"), app.requireAdmin(http.HandlerFunc(app.adminSpeciesCategoryUpdatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.species-category.delete"), app.requireAdmin(http.HandlerFunc(app.adminSpeciesCategoryDeletePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.task-priority.new"), app.requireAdmin(http.HandlerFunc(app.adminTaskPriorityCreatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.task-priority.edit"), app.requireAdmin(http.HandlerFunc(app.adminTaskPriorityUpdatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("admin.task-priority.delete"), app.requireAdmin(http.HandlerFunc(app.adminTaskPriorityDeletePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("gardens"), app.requireActivatedUser(http.HandlerFunc(app.gardens)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.new"), app.requireActivatedUser(app.requireApplicationPermission("gardens:create", http.HandlerFunc(app.gardenCreate))))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.new"), app.requireActivatedUser(app.requireApplicationPermission("gardens:create", http.HandlerFunc(app.gardenCreatePost))))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.edit"), app.requireActivatedUser(http.HandlerFunc(app.gardenEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.edit"), app.requireActivatedUser(http.HandlerFunc(app.gardenEditPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.delete"), app.requireActivatedUser(http.HandlerFunc(app.gardenDeletePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.dashboard"), app.requireActivatedUser(http.HandlerFunc(app.gardenDashboard)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.search"), app.requireActivatedUser(http.HandlerFunc(app.gardenSearch)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.journal"), app.requireActivatedUser(http.HandlerFunc(app.journal)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.pinboard"), app.requireActivatedUser(http.HandlerFunc(app.pinboard)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.images"), app.requireActivatedUser(http.HandlerFunc(app.images)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.image.data"), app.requireActivatedUser(http.HandlerFunc(app.imageData)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("journal.new"), app.requireActivatedUser(http.HandlerFunc(app.journalCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("journal.new"), app.requireActivatedUser(http.HandlerFunc(app.journalSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("journal.edit"), app.requireActivatedUser(http.HandlerFunc(app.journalEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("journal.edit"), app.requireActivatedUser(http.HandlerFunc(app.journalSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("journal.delete"), app.requireActivatedUser(http.HandlerFunc(app.journalDelete)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("journal.attachment"), app.requireActivatedUser(http.HandlerFunc(app.journalAttachment)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("pinboard.new"), app.requireActivatedUser(http.HandlerFunc(app.pinboardCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("pinboard.new"), app.requireActivatedUser(http.HandlerFunc(app.pinboardSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("pinboard.edit"), app.requireActivatedUser(http.HandlerFunc(app.pinboardEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("pinboard.edit"), app.requireActivatedUser(http.HandlerFunc(app.pinboardSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("pinboard.delete"), app.requireActivatedUser(http.HandlerFunc(app.pinboardDelete)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("pinboard.attachment"), app.requireActivatedUser(http.HandlerFunc(app.pinboardAttachment)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("garden.members"), app.requireActivatedUser(http.HandlerFunc(app.gardenMembers)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.invite.new"), app.requireActivatedUser(http.HandlerFunc(app.gardenInvitePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.member.role"), app.requireActivatedUser(http.HandlerFunc(app.gardenMemberRolePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.member.delete"), app.requireActivatedUser(http.HandlerFunc(app.gardenMemberDeletePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.member.transfer"), app.requireActivatedUser(http.HandlerFunc(app.gardenOwnershipPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.invite.delete"), app.requireActivatedUser(http.HandlerFunc(app.gardenInviteDeletePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.role.update"), app.requireActivatedUser(http.HandlerFunc(app.gardenRoleSettingsPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.role.new"), app.requireActivatedUser(http.HandlerFunc(app.gardenRoleCreatePost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("garden.role.delete"), app.requireActivatedUser(http.HandlerFunc(app.gardenRoleDeletePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("invite"), app.requireActivatedUser(http.HandlerFunc(app.acceptInvite)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("invite"), app.requireActivatedUser(http.HandlerFunc(app.acceptInvitePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plants"), app.requireActivatedUser(http.HandlerFunc(app.plants)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.new"), app.requireActivatedUser(http.HandlerFunc(app.plantCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.new"), app.requireActivatedUser(http.HandlerFunc(app.plantCreatePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.edit"), app.requireActivatedUser(http.HandlerFunc(app.plantEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.edit"), app.requireActivatedUser(http.HandlerFunc(app.plantEditPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.delete"), app.requireActivatedUser(http.HandlerFunc(app.plantDelete)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.status"), app.requireActivatedUser(http.HandlerFunc(app.plantStatusPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.template-opt-out"), app.requireActivatedUser(http.HandlerFunc(app.plantTemplateOptOutPost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.task-row"), app.requireActivatedUser(http.HandlerFunc(app.plantTaskRow)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.task-row"), app.requireActivatedUser(http.HandlerFunc(app.plantTaskRowPost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.template-tasks"), app.requireActivatedUser(http.HandlerFunc(app.plantTemplateTasks)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.template-task"), app.requireActivatedUser(http.HandlerFunc(app.plantTemplateTaskView)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.location.new"), app.requireActivatedUser(http.HandlerFunc(app.plantLocationCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.location.new"), app.requireActivatedUser(http.HandlerFunc(app.plantLocationSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("plant.location.edit"), app.requireActivatedUser(http.HandlerFunc(app.plantLocationEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.location.edit"), app.requireActivatedUser(http.HandlerFunc(app.plantLocationSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("plant.location.delete"), app.requireActivatedUser(http.HandlerFunc(app.plantLocationDeletePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("locations"), app.requireActivatedUser(http.HandlerFunc(app.locations)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("location.new"), app.requireActivatedUser(http.HandlerFunc(app.locationCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("location.new"), app.requireActivatedUser(http.HandlerFunc(app.locationCreatePost)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("location.view"), app.requireActivatedUser(http.HandlerFunc(app.locationEdit)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("location.edit"), app.requireActivatedUser(http.HandlerFunc(app.locationEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("location.edit"), app.requireActivatedUser(http.HandlerFunc(app.locationEditPost)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("location.delete"), app.requireActivatedUser(http.HandlerFunc(app.locationDelete)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("species"), app.requireActivatedUser(http.HandlerFunc(app.speciesList)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("species.new"), app.requireActivatedUser(http.HandlerFunc(app.speciesCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.new"), app.requireActivatedUser(http.HandlerFunc(app.speciesSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("species.edit"), app.requireActivatedUser(http.HandlerFunc(app.speciesEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.edit"), app.requireActivatedUser(http.HandlerFunc(app.speciesSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.delete"), app.requireActivatedUser(http.HandlerFunc(app.speciesDelete)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.care.new"), app.requireActivatedUser(http.HandlerFunc(app.careInstructionSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.care.edit"), app.requireActivatedUser(http.HandlerFunc(app.careInstructionSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("species.care.delete"), app.requireActivatedUser(http.HandlerFunc(app.careInstructionDelete)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("tasks"), app.requireActivatedUser(http.HandlerFunc(app.tasks)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("tasks.calendar"), app.requireActivatedUser(http.HandlerFunc(app.taskCalendar)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("task.new"), app.requireActivatedUser(http.HandlerFunc(app.taskCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task.new"), app.requireActivatedUser(http.HandlerFunc(app.taskSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("task.edit"), app.requireActivatedUser(http.HandlerFunc(app.taskEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task.edit"), app.requireActivatedUser(http.HandlerFunc(app.taskSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task.complete"), app.requireActivatedUser(http.HandlerFunc(app.taskComplete)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task.reopen"), app.requireActivatedUser(http.HandlerFunc(app.taskReopen)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task.delete"), app.requireActivatedUser(http.HandlerFunc(app.taskDelete)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("task-template.new"), app.requireActivatedUser(http.HandlerFunc(app.taskTemplateCreate)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task-template.new"), app.requireActivatedUser(http.HandlerFunc(app.taskTemplateSave)))
|
|
dynamicRouter.Handler(http.MethodGet, routePath("task-template.edit"), app.requireActivatedUser(http.HandlerFunc(app.taskTemplateEdit)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task-template.edit"), app.requireActivatedUser(http.HandlerFunc(app.taskTemplateSave)))
|
|
dynamicRouter.Handler(http.MethodPost, routePath("task-template.delete"), app.requireActivatedUser(http.HandlerFunc(app.taskTemplateDelete)))
|
|
|
|
dynamic := alice.New(app.withAPIClient, app.authenticate, app.noSurf).Then(dynamicRouter)
|
|
router := http.NewServeMux()
|
|
router.Handle("/static/", http.FileServer(http.FS(files)))
|
|
router.HandleFunc("/ping", ping)
|
|
router.Handle("/", dynamic)
|
|
|
|
standard := alice.New(app.recoverPanic, app.logRequest, secureHeaders)
|
|
return standard.Then(router)
|
|
}
|