269 lines
16 KiB
Go
269 lines
16 KiB
Go
// backend\routes.go
|
|
|
|
package main
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
func (s *Server) Routes() http.Handler {
|
|
mux := http.NewServeMux()
|
|
|
|
mux.HandleFunc("GET /health", s.handleHealth)
|
|
mux.HandleFunc("POST /webhooks/channels/{slug}", s.handleChannelWebhook)
|
|
mux.HandleFunc("GET /push/icons/{kind}/{id}/{signature}", s.handlePushIcon)
|
|
|
|
mux.HandleFunc("POST /auth/register", s.handleRegister)
|
|
mux.HandleFunc("POST /auth/login", s.handleLogin)
|
|
mux.HandleFunc("POST /auth/logout", s.handleLogout)
|
|
mux.HandleFunc("GET /auth/me", s.requireAuth(s.handleMe))
|
|
|
|
mux.HandleFunc("GET /settings/sessions", s.requireAuth(s.handleListUserSessions))
|
|
mux.HandleFunc("DELETE /settings/sessions/{id}", s.requireAuth(s.handleRevokeUserSession))
|
|
mux.HandleFunc("PUT /settings/account", s.requireAuth(s.handleUpdateSettingsAccount))
|
|
mux.HandleFunc("PUT /settings/password", s.requireAuth(s.handleUpdateSettingsPassword))
|
|
mux.HandleFunc("POST /settings/logout-other-sessions", s.requireAuth(s.handleLogoutOtherSessions))
|
|
mux.HandleFunc("DELETE /settings/account", s.requireAuth(s.handleDeleteOwnAccount))
|
|
|
|
mux.HandleFunc("GET /settings/notifications/preferences", s.requireAuth(s.handleGetNotificationPreferences))
|
|
mux.HandleFunc("PUT /settings/notifications/preferences", s.requireAuth(s.handleUpdateNotificationPreferences))
|
|
mux.HandleFunc("GET /push/config", s.requireAuth(s.handleGetPushConfig))
|
|
mux.HandleFunc("POST /push/subscriptions", s.requireAuth(s.handleSavePushSubscription))
|
|
mux.HandleFunc("DELETE /push/subscriptions", s.requireAuth(s.handleDeletePushSubscription))
|
|
|
|
mux.HandleFunc("POST /feedback", s.requireAuth(s.handleCreateFeedback))
|
|
|
|
mux.HandleFunc("GET /devices", s.requireAuth(s.handleListDevices))
|
|
mux.HandleFunc("POST /devices", s.requireAuth(s.handleCreateDevice))
|
|
mux.HandleFunc("PUT /devices/{id}", s.requireAuth(s.handleUpdateDevice))
|
|
mux.HandleFunc("GET /device-loan-users", s.requireAuth(s.handleListDeviceLoanUsers))
|
|
|
|
mux.HandleFunc("GET /devices/{id}/history", s.requireAuth(s.handleListDeviceHistory))
|
|
mux.HandleFunc("POST /devices/{id}/history", s.requireAuth(s.handleCreateDeviceJournalEntry))
|
|
mux.HandleFunc("PUT /devices/{id}/history/{historyId}", s.requireAuth(s.handleUpdateDeviceJournalEntry))
|
|
|
|
mux.HandleFunc("PATCH /devices/{id}/milestone", s.requireAuth(s.handleUpdateMilestoneHardware))
|
|
mux.HandleFunc(
|
|
"PATCH /devices/{id}/milestone-child/{childId}",
|
|
s.requireAuth(s.handleUpdateMilestoneChildDevice),
|
|
)
|
|
|
|
mux.HandleFunc(
|
|
"GET /devices/{id}/milestone-cameras/{childId}",
|
|
s.requireAuth(s.handleGetMilestoneCameraDetails),
|
|
)
|
|
mux.HandleFunc(
|
|
"PATCH /devices/{id}/milestone-cameras/{childId}",
|
|
s.requireAuth(s.handleUpdateMilestoneCameraDetails),
|
|
)
|
|
mux.HandleFunc(
|
|
"GET /devices/{id}/milestone-cameras/{childId}/streams",
|
|
s.requireAuth(s.handleGetMilestoneCameraApiStreams),
|
|
)
|
|
mux.HandleFunc(
|
|
"PUT /devices/{id}/milestone-cameras/{childId}/streams/{streamId}",
|
|
s.requireAuth(s.handleUpdateMilestoneApiStream),
|
|
)
|
|
mux.HandleFunc(
|
|
"GET /devices/{id}/milestone-cameras/{childId}/camera-settings",
|
|
s.requireAuth(s.handleGetMilestoneCameraSettingsDetail),
|
|
)
|
|
mux.HandleFunc(
|
|
"PATCH /devices/{id}/milestone-cameras/{childId}/camera-settings",
|
|
s.requireAuth(s.handleUpdateMilestoneCameraSettingsDetail),
|
|
)
|
|
|
|
mux.HandleFunc("GET /devices/firmware-check", s.requireAuth(s.handleGetCameraFirmwareCheckState))
|
|
mux.HandleFunc("POST /devices/firmware-check", s.requireAuth(s.handleCheckCameraFirmware))
|
|
|
|
mux.HandleFunc("GET /device-lookups", s.handleDeviceLookups)
|
|
mux.HandleFunc("POST /device-manufacturers", s.handleCreateDeviceManufacturer)
|
|
mux.HandleFunc("POST /device-locations", s.handleCreateDeviceLocation)
|
|
|
|
mux.HandleFunc("GET /operations", s.requireAuth(s.requireRight("operations:read", s.handleListOperations)))
|
|
mux.HandleFunc("POST /operations", s.requireAuth(s.requireRight("operations:write", s.handleCreateOperation)))
|
|
|
|
mux.HandleFunc("PUT /operations/{id}", s.requireAuth(s.requireRight("operations:write", s.handleUpdateOperation)))
|
|
mux.HandleFunc("POST /operations/{id}/complete", s.requireAuth(s.requireRight("operations:write", s.handleCompleteOperation)))
|
|
mux.HandleFunc("POST /operations/{id}/reopen", s.requireAuth(s.requireRight("operations:write", s.handleReopenOperation)))
|
|
mux.HandleFunc("DELETE /operations/{id}", s.requireAuth(s.requireRight("operations:write", s.handleDeleteOperation)))
|
|
mux.HandleFunc("POST /operations/{id}/milestone-setup", s.requireAuth(s.requireRight("operations:write", s.handleOperationMilestoneSetup)))
|
|
mux.HandleFunc("GET /operations/{id}/history", s.requireAuth(s.handleListOperationHistory))
|
|
mux.HandleFunc("POST /operations/{id}/history", s.requireAuth(s.handleCreateOperationJournalEntry))
|
|
mux.HandleFunc("PUT /operations/{id}/history/{historyId}", s.requireAuth(s.handleUpdateOperationJournalEntry))
|
|
mux.HandleFunc("POST /operations/{id}/journal/read", s.requireAuth(s.handleMarkOperationJournalRead))
|
|
|
|
mux.HandleFunc("GET /operations/journal-unread", s.requireAuth(s.handleListUnreadOperationJournals))
|
|
|
|
mux.HandleFunc("GET /operations/assignees", s.requireAuth(s.requireRight("operations:read", s.handleListOperationAssignees)))
|
|
mux.HandleFunc("GET /operations/ad-users", s.requireAuth(s.requireRight("operations:read", s.handleListOperationActiveDirectoryUsers)))
|
|
|
|
mux.HandleFunc("GET /search", s.requireAuth(s.handleGlobalSearch))
|
|
|
|
mux.HandleFunc("GET /address-search", s.requireAuth(s.handleAddressSearch))
|
|
mux.HandleFunc("GET /address-reverse", s.requireAuth(s.handleAddressReverse))
|
|
|
|
mux.HandleFunc("GET /notifications", s.requireAuth(s.handleListNotifications))
|
|
mux.HandleFunc("POST /notifications/{id}/read", s.requireAuth(s.handleMarkNotificationRead))
|
|
mux.HandleFunc("POST /notifications/read-all", s.requireAuth(s.handleMarkAllNotificationsRead))
|
|
|
|
mux.HandleFunc("GET /events", s.requireAuth(s.handleNotificationEvents))
|
|
mux.HandleFunc("POST /presence", s.requireAuth(s.handlePresence))
|
|
mux.HandleFunc("GET /settings/presence", s.requireAuth(s.handleGetPresenceSettings))
|
|
mux.HandleFunc("PUT /settings/presence", s.requireAuth(s.handleUpdatePresenceSettings))
|
|
mux.HandleFunc("PUT /settings/presence/status", s.requireAuth(s.handleUpdatePresenceStatus))
|
|
mux.HandleFunc("GET /calendar/settings", s.requireAuth(s.requireRight("calendar:read", s.handleGetCalendarSettings)))
|
|
mux.HandleFunc("GET /calendar/events", s.requireAuth(s.requireRight("calendar:read", s.handleListCalendarEvents)))
|
|
mux.HandleFunc("POST /calendar/events", s.requireAuth(s.requireRight("calendar:read", s.handleCreateCalendarEvent)))
|
|
mux.HandleFunc("PUT /calendar/events/{id}", s.requireAuth(s.requireRight("calendar:read", s.handleUpdateCalendarEvent)))
|
|
mux.HandleFunc("POST /calendar/events/{id}/occurrences", s.requireAuth(s.requireRight("calendar:read", s.handleUpdateCalendarEventOccurrence)))
|
|
mux.HandleFunc("POST /calendar/events/{id}/occurrences/delete", s.requireAuth(s.requireRight("calendar:read", s.handleDeleteCalendarEventOccurrence)))
|
|
mux.HandleFunc("DELETE /calendar/events/{id}", s.requireAuth(s.requireRight("calendar:read", s.handleDeleteCalendarEvent)))
|
|
|
|
mux.HandleFunc("GET /chat/conversations", s.requireAuth(s.handleListChatConversations))
|
|
mux.HandleFunc("GET /chat/search", s.requireAuth(s.handleSearchChatMessages))
|
|
mux.HandleFunc("GET /chat/unread", s.requireAuth(s.handleGetChatUnreadCount))
|
|
mux.HandleFunc("POST /chat/direct", s.requireAuth(s.handleCreateDirectConversation))
|
|
mux.HandleFunc("GET /chat/users", s.requireAuth(s.handleListChatUsers))
|
|
mux.HandleFunc("GET /chat/ws", s.requireAuth(s.handleChatWebSocket))
|
|
mux.HandleFunc("POST /chat/attachments", s.requireAuth(s.handleUploadChatAttachment))
|
|
mux.HandleFunc("GET /chat/attachments/{id}", s.requireAuth(s.handleDownloadChatAttachment))
|
|
mux.HandleFunc("POST /chat/link-preview", s.requireAuth(s.handleChatLinkPreview))
|
|
mux.HandleFunc("GET /chat/conversations/{id}/messages", s.requireAuth(s.handleListChatMessages))
|
|
mux.HandleFunc("POST /chat/conversations/{id}/messages", s.requireAuth(s.handleCreateChatMessage))
|
|
mux.HandleFunc("POST /chat/conversations/{id}/read", s.requireAuth(s.handleMarkChatConversationRead))
|
|
mux.HandleFunc("PUT /chat/conversations/{id}/mute", s.requireAuth(s.handleUpdateConversationMute))
|
|
mux.HandleFunc("PUT /chat/conversations/{id}/disappearing", s.requireAuth(s.handleUpdateDisappearing))
|
|
mux.HandleFunc("POST /chat/groups", s.requireAuth(s.handleCreateGroup))
|
|
mux.HandleFunc("PUT /chat/groups/{id}", s.requireAuth(s.handleUpdateGroup))
|
|
mux.HandleFunc("DELETE /chat/groups/{id}", s.requireAuth(s.handleDeleteGroup))
|
|
mux.HandleFunc("POST /chat/groups/{id}/members", s.requireAuth(s.handleAddGroupMembers))
|
|
mux.HandleFunc("DELETE /chat/groups/{id}/members/{userId}", s.requireAuth(s.handleRemoveGroupMember))
|
|
|
|
mux.HandleFunc("GET /dashboard/operation-changes", s.requireAuth(s.requireRight("operations:read", s.handleDashboardOperationChanges)))
|
|
|
|
mux.HandleFunc("GET /dashboard/settings", s.requireAuth(s.handleGetDashboardSettings))
|
|
mux.HandleFunc("PUT /dashboard/settings", s.requireAuth(s.handleUpdateDashboardSettings))
|
|
|
|
mux.HandleFunc("GET /dashboard/widgets", s.requireAuth(s.handleListDashboardWidgets))
|
|
mux.HandleFunc("POST /dashboard/widgets", s.requireAuth(s.handleCreateDashboardWidget))
|
|
mux.HandleFunc("PUT /dashboard/widgets/{id}", s.requireAuth(s.handleUpdateDashboardWidget))
|
|
mux.HandleFunc("DELETE /dashboard/widgets/{id}", s.requireAuth(s.handleDeleteDashboardWidget))
|
|
|
|
/* admin settings */
|
|
|
|
mux.HandleFunc("GET /admin/users", s.requireAuth(s.requireRight("users:read", s.handleAdminListUsers)))
|
|
mux.HandleFunc("POST /admin/users", s.requireAuth(s.requireRight("users:write", s.handleAdminCreateUser)))
|
|
mux.HandleFunc("PUT /admin/users/{id}", s.requireAuth(s.requireRight("users:write", s.handleAdminUpdateUser)))
|
|
|
|
mux.HandleFunc("GET /admin/user-units", s.requireAuth(s.requireRight("users:read", s.handleListUserUnits)))
|
|
mux.HandleFunc("POST /admin/user-units", s.requireAuth(s.requireRight("users:write", s.handleCreateUserUnit)))
|
|
|
|
mux.HandleFunc("GET /admin/teams", s.requireAuth(s.requireRight("teams:read", s.handleAdminListTeams)))
|
|
mux.HandleFunc("POST /admin/teams", s.requireAuth(s.requireRight("teams:write", s.handleAdminCreateTeam)))
|
|
mux.HandleFunc("PUT /admin/teams/{id}", s.requireAuth(s.requireRight("teams:write", s.handleAdminUpdateTeam)))
|
|
|
|
mux.HandleFunc("GET /admin/feedback", s.requireAuth(s.requireRight("administration:read", s.handleListFeedback)))
|
|
mux.HandleFunc("DELETE /admin/feedback/{id}", s.requireAuth(s.requireRight("administration:write", s.handleDeleteFeedback)))
|
|
mux.HandleFunc("GET /admin/channels", s.requireAuth(s.requireRight("administration:read", s.handleAdminListChannels)))
|
|
mux.HandleFunc("POST /admin/channels", s.requireAuth(s.requireRight("administration:write", s.handleAdminCreateChannel)))
|
|
mux.HandleFunc("PUT /admin/channels/{id}", s.requireAuth(s.requireRight("administration:write", s.handleAdminUpdateChannel)))
|
|
mux.HandleFunc("POST /admin/channels/{id}/token", s.requireAuth(s.requireRight("administration:write", s.handleAdminRotateChannelToken)))
|
|
mux.HandleFunc("GET /admin/group-chats", s.requireAuth(s.requireRight("administration:read", s.handleAdminListGroupChats)))
|
|
mux.HandleFunc("PUT /admin/group-chats/{id}", s.requireAuth(s.requireRight("administration:write", s.handleAdminUpdateGroupChat)))
|
|
mux.HandleFunc("DELETE /admin/group-chats/{id}", s.requireAuth(s.requireRight("administration:write", s.handleAdminDeleteGroupChat)))
|
|
mux.HandleFunc("POST /admin/group-chats/{id}/empty", s.requireAuth(s.requireRight("administration:write", s.handleAdminEmptyGroupChat)))
|
|
mux.HandleFunc("GET /admin/calendar/settings", s.requireAuth(s.requireRight("administration:read", s.handleGetCalendarSettings)))
|
|
mux.HandleFunc("PUT /admin/calendar/settings", s.requireAuth(s.requireRight("administration:write", s.handleUpdateCalendarSettings)))
|
|
|
|
mux.HandleFunc("GET /admin/active-directory", s.requireAuth(s.requireRight("administration:read", s.handleGetActiveDirectorySettings)))
|
|
mux.HandleFunc("PUT /admin/active-directory", s.requireAuth(s.requireRight("administration:write", s.handleUpdateActiveDirectorySettings)))
|
|
mux.HandleFunc("GET /admin/active-directory/users", s.requireAuth(s.requireRight("administration:read", s.handleAdminListActiveDirectoryUsers)))
|
|
mux.HandleFunc("POST /admin/active-directory/base-dn-tree", s.requireAuth(s.requireRight("administration:write", s.handleListActiveDirectoryBaseDNTree)))
|
|
mux.HandleFunc("POST /admin/active-directory/group-tree", s.requireAuth(s.requireRight("administration:write", s.handleListActiveDirectoryGroupTree)))
|
|
|
|
/* milestone settings */
|
|
|
|
mux.HandleFunc("GET /admin/milestone", s.requireAuth(s.requireRight("administration:read", s.handleGetMilestoneSettings)))
|
|
mux.HandleFunc("PUT /admin/milestone", s.requireAuth(s.requireRight("administration:write", s.handleUpdateMilestoneSettings)))
|
|
mux.HandleFunc("POST /admin/milestone/token", s.requireAuth(s.requireRight("administration:write", s.handleFetchMilestoneToken)))
|
|
mux.HandleFunc("POST /admin/milestone/token/stream", s.requireAuth(s.requireRight("administration:write", s.handleFetchMilestoneTokenStream)))
|
|
mux.HandleFunc("GET /admin/milestone/basic-users", s.requireAuth(s.requireRight("administration:read", s.handleAdminListMilestoneBasicUsers)))
|
|
mux.HandleFunc("GET /admin/milestone/roles", s.requireAuth(s.requireRight("administration:read", s.handleAdminListMilestoneRoles)))
|
|
mux.HandleFunc("POST /admin/milestone/roles", s.requireAuth(s.requireRight("administration:write", s.handleAdminCreateMilestoneRole)))
|
|
mux.HandleFunc("GET /admin/milestone/roles/{id}", s.requireAuth(s.requireRight("administration:read", s.handleAdminGetMilestoneRole)))
|
|
mux.HandleFunc("PATCH /admin/milestone/roles/{id}", s.requireAuth(s.requireRight("administration:write", s.handleAdminUpdateMilestoneRole)))
|
|
mux.HandleFunc("DELETE /admin/milestone/roles/{id}", s.requireAuth(s.requireRight("administration:write", s.handleAdminDeleteMilestoneRole)))
|
|
mux.HandleFunc("POST /admin/milestone/roles/{id}/users", s.requireAuth(s.requireRight("administration:write", s.handleAdminAddMilestoneRoleUsers)))
|
|
mux.HandleFunc("DELETE /admin/milestone/roles/{id}/users/{userId}", s.requireAuth(s.requireRight("administration:write", s.handleAdminRemoveMilestoneRoleUser)))
|
|
mux.HandleFunc(
|
|
"GET /admin/server-folders",
|
|
s.requireAuth(s.requireRight("administration:read", s.handleProxyListServerFolders)),
|
|
)
|
|
mux.HandleFunc(
|
|
"POST /admin/server-folders",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleProxyCreateServerFolder)),
|
|
)
|
|
|
|
mux.HandleFunc(
|
|
"PATCH /admin/server-folders",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleProxyRenameServerFolder)),
|
|
)
|
|
mux.HandleFunc(
|
|
"DELETE /admin/server-folders",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleProxyDeleteServerFolder)),
|
|
)
|
|
|
|
mux.HandleFunc(
|
|
"PATCH /admin/milestone/archive-storages/{id}",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleUpdateMilestoneArchiveStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"DELETE /admin/milestone/archive-storages/{id}",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleDeleteMilestoneArchiveStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"GET /admin/milestone/storage-information/{id}",
|
|
s.requireAuth(s.requireRight("administration:read", s.handleGetMilestoneStorageInformation)),
|
|
)
|
|
mux.HandleFunc(
|
|
"GET /admin/milestone/cameras",
|
|
s.requireAuth(s.requireRight("administration:read", s.handleListMilestoneCameras)),
|
|
)
|
|
mux.HandleFunc(
|
|
"PATCH /admin/milestone/devices/{collection}/{id}",
|
|
s.requireAuth(s.requireRight("administration:write", s.handlePatchMilestoneDevice)),
|
|
)
|
|
|
|
mux.HandleFunc(
|
|
"GET /admin/milestone/storages",
|
|
s.requireAuth(s.requireRight("administration:read", s.handleListMilestoneStorages)),
|
|
)
|
|
mux.HandleFunc(
|
|
"POST /admin/milestone/storages",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleCreateMilestoneStorageWithArchive)),
|
|
)
|
|
mux.HandleFunc(
|
|
"PATCH /admin/milestone/storages/{id}",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleUpdateMilestoneStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"DELETE /admin/milestone/storages/{id}",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleDeleteMilestoneStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"POST /admin/milestone/storages/{id}/archive-storages",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleCreateMilestoneArchiveStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"POST /admin/milestone/storages/{id}/archive-storages/auto",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleCreateMilestoneAutoArchiveStorage)),
|
|
)
|
|
mux.HandleFunc(
|
|
"GET /admin/milestone/storages/{id}/delete-stream",
|
|
s.requireAuth(s.requireRight("administration:write", s.handleDeleteMilestoneStorageStream)),
|
|
)
|
|
|
|
return s.cors(mux)
|
|
}
|