53 lines
2.5 KiB
Go
53 lines
2.5 KiB
Go
package rest
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"goAuth/internal/cors"
|
|
"goAuth/internal/csrf"
|
|
"goAuth/internal/middleware"
|
|
)
|
|
|
|
func (h *Handler) registerRoutes(mux *http.ServeMux) {
|
|
corsMw := cors.NewMiddleware(h.cfg.Cors.Origins, h.cfg.Cors.Methods, h.cfg.Cors.Headers)
|
|
csrfMw := csrf.NewMiddleware(h.cfg.Cookies.CsrfName, "csrf", h.cfg.Cookies.Secure)
|
|
sessionMw := h.sessionMiddleware()
|
|
|
|
publicChain := middleware.MiddlewareChain{corsMw, csrfMw}
|
|
userChain := middleware.MiddlewareChain{corsMw, csrfMw, sessionMw}
|
|
superuserChain := middleware.MiddlewareChain{corsMw, csrfMw, sessionMw, h.superuser}
|
|
|
|
mux.Handle("POST /api/auth/signup", publicChain.ThenFunc(h.signup))
|
|
mux.Handle("POST /api/auth/signin", publicChain.ThenFunc(h.signin))
|
|
mux.Handle("POST /api/auth/signout", userChain.ThenFunc(h.signout))
|
|
|
|
mux.Handle("GET /api/profile", userChain.ThenFunc(h.getProfile))
|
|
mux.Handle("PATCH /api/profile", userChain.ThenFunc(h.updateProfile))
|
|
mux.Handle("PUT /api/profile", userChain.ThenFunc(h.updateProfile))
|
|
mux.Handle("PUT /api/profile/password", userChain.ThenFunc(h.updatePassword))
|
|
mux.Handle("POST /api/profile/avatar", userChain.ThenFunc(h.uploadAvatar))
|
|
mux.Handle("PUT /api/profile/avatar", userChain.ThenFunc(h.uploadAvatar))
|
|
mux.Handle("GET /api/profile/avatar", userChain.ThenFunc(h.getAvatar))
|
|
|
|
mux.Handle("GET /api/sessions", userChain.ThenFunc(h.listSessions))
|
|
mux.Handle("DELETE /api/sessions", userChain.ThenFunc(h.signoutAll))
|
|
mux.Handle("DELETE /api/sessions/{token}", userChain.ThenFunc(h.signoutSession))
|
|
|
|
mux.Handle("GET /api/invites", superuserChain.ThenFunc(h.listInvites))
|
|
mux.Handle("POST /api/invites", superuserChain.ThenFunc(h.createInvite))
|
|
mux.Handle("GET /api/invites/{token}", superuserChain.ThenFunc(h.getInvite))
|
|
mux.Handle("DELETE /api/invites/{token}", superuserChain.ThenFunc(h.deleteInvite))
|
|
|
|
// Public avatar route: the Jitsi server fetches this directly, so it must
|
|
// not require a session cookie (CORS middleware only, no session check).
|
|
mux.Handle("GET /api/users/{id}/avatar", publicChain.ThenFunc(h.getUserAvatar))
|
|
|
|
mux.Handle("GET /api/users", superuserChain.ThenFunc(h.listUsers))
|
|
mux.Handle("PUT /api/users/{id}/password", superuserChain.ThenFunc(h.changeUserPassword))
|
|
mux.Handle("DELETE /api/users/{id}/sessions", superuserChain.ThenFunc(h.signoutUserSessions))
|
|
|
|
mux.Handle("GET /api/jitsi/rooms", userChain.ThenFunc(h.listRecentRooms))
|
|
mux.Handle("POST /api/jitsi/rooms", userChain.ThenFunc(h.joinRoom))
|
|
mux.Handle("DELETE /api/jitsi/rooms/{room}", userChain.ThenFunc(h.deleteRecentRoom))
|
|
}
|