@ -107,7 +107,7 @@ async fn _refresh_login(data: ConnectData, conn: &mut DbConn) -> JsonResult {
let ( access_token , expires_in ) = device . refresh_tokens ( & user , orgs , scope_vec ) ;
let ( access_token , expires_in ) = device . refresh_tokens ( & user , orgs , scope_vec ) ;
device . save ( conn ) . await ? ;
device . save ( conn ) . await ? ;
let mut result = json ! ( {
let result = json ! ( {
"access_token" : access_token ,
"access_token" : access_token ,
"expires_in" : expires_in ,
"expires_in" : expires_in ,
"token_type" : "Bearer" ,
"token_type" : "Bearer" ,
@ -117,18 +117,13 @@ async fn _refresh_login(data: ConnectData, conn: &mut DbConn) -> JsonResult {
"Kdf" : user . client_kdf_type ,
"Kdf" : user . client_kdf_type ,
"KdfIterations" : user . client_kdf_iter ,
"KdfIterations" : user . client_kdf_iter ,
"KdfMemory" : user . client_kdf_memory ,
"KdfParallelism" : user . client_kdf_parallelism ,
"ResetMasterPassword" : false , // TODO: according to official server seems something like: user.password_hash.is_empty(), but would need testing
"ResetMasterPassword" : false , // TODO: according to official server seems something like: user.password_hash.is_empty(), but would need testing
"scope" : scope ,
"scope" : scope ,
"unofficialServer" : true ,
"unofficialServer" : true ,
} ) ;
} ) ;
if user . client_kdf_type = = UserKdfType ::Argon2id as i32 {
result [ "KdfMemory" ] =
Value ::Number ( user . client_kdf_memory . expect ( "Argon2 memory parameter is required." ) . into ( ) ) ;
result [ "KdfParallelism" ] =
Value ::Number ( user . client_kdf_parallelism . expect ( "Argon2 parallelism parameter is required." ) . into ( ) ) ;
}
Ok ( Json ( result ) )
Ok ( Json ( result ) )
}
}
@ -260,6 +255,8 @@ async fn _password_login(
"Kdf" : user . client_kdf_type ,
"Kdf" : user . client_kdf_type ,
"KdfIterations" : user . client_kdf_iter ,
"KdfIterations" : user . client_kdf_iter ,
"KdfMemory" : user . client_kdf_memory ,
"KdfParallelism" : user . client_kdf_parallelism ,
"ResetMasterPassword" : false , // TODO: Same as above
"ResetMasterPassword" : false , // TODO: Same as above
"scope" : scope ,
"scope" : scope ,
"unofficialServer" : true ,
"unofficialServer" : true ,
@ -269,13 +266,6 @@ async fn _password_login(
result [ "TwoFactorToken" ] = Value ::String ( token ) ;
result [ "TwoFactorToken" ] = Value ::String ( token ) ;
}
}
if user . client_kdf_type = = UserKdfType ::Argon2id as i32 {
result [ "KdfMemory" ] =
Value ::Number ( user . client_kdf_memory . expect ( "Argon2 memory parameter is required." ) . into ( ) ) ;
result [ "KdfParallelism" ] =
Value ::Number ( user . client_kdf_parallelism . expect ( "Argon2 parallelism parameter is required." ) . into ( ) ) ;
}
info ! ( "User {} logged in successfully. IP: {}" , username , ip . ip ) ;
info ! ( "User {} logged in successfully. IP: {}" , username , ip . ip ) ;
Ok ( Json ( result ) )
Ok ( Json ( result ) )
}
}
@ -360,7 +350,7 @@ async fn _api_key_login(
// Note: No refresh_token is returned. The CLI just repeats the
// Note: No refresh_token is returned. The CLI just repeats the
// client_credentials login flow when the existing token expires.
// client_credentials login flow when the existing token expires.
let mut result = json ! ( {
let result = json ! ( {
"access_token" : access_token ,
"access_token" : access_token ,
"expires_in" : expires_in ,
"expires_in" : expires_in ,
"token_type" : "Bearer" ,
"token_type" : "Bearer" ,
@ -369,18 +359,13 @@ async fn _api_key_login(
"Kdf" : user . client_kdf_type ,
"Kdf" : user . client_kdf_type ,
"KdfIterations" : user . client_kdf_iter ,
"KdfIterations" : user . client_kdf_iter ,
"KdfMemory" : user . client_kdf_memory ,
"KdfParallelism" : user . client_kdf_parallelism ,
"ResetMasterPassword" : false , // TODO: Same as above
"ResetMasterPassword" : false , // TODO: Same as above
"scope" : scope ,
"scope" : scope ,
"unofficialServer" : true ,
"unofficialServer" : true ,
} ) ;
} ) ;
if user . client_kdf_type = = UserKdfType ::Argon2id as i32 {
result [ "KdfMemory" ] =
Value ::Number ( user . client_kdf_memory . expect ( "Argon2 memory parameter is required." ) . into ( ) ) ;
result [ "KdfParallelism" ] =
Value ::Number ( user . client_kdf_parallelism . expect ( "Argon2 parallelism parameter is required." ) . into ( ) ) ;
}
Ok ( Json ( result ) )
Ok ( Json ( result ) )
}
}