@ -6,8 +6,7 @@ use serde_json::Value;
use crate ::{
use crate ::{
api ::{
api ::{
core ::{ log_event , CipherSyncData , CipherSyncType } ,
core ::{ log_event , CipherSyncData , CipherSyncType } ,
ApiResult , EmptyResult , JsonResult , JsonUpcase , JsonUpcaseVec , JsonVec , Notify , NumberOrString , PasswordData ,
EmptyResult , JsonResult , JsonUpcase , JsonUpcaseVec , JsonVec , Notify , NumberOrString , PasswordData , UpdateType ,
UpdateType ,
} ,
} ,
auth ::{ decode_invite , AdminHeaders , Headers , ManagerHeaders , ManagerHeadersLoose , OwnerHeaders } ,
auth ::{ decode_invite , AdminHeaders , Headers , ManagerHeaders , ManagerHeadersLoose , OwnerHeaders } ,
db ::{ models ::* , DbConn } ,
db ::{ models ::* , DbConn } ,
@ -468,7 +467,11 @@ async fn post_organization_collection_update(
}
}
collection . name = data . Name ;
collection . name = data . Name ;
collection . external_id = data . ExternalId ;
collection . external_id = match data . ExternalId {
Some ( external_id ) if ! external_id . trim ( ) . is_empty ( ) = > Some ( external_id ) ,
_ = > None ,
} ;
collection . save ( & mut conn ) . await ? ;
collection . save ( & mut conn ) . await ? ;
log_event (
log_event (
@ -2222,29 +2225,22 @@ struct GroupRequest {
}
}
impl GroupRequest {
impl GroupRequest {
pub fn to_group ( & self , organizations_uuid : & str ) -> ApiResult < Group > {
pub fn to_group ( & self , organizations_uuid : & str ) -> Group {
match self . AccessAll {
Group ::new (
Some ( access_all_value ) = > Ok ( Group ::new (
String ::from ( organizations_uuid ) ,
organizations_uuid . to_owned ( ) ,
self . Name . clone ( ) ,
self . Name . clone ( ) ,
self . AccessAll . unwrap_or ( false ) ,
access_all_value ,
self . ExternalId . clone ( ) ,
self . ExternalId . clone ( ) ,
)
) ) ,
_ = > err ! ( "Could not convert GroupRequest to Group, because AccessAll has no value!" ) ,
}
}
}
pub fn update_group ( & self , mut group : Group ) -> ApiResult < Group > {
pub fn update_group ( & self , mut group : Group ) -> Group {
match self . AccessAll {
group . name = self . Name . clone ( ) ;
Some ( access_all_value ) = > {
group . access_all = self . AccessAll . unwrap_or ( false ) ;
group . name = self . Name . clone ( ) ;
// Group Updates do not support changing the external_id
group . access_all = access_all_value ;
// These input fields are in a disabled state, and can only be updated/added via ldap_import
group . set_external_id ( self . ExternalId . clone ( ) ) ;
Ok ( group )
group
}
_ = > err ! ( "Could not update group, because AccessAll has no value!" ) ,
}
}
}
}
}
@ -2305,7 +2301,7 @@ async fn post_groups(
}
}
let group_request = data . into_inner ( ) . data ;
let group_request = data . into_inner ( ) . data ;
let group = group_request . to_group ( org_id ) ? ;
let group = group_request . to_group ( org_id ) ;
log_event (
log_event (
EventType ::GroupCreated as i32 ,
EventType ::GroupCreated as i32 ,
@ -2339,7 +2335,7 @@ async fn put_group(
} ;
} ;
let group_request = data . into_inner ( ) . data ;
let group_request = data . into_inner ( ) . data ;
let updated_group = group_request . update_group ( group ) ? ;
let updated_group = group_request . update_group ( group ) ;
CollectionGroup ::delete_all_by_group ( group_id , & mut conn ) . await ? ;
CollectionGroup ::delete_all_by_group ( group_id , & mut conn ) . await ? ;
GroupUser ::delete_all_by_group ( group_id , & mut conn ) . await ? ;
GroupUser ::delete_all_by_group ( group_id , & mut conn ) . await ? ;