diff options
author | Martin Fischer <martin@push-f.com> | 2021-06-24 17:45:54 +0200 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-06-24 18:02:30 +0200 |
commit | d49d835e63ec654e3a5bf75b3b365354460382e8 (patch) | |
tree | 4fc823707248f770b8595b5537bef7a75e503335 /src/get_routes.rs | |
parent | 0bb0af08c3fb7e100e5451e636719ce367fe1138 (diff) |
refactor: simplify Controller request interception
In multi-user mode if Alice attempts to access /~bob/ she would get an
Unauthorized error since branches are private. To improve the UX we
instead already showed Alice a list of which files Bob has shared with
her. Previously this was achieved with an before_return_error hook
in the Controller trait.
While this worked fine, it wasn't elegant, since it required passing
the Context struct in all Unauthorized errors, so that the
before_return_error hook could access the context.
This commit refactors the code to intercept requests to paths like
/~bob/ before the regular request handling instead of afterwards.
While this could have been implemented in the before_route hook, this
would have required either invoking parse_url_path a second time or
passing the Result of parse_url_path, both of which would be akward.
Therefore this commit also merges before_route into parse_url_path.
Diffstat (limited to 'src/get_routes.rs')
-rw-r--r-- | src/get_routes.rs | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/src/get_routes.rs b/src/get_routes.rs index d876b4f..ff86869 100644 --- a/src/get_routes.rs +++ b/src/get_routes.rs @@ -100,7 +100,6 @@ fn edit_blob<C: Controller>( if !controller.may_write_path(&ctx) { return Err(Error::Unauthorized( "you are not authorized to edit this file".into(), - ctx, )); } let blob = ctx.repo.find_blob(entr.id()).unwrap(); @@ -359,7 +358,6 @@ fn move_blob<C: Controller>( if !controller.may_move_path(&ctx) { return Err(Error::Unauthorized( "you are not authorized to move this file".into(), - ctx, )); } @@ -386,7 +384,6 @@ fn remove_blob<C: Controller>( if !controller.may_move_path(&ctx) { return Err(Error::Unauthorized( "you are not authorized to remove this file".into(), - ctx, )); } |