complex pernament password
lowercase, uppercase, digit, length>=8 Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
2a7f8d5367
commit
9aecd28702
121
flutter/lib/common/widgets/custom_password.dart
Normal file
121
flutter/lib/common/widgets/custom_password.dart
Normal file
@ -0,0 +1,121 @@
|
||||
// https://github.com/rodrigobastosv/fancy_password_field
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:password_strength/password_strength.dart';
|
||||
|
||||
abstract class ValidationRule {
|
||||
String get name;
|
||||
bool validate(String value);
|
||||
}
|
||||
|
||||
class UppercaseValidationRule extends ValidationRule {
|
||||
@override
|
||||
String get name => translate('uppercase');
|
||||
@override
|
||||
bool validate(String value) {
|
||||
return value.contains(RegExp(r'[A-Z]'));
|
||||
}
|
||||
}
|
||||
|
||||
class LowercaseValidationRule extends ValidationRule {
|
||||
@override
|
||||
String get name => translate('lowercase');
|
||||
|
||||
@override
|
||||
bool validate(String value) {
|
||||
return value.contains(RegExp(r'[a-z]'));
|
||||
}
|
||||
}
|
||||
|
||||
class DigitValidationRule extends ValidationRule {
|
||||
@override
|
||||
String get name => translate('digit');
|
||||
|
||||
@override
|
||||
bool validate(String value) {
|
||||
return value.contains(RegExp(r'[0-9]'));
|
||||
}
|
||||
}
|
||||
|
||||
class SpecialCharacterValidationRule extends ValidationRule {
|
||||
@override
|
||||
String get name => translate('special character');
|
||||
|
||||
@override
|
||||
bool validate(String value) {
|
||||
return value.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
|
||||
}
|
||||
}
|
||||
|
||||
class MinCharactersValidationRule extends ValidationRule {
|
||||
final int _numberOfCharacters;
|
||||
MinCharactersValidationRule(this._numberOfCharacters);
|
||||
|
||||
@override
|
||||
String get name => translate('length>=$_numberOfCharacters');
|
||||
|
||||
@override
|
||||
bool validate(String value) {
|
||||
return value.length >= _numberOfCharacters;
|
||||
}
|
||||
}
|
||||
|
||||
class PasswordStrengthIndicator extends StatelessWidget {
|
||||
final RxString password;
|
||||
final double weakMedium = 0.33;
|
||||
final double mediumStrong = 0.67;
|
||||
const PasswordStrengthIndicator({Key? key, required this.password})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Obx(() {
|
||||
var strength = estimatePasswordStrength(password.value);
|
||||
return Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: _indicator(
|
||||
password.isEmpty ? Colors.grey : _getColor(strength))),
|
||||
Expanded(
|
||||
child: _indicator(password.isEmpty || strength < weakMedium
|
||||
? Colors.grey
|
||||
: _getColor(strength))),
|
||||
Expanded(
|
||||
child: _indicator(password.isEmpty || strength < mediumStrong
|
||||
? Colors.grey
|
||||
: _getColor(strength))),
|
||||
Text(password.isEmpty ? '' : translate(_getLabel(strength)))
|
||||
.marginOnly(left: password.isEmpty ? 0 : 8),
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Widget _indicator(Color color) {
|
||||
return Container(
|
||||
height: 8,
|
||||
color: color,
|
||||
);
|
||||
}
|
||||
|
||||
String _getLabel(double strength) {
|
||||
if (strength < weakMedium) {
|
||||
return 'Weak';
|
||||
} else if (strength < mediumStrong) {
|
||||
return 'Medium';
|
||||
} else {
|
||||
return 'Strong';
|
||||
}
|
||||
}
|
||||
|
||||
Color _getColor(double strength) {
|
||||
if (strength < weakMedium) {
|
||||
return Colors.yellow;
|
||||
} else if (strength < mediumStrong) {
|
||||
return Colors.blue;
|
||||
} else {
|
||||
return Colors.green;
|
||||
}
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:flutter/material.dart' hide MenuItem;
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/common/widgets/custom_password.dart';
|
||||
import 'package:flutter_hbb/consts.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
||||
@ -543,6 +544,14 @@ void setPasswordDialog() async {
|
||||
final p1 = TextEditingController(text: pw);
|
||||
var errMsg0 = "";
|
||||
var errMsg1 = "";
|
||||
final RxString rxPass = p0.text.obs;
|
||||
final rules = [
|
||||
DigitValidationRule(),
|
||||
UppercaseValidationRule(),
|
||||
LowercaseValidationRule(),
|
||||
// SpecialCharacterValidationRule(),
|
||||
MinCharactersValidationRule(8),
|
||||
];
|
||||
|
||||
gFFI.dialogManager.show((setState, close) {
|
||||
submit() {
|
||||
@ -551,15 +560,20 @@ void setPasswordDialog() async {
|
||||
errMsg1 = "";
|
||||
});
|
||||
final pass = p0.text.trim();
|
||||
if (pass.length < 6 && pass.isNotEmpty) {
|
||||
setState(() {
|
||||
errMsg0 = translate("Too short, at least 6 characters.");
|
||||
});
|
||||
return;
|
||||
if (pass.isNotEmpty) {
|
||||
for (var r in rules) {
|
||||
if (!r.validate(pass)) {
|
||||
setState(() {
|
||||
errMsg0 = '${translate('Prompt')}: ${r.name}';
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (p1.text.trim() != pass) {
|
||||
setState(() {
|
||||
errMsg1 = translate("The confirmation is not identical.");
|
||||
errMsg1 =
|
||||
'${translate('Prompt')}: ${translate("The confirmation is not identical.")}';
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -579,23 +593,44 @@ void setPasswordDialog() async {
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(minWidth: 100),
|
||||
child: Text(
|
||||
"${translate('Password')}:",
|
||||
textAlign: TextAlign.start,
|
||||
).marginOnly(bottom: 16.0)),
|
||||
const SizedBox(
|
||||
width: 24.0,
|
||||
),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
obscureText: true,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
contentPadding: EdgeInsets.all(15),
|
||||
labelText: translate('Password'),
|
||||
border: const OutlineInputBorder(),
|
||||
errorText: errMsg0.isNotEmpty ? errMsg0 : null),
|
||||
controller: p0,
|
||||
focusNode: FocusNode()..requestFocus(),
|
||||
onChanged: (value) {
|
||||
rxPass.value = value;
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: PasswordStrengthIndicator(password: rxPass)),
|
||||
],
|
||||
).marginSymmetric(vertical: 8),
|
||||
const SizedBox(
|
||||
height: 8.0,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TextField(
|
||||
obscureText: true,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
contentPadding: EdgeInsets.all(15),
|
||||
border: const OutlineInputBorder(),
|
||||
labelText: translate('Confirmation'),
|
||||
errorText: errMsg1.isNotEmpty ? errMsg1 : null),
|
||||
controller: p1,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -603,26 +638,24 @@ void setPasswordDialog() async {
|
||||
const SizedBox(
|
||||
height: 8.0,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(minWidth: 100),
|
||||
child: Text("${translate('Confirmation')}:")
|
||||
.marginOnly(bottom: 16.0)),
|
||||
const SizedBox(
|
||||
width: 24.0,
|
||||
),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
obscureText: true,
|
||||
decoration: InputDecoration(
|
||||
border: const OutlineInputBorder(),
|
||||
errorText: errMsg1.isNotEmpty ? errMsg1 : null),
|
||||
controller: p1,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Obx(() => Wrap(
|
||||
runSpacing: 8,
|
||||
spacing: 4,
|
||||
children: rules.map((e) {
|
||||
var checked = e.validate(rxPass.value.trim());
|
||||
return Chip(
|
||||
label: Text(
|
||||
e.name,
|
||||
style: TextStyle(
|
||||
color: checked
|
||||
? const Color(0xFF0A9471)
|
||||
: Color.fromARGB(255, 198, 86, 157)),
|
||||
),
|
||||
backgroundColor: checked
|
||||
? const Color(0xFFD0F7ED)
|
||||
: Color.fromARGB(255, 247, 205, 232));
|
||||
}).toList(),
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -93,6 +93,7 @@ dependencies:
|
||||
auto_size_text: ^3.0.0
|
||||
bot_toast: ^4.0.3
|
||||
win32: any
|
||||
password_strength: ^0.2.0
|
||||
|
||||
|
||||
dev_dependencies:
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "使用软件渲染"),
|
||||
("config_input", "为了能够通过键盘控制远程桌面, 请给予 RustDesk \"输入监控\" 权限。"),
|
||||
("request_elevation_tip", "如果对面有人, 也可以请求提升权限。"),
|
||||
("Wait","等待"),
|
||||
("Wait", "等待"),
|
||||
("Elevation Error", "提权失败"),
|
||||
("Ask the remote user for authentication", "请求远端用户授权"),
|
||||
("Choose this if the remote account is administrator", "当对面电脑是管理员账号时选择该选项"),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", "请求提权"),
|
||||
("wait_accept_uac_tip", "请等待远端用户确认UAC对话框。"),
|
||||
("Elevate successfully", "提权成功"),
|
||||
("uppercase", "大写字母"),
|
||||
("lowercase", "小写字母"),
|
||||
("digit", "数字"),
|
||||
("special character", "特殊字符"),
|
||||
("length>=8", "长度不小于8"),
|
||||
("Weak", "弱"),
|
||||
("Medium", "中"),
|
||||
("Strong", "强"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "Software-Rendering immer verwenden"),
|
||||
("config_input", "Um den entfernten Desktop mit der Tastatur steuern zu können, müssen Sie RustDesk \"Input Monitoring\"-Rechte erteilen."),
|
||||
("request_elevation_tip", "Sie können auch erhöhte Rechte anfordern, wenn sich jemand auf der Gegenseite befindet."),
|
||||
("Wait","Warten"),
|
||||
("Wait", "Warten"),
|
||||
("Elevation Error", "Berechtigungsfehler"),
|
||||
("Ask the remote user for authentication", "Den entfernten Benutzer zur Authentifizierung auffordern"),
|
||||
("Choose this if the remote account is administrator", "Wählen Sie dies, wenn das entfernte Konto Administrator ist"),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", "Erhöhte Rechte anfordern"),
|
||||
("wait_accept_uac_tip", "Bitte warten Sie, bis der entfernte Benutzer den UAC-Dialog akzeptiert hat."),
|
||||
("Elevate successfully", "Erhöhung der Rechte erfolgreich"),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "Usar siempre renderizado por software"),
|
||||
("config_input", "Para controlar el escritorio remoto con el teclado necesitas dar a RustDesk permisos de \"Monitorización de entrada\"."),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "Utiliser toujours le rendu logiciel"),
|
||||
("config_input", "Afin de contrôler le bureau à distance avec le clavier, vous devez accorder à Rustdesk l'autorisation \"Surveillance de l’entrée\"."),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", "Richiedi elevazione dei diritti"),
|
||||
("wait_accept_uac_tip", "Attendere che l'utente remoto accetti la finestra di dialogo UAC."),
|
||||
("Elevate successfully", "Elevazione dei diritti effettuata con successo"),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "Использовать программную визуализацию"),
|
||||
("config_input", "Чтобы управлять удалённым рабочим столом с помощью клавиатуры, необходимо предоставить RustDesk разрешения \"Мониторинг ввода\"."),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", "使用軟件渲染"),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", "如果對面有人, 也可以請求提升權限。"),
|
||||
("Wait","等待"),
|
||||
("Wait", "等待"),
|
||||
("Elevation Error", "提權失敗"),
|
||||
("Ask the remote user for authentication", "請求遠端用戶授權"),
|
||||
("Choose this if the remote account is administrator", "當對面電腦是管理員賬號時選擇該選項"),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", "請求提權"),
|
||||
("wait_accept_uac_tip", "請等待遠端用戶確認UAC對話框。"),
|
||||
("Elevate successfully", "提權成功"),
|
||||
("uppercase", "大寫字母"),
|
||||
("lowercase", "小寫字母"),
|
||||
("digit", "數字"),
|
||||
("special character", "特殊字符"),
|
||||
("length>=8", "長度不小於8"),
|
||||
("Weak", "弱"),
|
||||
("Medium", "中"),
|
||||
("Strong", "強"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
("request_elevation_tip", ""),
|
||||
("Wait",""),
|
||||
("Wait", ""),
|
||||
("Elevation Error", ""),
|
||||
("Ask the remote user for authentication", ""),
|
||||
("Choose this if the remote account is administrator", ""),
|
||||
@ -423,5 +423,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Request Elevation", ""),
|
||||
("wait_accept_uac_tip", ""),
|
||||
("Elevate successfully", ""),
|
||||
("uppercase", ""),
|
||||
("lowercase", ""),
|
||||
("digit", ""),
|
||||
("special character", ""),
|
||||
("length>=8", ""),
|
||||
("Weak", ""),
|
||||
("Medium", ""),
|
||||
("Strong", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user