mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-11-04 00:33:12 +00:00
fix: preserve login method across session windows
This commit is contained in:
1 parent
956031d109
commit
a2d21df237
5 files changed
+33
-3
No files matched your search
@@ -579,7 +579,9 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
|
||||
bool isTerminal = false}) {
|
||||
final connToken = bind.sessionGetConnToken(sessionId: ffi.sessionId);
|
||||
connect(context, id,
|
||||
loginMethod: ffi.loginMethod,
|
||||
loginMethod: bind.sessionGetCommonSync(
|
||||
sessionId: ffi.sessionId, key: 'login_method', param: '') ??
|
||||
'',
|
||||
isFileTransfer: isFileTransfer,
|
||||
isViewCamera: isViewCamera,
|
||||
isTerminal: isTerminal,
|
||||
|
||||
@@ -4032,7 +4032,6 @@ class FFI {
|
||||
var id = '';
|
||||
var version = '';
|
||||
var connType = ConnType.defaultConn;
|
||||
var loginMethod = '';
|
||||
var closed = false;
|
||||
|
||||
/// dialogManager use late to ensure init after main page binding [globalKey]
|
||||
@@ -4127,7 +4126,6 @@ class FFI {
|
||||
List<int>? displays,
|
||||
String loginMethod = '',
|
||||
}) {
|
||||
this.loginMethod = loginMethod;
|
||||
closed = false;
|
||||
if (isMobile) mobileReset();
|
||||
assert(
|
||||
|
||||
@@ -1966,6 +1966,9 @@ class RustdeskImpl {
|
||||
required String key,
|
||||
required String param,
|
||||
dynamic hint}) {
|
||||
if (key == 'login_method') {
|
||||
return js.context.callMethod('getByName', ['login_method']);
|
||||
}
|
||||
throw UnimplementedError("sessionGetCommonSync");
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,13 @@ impl LoginConfigHandler {
|
||||
pub(crate) fn skips_saved_password(&self) -> bool {
|
||||
self.login_method != LoginMethod::Automatic
|
||||
}
|
||||
|
||||
pub(crate) fn get_login_method(&self) -> &'static str {
|
||||
match self.login_method {
|
||||
LoginMethod::Automatic => "",
|
||||
LoginMethod::Consent => "consent",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(test, feature = "flutter"))]
|
||||
@@ -70,9 +77,27 @@ mod tests {
|
||||
None,
|
||||
method.to_owned(),
|
||||
);
|
||||
let monitor_session_id = uuid::Uuid::new_v4();
|
||||
let monitor_result = crate::flutter_ffi::session_add_existed_sync(
|
||||
format!("login-method-init-{}", session_id),
|
||||
monitor_session_id,
|
||||
vec![0],
|
||||
false,
|
||||
);
|
||||
let methods = [session_id, monitor_session_id].map(|id| {
|
||||
crate::flutter_ffi::session_get_common_sync(
|
||||
id,
|
||||
"login_method".to_owned(),
|
||||
String::new(),
|
||||
)
|
||||
.0
|
||||
});
|
||||
crate::flutter::sessions::remove_session_by_session_id(&monitor_session_id);
|
||||
let session = crate::flutter::sessions::remove_session_by_session_id(&session_id);
|
||||
hbb_common::config::LocalConfig::set_remote_id(&remote_id);
|
||||
assert!(result.0.is_empty(), "{}", result.0);
|
||||
assert!(monitor_result.0.is_empty(), "{}", monitor_result.0);
|
||||
assert_eq!(methods, [Some(method.to_owned()), Some(method.to_owned())]);
|
||||
let session = session.unwrap();
|
||||
let request = session
|
||||
.lc
|
||||
|
||||
@@ -3055,6 +3055,8 @@ pub fn session_get_common(
|
||||
if let Some(s) = sessions::get_session_by_session_id(&session_id) {
|
||||
let v = if key == "is_screenshot_supported" {
|
||||
s.is_screenshot_supported().to_string()
|
||||
} else if key == "login_method" {
|
||||
s.lc.read().unwrap().get_login_method().to_owned()
|
||||
} else {
|
||||
"".to_owned()
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user