@@ -121,63 +121,63 @@ func (s *Server) setupRoutes() {
121121 protected .DELETE ("/users/:id" , middleware .AuthorizeSelf (), userHandler .DeleteUser )
122122
123123 protected .POST ("/clubs" , clubHandler .CreateClub )
124- protected .PUT ("/clubs/:id" , clubHandler .UpdateClub )
125- protected .DELETE ("/clubs/:id" , clubHandler .DeleteClub )
124+ protected .PUT ("/clubs/:id" , middleware . RequireClubMembershipWithRoles ( clubRepo , "club_admin" ), clubHandler .UpdateClub )
125+ protected .DELETE ("/clubs/:id" , middleware . RequireClubMembershipWithRoles ( clubRepo , "club_admin" ), clubHandler .DeleteClub )
126126
127127 protected .POST ("/clubs/:id/join" , clubHandler .JoinClub )
128- protected .POST ("/clubs/:id/leave" , clubHandler .LeaveClub )
129- protected .POST ("/clubs/:id/ratings" , clubHandler .RateClub )
128+ protected .POST ("/clubs/:id/leave" , middleware . RequireClubMembership ( clubRepo ), clubHandler .LeaveClub )
129+ protected .POST ("/clubs/:id/ratings" , middleware . RequireClubMembership ( clubRepo ), clubHandler .RateClub )
130130
131131 protected .GET ("/clubs/:id/members" , clubHandler .ListClubMembers )
132- protected .PUT ("/clubs/:id/members/:user_id" , middleware .AuthorizeSelf ( ), clubHandler .UpdateClubMember )
132+ protected .PUT ("/clubs/:id/members/:user_id" , middleware .RequireClubMembershipWithRoles ( clubRepo , "club_admin" , "moderator" ), clubHandler .UpdateClubMember )
133133 protected .GET ("/clubs/:id/members/:user_id" , clubHandler .GetClubMember )
134134
135- protected .POST ("/clubs/:id/events" , middleware .RestrictToRoles ( "admin " , "moderator" ), eventHandler .CreateEvent )
135+ protected .POST ("/clubs/:id/events" , middleware .RequireClubMembershipWithRoles ( clubRepo , "club_admin " , "moderator" ), eventHandler .CreateEvent )
136136 protected .GET ("/clubs/:id/events" , eventHandler .GetClubEvents )
137137 protected .GET ("/events/:id" , eventHandler .GetEvent )
138- protected .PUT ("/events/:id" , middleware .RestrictToRoles ( "admin " , "moderator" ), eventHandler .UpdateEvent )
139- protected .DELETE ("/events/:id" , middleware .RestrictToRoles ( "admin " , "moderator" ), eventHandler .DeleteEvent )
138+ protected .PUT ("/events/:id" , middleware .RequireClubMembershipWithRoles ( clubRepo , "club_admin " , "moderator" ), eventHandler .UpdateEvent )
139+ protected .DELETE ("/events/:id" , middleware .RequireClubMembershipWithRoles ( clubRepo , "club_admin " , "moderator" ), eventHandler .DeleteEvent )
140140
141- protected .POST ("/events/:id/rsvp" , eventHandler .RSVPToEvent )
142- protected .GET ("/events/:id/attendees" , middleware .RestrictToRoles ( "admin" , "moderator" ), eventHandler .GetEventAttendees )
141+ protected .POST ("/events/:id/rsvp" , middleware . RequireClubMembership ( clubRepo ), eventHandler .RSVPToEvent )
142+ protected .GET ("/events/:id/attendees" , middleware .RequireClubMembership ( clubRepo ), eventHandler .GetEventAttendees )
143143
144- protected .POST ("/books" , middleware .RestrictToRoles ("admin" ), bookHandler .CreateBook )
144+ protected .POST ("/books" , middleware .RestrictToRoles ("admin" , "superuser" ), bookHandler .CreateBook )
145145 protected .GET ("/books/:id" , bookHandler .GetBookByID )
146- protected .PUT ("/books/:id" , middleware .RestrictToRoles ("admin" ), bookHandler .UpdateBook )
147- protected .DELETE ("/books/:id" , middleware .RestrictToRoles ("admin" ), bookHandler .DeleteBook )
146+ protected .PUT ("/books/:id" , middleware .RestrictToRoles ("admin" , "superuser" ), bookHandler .UpdateBook )
147+ protected .DELETE ("/books/:id" , middleware .RestrictToRoles ("admin" , "superuser" ), bookHandler .DeleteBook )
148148 protected .GET ("/books" , bookHandler .ListBooks )
149149
150- protected .POST ("/posts" , postHandler .CreatePost )
150+ protected .POST ("/posts" , middleware . RequireClubMembership ( clubRepo ), postHandler .CreatePost )
151151 protected .GET ("/posts/:id" , postHandler .GetPostByID )
152- protected .PUT ("/posts/:id" , postHandler .UpdatePost )
153- protected .DELETE ("/posts/:id" , postHandler .DeletePost )
152+ protected .PUT ("/posts/:id" , middleware . RequireClubMembership ( clubRepo ), postHandler .UpdatePost )
153+ protected .DELETE ("/posts/:id" , middleware . RequireClubMembership ( clubRepo ), postHandler .DeletePost )
154154 protected .GET ("/posts" , postHandler .ListAllPosts )
155155
156- protected .POST ("/posts/:id/like" , postHandler .LikePost )
157- protected .POST ("/posts/:id/unlike" , postHandler .UnlikePost )
156+ protected .POST ("/posts/:id/like" , middleware . RequireClubMembership ( clubRepo ), postHandler .LikePost )
157+ protected .POST ("/posts/:id/unlike" , middleware . RequireClubMembership ( clubRepo ), postHandler .UnlikePost )
158158 protected .GET ("/posts/:id/likes" , postHandler .ListLikesByPostID )
159159
160- protected .POST ("/posts/:id/comments" , commentHandler .CreateComment )
160+ protected .POST ("/posts/:id/comments" , middleware . RequireClubMembership ( clubRepo ), commentHandler .CreateComment )
161161 protected .GET ("/comments/:id" , commentHandler .GetCommentByID )
162- protected .PUT ("/comments/:id" , commentHandler .UpdateComment )
163- protected .DELETE ("/comments/:id" , commentHandler .DeleteComment )
162+ protected .PUT ("/comments/:id" , middleware . RequireClubMembership ( clubRepo ), commentHandler .UpdateComment )
163+ protected .DELETE ("/comments/:id" , middleware . RequireClubMembership ( clubRepo ), commentHandler .DeleteComment )
164164 protected .GET ("/posts/:id/comments" , commentHandler .ListCommentsByPostID )
165165 protected .GET ("/users/:id/comments" , commentHandler .ListCommentsByUserID )
166166
167- protected .POST ("/comments/:id/like" , commentHandler .LikeComment )
168- protected .POST ("/comments/:id/unlike" , commentHandler .UnlikeComment )
167+ protected .POST ("/comments/:id/like" , middleware . RequireClubMembership ( clubRepo ), commentHandler .LikeComment )
168+ protected .POST ("/comments/:id/unlike" , middleware . RequireClubMembership ( clubRepo ), commentHandler .UnlikeComment )
169169 protected .GET ("/comments/:id/likes" , commentHandler .ListLikesByCommentID )
170170
171- protected .POST ("/users/:id/reading/sync" , readingHandler .SyncUserStats )
171+ protected .POST ("/users/:id/reading/sync" , middleware . AuthorizeSelf (), readingHandler .SyncUserStats )
172172 protected .POST ("/users/:id/reading/start" , middleware .AuthorizeSelf (), readingHandler .StartReading )
173173 protected .PATCH ("/users/:id/reading/:bookID/progress" , middleware .AuthorizeSelf (), readingHandler .UpdateProgress )
174174 protected .POST ("/users/:id/reading/:bookID/complete" , middleware .AuthorizeSelf (), readingHandler .CompleteReading )
175175 protected .GET ("/users/:id/reading" , middleware .AuthorizeSelf (), readingHandler .ListUserProgress )
176176 protected .GET ("/users/:id/reading/history" , readingHandler .UserReadingHistory )
177177
178- protected .POST ("/clubs/:id/reading/assign" , middleware .RestrictToRoles ( "admin" , "moderator" ), readingHandler .AssignBookToClub )
179- protected .PATCH ("/clubs/:id/reading/checkpoint" , middleware .RestrictToRoles ( "admin" , "moderator" ), readingHandler .UpdateClubCheckpoint )
180- protected .POST ("/clubs/:id/reading/complete" , middleware .RestrictToRoles ( "admin" , "moderator" ), readingHandler .CompleteClubAssignment )
178+ protected .POST ("/clubs/:id/reading/assign" , middleware .RequireClubMembershipWithRoles ( clubRepo , "admin" , "moderator" ), readingHandler .AssignBookToClub )
179+ protected .PATCH ("/clubs/:id/reading/checkpoint" , middleware .RequireClubMembershipWithRoles ( clubRepo , "admin" , "moderator" ), readingHandler .UpdateClubCheckpoint )
180+ protected .POST ("/clubs/:id/reading/complete" , middleware .RequireClubMembershipWithRoles ( clubRepo , "admin" , "moderator" ), readingHandler .CompleteClubAssignment )
181181 protected .GET ("/clubs/:id/reading" , readingHandler .ListClubAssignments )
182182 }
183183}
0 commit comments