Merge pull request #4705 from 21pages/email
sciter email login, add device info
This commit is contained in:
		
						commit
						c4058ae210
					
				| @ -592,7 +592,7 @@ pub fn main_get_default_sound_input() -> Option<String> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub fn main_get_hostname() -> SyncReturn<String> { | pub fn main_get_hostname() -> SyncReturn<String> { | ||||||
|     SyncReturn(crate::common::hostname()) |     SyncReturn(get_hostname()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub fn main_change_id(new_id: String) { | pub fn main_change_id(new_id: String) { | ||||||
|  | |||||||
| @ -585,6 +585,10 @@ impl UI { | |||||||
|     fn handle_relay_id(&self, id: String) -> String { |     fn handle_relay_id(&self, id: String) -> String { | ||||||
|         handle_relay_id(id) |         handle_relay_id(id) | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     fn get_hostname(&self) -> String { | ||||||
|  |         get_hostname() | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl sciter::EventHandler for UI { | impl sciter::EventHandler for UI { | ||||||
| @ -669,6 +673,7 @@ impl sciter::EventHandler for UI { | |||||||
|         fn get_langs(); |         fn get_langs(); | ||||||
|         fn default_video_save_directory(); |         fn default_video_save_directory(); | ||||||
|         fn handle_relay_id(String); |         fn handle_relay_id(String); | ||||||
|  |         fn get_hostname(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1195,13 +1195,19 @@ function login() { | |||||||
|         } |         } | ||||||
|         abLoading = true; |         abLoading = true; | ||||||
|         var url = handler.get_api_server(); |         var url = handler.get_api_server(); | ||||||
|         httpRequest(url + "/api/login", #post, {username: name, password: pass, id: my_id, uuid: handler.get_uuid(), type: 'account'}, function(data) { |         httpRequest(url + "/api/login", #post, {username: name, password: pass, id: my_id, uuid: handler.get_uuid(), type: 'account', deviceInfo: getDeviceInfo()}, function(data) { | ||||||
|             if (data.error) { |             if (data.error) { | ||||||
|                 abLoading = false; |                 abLoading = false; | ||||||
|                 var err = translate(data.error); |                 var err = translate(data.error); | ||||||
|                 show_progress(false, err); |                 show_progress(false, err); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |             if (data.type == 'email_check') { | ||||||
|  |                 abLoading = false; | ||||||
|  |                 show_progress(-1); | ||||||
|  |                 on_email_check(data); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|             handler.set_local_option("access_token", data.access_token); |             handler.set_local_option("access_token", data.access_token); | ||||||
|             handler.set_local_option("user_info", JSON.stringify(data.user)); |             handler.set_local_option("user_info", JSON.stringify(data.user)); | ||||||
|             show_progress(-1); |             show_progress(-1); | ||||||
| @ -1217,6 +1223,48 @@ function login() { | |||||||
|       }); |       }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function on_email_check(last_msg) { | ||||||
|  |     var emailHint = last_msg.user.email; | ||||||
|  |     msgbox("custom-email-verification-code", translate('Verification code'), <div .form .set-password>  | ||||||
|  |             <div><span>{translate('Email')}:</span><span>{emailHint}</span></div>  | ||||||
|  |             <div><span>{translate('Verification code')}:</span><input|text name="verification_code" .outline-focus /></div>  | ||||||
|  |             <div style="font-size:0.9em; margin-bottom:1em;">{translate('verification_tip')}</div> | ||||||
|  |         </div>, "",  | ||||||
|  |         function(res=null, show_progress) { | ||||||
|  |             if (!res) return; | ||||||
|  |             show_progress(); | ||||||
|  |             var code = (res.verification_code || '').trim(); | ||||||
|  |             if (!code || code.length < 6) { | ||||||
|  |                 show_progress(false, translate("Too short, at least 6 characters.")); | ||||||
|  |                 return " "; | ||||||
|  |             } | ||||||
|  |             abLoading = true; | ||||||
|  |             var url = handler.get_api_server(); | ||||||
|  |             httpRequest(url + "/api/login", #post, {username: last_msg.user.name, id: my_id, uuid: handler.get_uuid(), type: 'email_code', trustThisDevice: false, verificationCode: code, deviceInfo: getDeviceInfo()},  | ||||||
|  |                 function(data) { | ||||||
|  |                     if (data.type != 'access_token') { | ||||||
|  |                         abLoading = false; | ||||||
|  |                         show_progress(false, "Failed, bad response from server."); | ||||||
|  |                         return; | ||||||
|  |                     } | ||||||
|  |                     handler.set_local_option("access_token", data.access_token); | ||||||
|  |                     handler.set_local_option("user_info", JSON.stringify(data.user)); | ||||||
|  |                     show_progress(-1); | ||||||
|  |                     myIdMenu.update(); | ||||||
|  |                     getAb(); | ||||||
|  |                 }, | ||||||
|  |                 function(err, status) { | ||||||
|  |                     abLoading = false; | ||||||
|  |                     err = translate(err); | ||||||
|  |                     if (url.indexOf('rustdesk') < 0) err = url + ', ' + err; | ||||||
|  |                     show_progress(false, err); | ||||||
|  |                 } | ||||||
|  |             ); | ||||||
|  |             return " "; | ||||||
|  |         } | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function reset_token() { | function reset_token() { | ||||||
|     handler.set_local_option("access_token", ""); |     handler.set_local_option("access_token", ""); | ||||||
|     handler.set_local_option("user_info", ""); |     handler.set_local_option("user_info", ""); | ||||||
| @ -1261,3 +1309,20 @@ function refreshCurrentUser() { | |||||||
| function getHttpHeaders() { | function getHttpHeaders() { | ||||||
|     return "Authorization: Bearer " + handler.get_local_option("access_token"); |     return "Authorization: Bearer " + handler.get_local_option("access_token"); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | function getDeviceInfo() { | ||||||
|  |     var os; | ||||||
|  |     if (is_win) { | ||||||
|  |         os = 'windows'; | ||||||
|  |     } else if (is_linux) { | ||||||
|  |         os = 'linux'; | ||||||
|  |     } else if (is_osx) { | ||||||
|  |         os = 'macos'; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return { | ||||||
|  |         os: os, | ||||||
|  |         type: 'client', | ||||||
|  |         name: handler.get_hostname() | ||||||
|  |     }; | ||||||
|  | } | ||||||
| @ -848,6 +848,10 @@ pub fn get_fingerprint() -> String { | |||||||
|     return ipc::get_fingerprint(); |     return ipc::get_fingerprint(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | pub fn get_hostname() -> String { | ||||||
|  |     crate::common::hostname() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // notice: avoiding create ipc connection repeatedly,
 | // notice: avoiding create ipc connection repeatedly,
 | ||||||
| // because windows named pipe has serious memory leak issue.
 | // because windows named pipe has serious memory leak issue.
 | ||||||
| #[cfg(not(any(target_os = "android", target_os = "ios")))] | #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user