Files
Gardomatic/internal/web/routes.go
T
kleiax 904d14b64c
CI / test (push) Canceled after 0s
Initial commit
2026-09-12 22:22:17 +02:00

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)
}