@@ -11,7 +11,7 @@ use crate::{
1111 app:: models:: { Entity , Project , UserRole } ,
1212 utils:: validate:: can_access_project,
1313 web:: {
14- RouterState , SessionUser ,
14+ MaybeExtract , RouterState , SessionUser ,
1515 webext:: { ApiResult , AxumErrExt , empty_response, http_bail} ,
1616 } ,
1717} ;
@@ -164,10 +164,10 @@ async fn get_users(app: State<RouterState>, SessionUser(user): SessionUser) -> A
164164}
165165
166166async fn update_user (
167- Path ( username) : Path < String > ,
168- user : Json < UpdateUserRequest > ,
169167 app : State < RouterState > ,
168+ Path ( username) : Path < String > ,
170169 SessionUser ( session_user) : SessionUser ,
170+ user : Json < UpdateUserRequest > ,
171171) -> ApiResult < impl IntoApiResponse > {
172172 if session_user. role != UserRole :: Admin {
173173 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -185,10 +185,10 @@ async fn update_user(
185185}
186186
187187async fn update_user_password (
188- Path ( username) : Path < String > ,
189- password : Json < UpdatePasswordRequest > ,
190188 app : State < RouterState > ,
189+ Path ( username) : Path < String > ,
191190 SessionUser ( session_user) : SessionUser ,
191+ password : Json < UpdatePasswordRequest > ,
192192) -> ApiResult < impl IntoApiResponse > {
193193 if session_user. role != UserRole :: Admin || username != session_user. username {
194194 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -202,8 +202,8 @@ async fn update_user_password(
202202}
203203
204204async fn remove_user (
205- Path ( username) : Path < String > ,
206205 app : State < RouterState > ,
206+ Path ( username) : Path < String > ,
207207 SessionUser ( session_user) : SessionUser ,
208208) -> ApiResult < impl IntoApiResponse > {
209209 if session_user. role != UserRole :: Admin {
@@ -220,9 +220,9 @@ async fn remove_user(
220220}
221221
222222async fn create_user (
223- user : Json < CreateUserRequest > ,
224223 app : State < RouterState > ,
225224 SessionUser ( session_user) : SessionUser ,
225+ user : Json < CreateUserRequest > ,
226226) -> ApiResult < impl IntoApiResponse > {
227227 if session_user. role != UserRole :: Admin {
228228 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -239,9 +239,9 @@ async fn create_user(
239239
240240async fn project_create_handler (
241241 app : State < RouterState > ,
242- Json ( project) : Json < CreateProjectRequest > ,
243242 Path ( project_id) : Path < String > ,
244243 SessionUser ( user) : SessionUser ,
244+ Json ( project) : Json < CreateProjectRequest > ,
245245) -> ApiResult < impl IntoApiResponse > {
246246 if user. role != UserRole :: Admin {
247247 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -264,9 +264,9 @@ async fn project_create_handler(
264264
265265async fn project_update_handler (
266266 app : State < RouterState > ,
267- Json ( req) : Json < UpdateProjectRequest > ,
268267 Path ( project_id) : Path < String > ,
269268 SessionUser ( user) : SessionUser ,
269+ Json ( req) : Json < UpdateProjectRequest > ,
270270) -> ApiResult < impl IntoApiResponse > {
271271 if user. role != UserRole :: Admin {
272272 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -292,7 +292,10 @@ async fn project_update_handler(
292292 Ok ( empty_response ( ) )
293293}
294294
295- async fn projects_handler ( app : State < RouterState > , user : Option < SessionUser > ) -> ApiResult < impl IntoApiResponse > {
295+ async fn projects_handler (
296+ app : State < RouterState > ,
297+ MaybeExtract ( user) : MaybeExtract < SessionUser > ,
298+ ) -> ApiResult < impl IntoApiResponse > {
296299 let projects = app. projects . all ( ) . http_err ( "Failed to get projects" , StatusCode :: INTERNAL_SERVER_ERROR ) ?;
297300 let projects: Vec < Project > = projects. into_iter ( ) . filter ( |p| can_access_project ( p, user. as_ref ( ) ) ) . collect ( ) ;
298301
@@ -316,9 +319,9 @@ async fn projects_handler(app: State<RouterState>, user: Option<SessionUser>) ->
316319}
317320
318321async fn project_handler (
319- Path ( project_id) : Path < String > ,
320322 app : State < RouterState > ,
321- user : Option < SessionUser > ,
323+ MaybeExtract ( user) : MaybeExtract < SessionUser > ,
324+ Path ( project_id) : Path < String > ,
322325) -> ApiResult < impl IntoApiResponse > {
323326 let project = app. projects . get ( & project_id) . http_status ( StatusCode :: NOT_FOUND ) ?;
324327 if !can_access_project ( & project, user. as_ref ( ) ) {
@@ -342,8 +345,8 @@ async fn project_handler(
342345}
343346
344347async fn project_delete_handler (
345- Path ( project_id) : Path < String > ,
346348 app : State < RouterState > ,
349+ Path ( project_id) : Path < String > ,
347350 SessionUser ( user) : SessionUser ,
348351) -> ApiResult < impl IntoApiResponse > {
349352 let project = app. projects . get ( & project_id) . http_status ( StatusCode :: NOT_FOUND ) ?;
@@ -386,8 +389,8 @@ async fn entities_handler(app: State<RouterState>, SessionUser(user): SessionUse
386389
387390async fn entity_create_handler (
388391 app : State < RouterState > ,
389- Json ( entity) : Json < CreateEntityRequest > ,
390392 SessionUser ( user) : SessionUser ,
393+ Json ( entity) : Json < CreateEntityRequest > ,
391394) -> ApiResult < Json < EntityResponse > > {
392395 if user. role != UserRole :: Admin {
393396 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -405,9 +408,9 @@ async fn entity_create_handler(
405408
406409async fn entity_update_handler (
407410 app : State < RouterState > ,
408- Json ( entity) : Json < UpdateEntityRequest > ,
409411 Path ( entity_id) : Path < String > ,
410412 SessionUser ( user) : SessionUser ,
413+ Json ( entity) : Json < UpdateEntityRequest > ,
411414) -> ApiResult < impl IntoApiResponse > {
412415 if user. role != UserRole :: Admin {
413416 http_bail ! ( StatusCode :: FORBIDDEN , "Forbidden" )
@@ -429,8 +432,8 @@ async fn entity_update_handler(
429432}
430433
431434async fn entity_delete_handler (
432- Path ( entity_id) : Path < String > ,
433435 app : State < RouterState > ,
436+ Path ( entity_id) : Path < String > ,
434437 SessionUser ( user) : SessionUser ,
435438) -> ApiResult < impl IntoApiResponse > {
436439 if user. role != UserRole :: Admin {
0 commit comments