11use mockall:: * ;
22use serde:: { Deserialize , Serialize } ;
3- use thiserror:: Error ;
43use uuid:: Uuid ;
54
6- #[ derive( Error , Debug ) ]
7- pub enum AuthorizationError {
8- #[ error( "authorization error" ) ]
9- Error ,
10- }
11-
125#[ derive( Clone ) ]
136pub struct User {
147 pub user_id : Uuid ,
@@ -17,34 +10,28 @@ pub struct User {
1710
1811#[ automock]
1912pub trait IAuthorization : Send + Sync {
20- fn can_get_user ( & self , actor : User , resource_id : Uuid ) -> Result < bool , AuthorizationError > ;
13+ fn can_get_user ( & self , actor : User , resource_id : Uuid ) -> bool ;
2114 // fn can_modify_user(&self, actor: User, resource_id: Uuid) -> Result<bool, AuthorizationError>;
2215 // fn can_delete_user(&self, actor: User, resource_id: Uuid) -> Result<bool, AuthorizationError>;
23- fn can_list_users ( & self , actor : User ) -> Result < bool , AuthorizationError > ;
16+ fn can_list_users ( & self , actor : User ) -> bool ;
2417 // fn can_create_user(&self, actor: User) -> Result<bool, AuthorizationError>;
2518}
2619
2720#[ derive( Clone , Serialize , Deserialize ) ]
2821pub struct Authorization ;
2922
3023impl Authorization {
31- fn is_user_admin ( & self , actor : User ) -> Result < bool , AuthorizationError > {
32- if actor. role == "admin" {
33- return Ok ( true ) ;
34- }
35- Err ( AuthorizationError :: Error )
24+ fn is_user_admin ( & self , actor : User ) -> bool {
25+ return actor. role == "admin" ;
3626 }
3727}
3828
3929impl IAuthorization for Authorization {
40- fn can_get_user ( & self , actor : User , resource_id : Uuid ) -> Result < bool , AuthorizationError > {
41- self . is_user_admin ( actor. clone ( ) )
42- . or ( match actor. user_id == resource_id {
43- true => Ok ( true ) ,
44- false => Err ( AuthorizationError :: Error ) ,
45- } )
30+ fn can_get_user ( & self , actor : User , resource_id : Uuid ) -> bool {
31+ return self . is_user_admin ( actor. clone ( ) ) || actor. user_id == resource_id;
4632 }
47- fn can_list_users ( & self , actor : User ) -> Result < bool , AuthorizationError > {
33+
34+ fn can_list_users ( & self , actor : User ) -> bool {
4835 self . is_user_admin ( actor)
4936 }
5037}
0 commit comments