@@ -49,7 +49,7 @@ func (api *API) setupRoutes(mw *mw.Middleware) {
4949 api .Router .Use (middleware .RealIP )
5050 api .Router .Use (cors .Handler (cors.Options {
5151 AllowedOrigins : AllowedOrigins ,
52- AllowedMethods : []string {"GET" , "POST" , "PUT" , "DELETE" , "OPTIONS" },
52+ AllowedMethods : []string {"GET" , "POST" , "PUT" , "PATCH" , " DELETE" , "OPTIONS" },
5353 AllowedHeaders : []string {"Accept" , "Authorization" , "Content-Type" , "X-CSRF-Token" },
5454 ExposedHeaders : []string {"Link" },
5555 AllowCredentials : true ,
@@ -60,39 +60,60 @@ func (api *API) setupRoutes(mw *mw.Middleware) {
6060 api .Router .Get ("/ping" , func (w http.ResponseWriter , r * http.Request ) {
6161 api .Logger .Trace ().Str ("method" , r .Method ).Str ("path" , r .URL .Path ).Msg ("Received ping." )
6262 w .Header ().Set ("Content-Type" , "text/plain" )
63- w .Header ().Set ("Content-Length" , "6" ) // "pong!\n" is 6 bytes
63+ w .Header ().Set ("Content-Length" , "6" )
6464 if _ , err := w .Write ([]byte ("pong!\n " )); err != nil {
6565 log .Err (err )
6666 }
6767 })
6868
69- // Auth routes
69+ // --- Auth routes ---
7070 api .Router .Route ("/auth" , func (r chi.Router ) {
7171 r .Get ("/callback" , api .Handlers .Auth .OAuthCallback )
7272
73+ // Protected auth routes
7374 r .Group (func (r chi.Router ) {
7475 r .Use (mw .Auth .RequireAuth )
7576 r .Get ("/me" , api .Handlers .Auth .GetMe )
7677 r .Post ("/logout" , api .Handlers .Auth .Logout )
7778 })
7879 })
7980
80- // Event routes
81+ // --- User routes ---
82+ api .Router .Route ("/users" , func (r chi.Router ) {
83+ r .Use (mw .Auth .RequireAuth )
84+ r .Get ("/me" , api .Handlers .User .GetProfile )
85+ r .Patch ("/me/onboarding" , api .Handlers .User .CompleteOnboarding )
86+ })
87+
88+ // --- Event routes ---
8189 api .Router .Route ("/events" , func (r chi.Router ) {
90+
91+ // Superuser-only
8292 r .With (mw .Auth .RequireAuth , ensureSuperuser ).Post ("/" , api .Handlers .Event .CreateEvent )
93+
94+ // Authenticated
8395 r .With (mw .Auth .RequireAuth ).Get ("/" , api .Handlers .Event .GetEvents )
96+
97+ // Event-specific routes
8498 r .Route ("/{eventId}" , func (r chi.Router ) {
99+ r .Use (mw .Auth .RequireAuth )
85100
86- r .With (mw .Auth .RequireAuth , ensureEventAdmin ).Patch ("/" , api .Handlers .Event .UpdateEventById )
87- r .With (mw .Auth .RequireAuth , ensureSuperuser ).Delete ("/" , api .Handlers .Event .DeleteEventById )
88- r .With (mw .Auth .RequireAuth , ensureEventAdmin ).Get ("/staff" , api .Handlers .Event .GetEventStaffUsers )
89- r .With (mw .Auth .RequireAuth , ensureEventAdmin ).Post ("/roles" , api .Handlers .Event .AssignEventRole )
90- r .With (mw .Auth .RequireAuth ).Get ("/role" , api .Handlers .Event .GetEventRole )
101+ // General access
91102 r .Get ("/" , api .Handlers .Event .GetEventByID )
92- r .With (httprate .LimitByIP (5 , time .Minute )).Post ("/interest" , api .Handlers .EventInterest .AddEmailToEvent )
103+ r .Post ("/interest" , api .Handlers .EventInterest .AddEmailToEvent )
104+
105+ // Admin-only
106+ r .With (ensureEventAdmin ).Patch ("/" , api .Handlers .Event .UpdateEventById )
107+ r .With (ensureEventAdmin ).Get ("/staff" , api .Handlers .Event .GetEventStaffUsers )
108+ r .With (ensureEventAdmin ).Post ("/roles" , api .Handlers .Event .AssignEventRole )
109+ r .With (ensureEventAdmin ).Get ("/role" , api .Handlers .Event .GetEventRole )
110+
111+ // Superuser-only
112+ r .With (ensureSuperuser ).Delete ("/" , api .Handlers .Event .DeleteEventById )
113+
114+ // Application routes
93115 r .Route ("/application" , func (r chi.Router ) {
94116 r .Use (mw .Auth .RequireAuth )
95-
96117 r .Get ("/" , api .Handlers .Application .GetApplicationByUserAndEventID )
97118 r .Post ("/submit" , api .Handlers .Application .SubmitApplication )
98119 r .Post ("/save" , api .Handlers .Application .SaveApplication )
0 commit comments