validatePassword static method
- String? value, [
- bool oldPass = false,
- bool profilePass = false,
- UserClass? currentUser,
- BuildContext? context,
Valida el campo de contraseña.
Este método se utiliza en varias partes de la aplicación para evitar duplicación de código. Admite varios parámetros opcionales para adaptar la validación según el contexto.
Parámetros:
value
: La contraseña ingresada por el usuario.oldPass
(opcional,false
por defecto): Indica si la validación es para la verificación de la contraseña anterior en un diálogo.profilePass
(opcional,false
por defecto): Indica si la validación es para el formulario del perfil (permite contraseña vacía).currentUser
: ObjetoUser
que representa al usuario actual, usado para comparar la contraseña anterior en caso de ser necesario.context
: Contexto necesario para la internacionalización del mensaje de error cuando la contraseña antigua no coincide.
Reglas de validación:
Retorna un mensaje de error si la contraseña no cumple con:
- No estar vacía (excepto en el formulario de perfil).
- Tener un valor, no estar vacía (por la contraseña del profile).
- Tener al menos 8 caracteres.
- No contener espacios en blanco.
- Incluir al menos un carácter especial.
- Incluir al menos un número.
- Si es el dialogo de la antigua contraseña, tiene que coincidir el valor proporcionado con la contraseña guardada, si no, mostrará un mensaje de error.
Retorna la key o null
si la contraseña es válida.
Implementation
static String? validatePassword(String? value,
[bool oldPass = false,
bool profilePass = false,
UserClass? currentUser,
BuildContext? context]) {
if (!profilePass && (value == null || value.isEmpty)) {
return "form_error_required_field";
} // VALIDAR CAMPOS VACIOS (EXCEPTO SI ES DEL PROFILE)
if (value!.isNotEmpty) {
if (value.length < 8) {
return "form_error_minimum_8_characters";
} // VALIDAR QUE LA CONTRASEÑA CONTENGA AL MENSO 8 CARACTERES
if (value.contains(' ')) {
return "form_error_no_spaces_allowed";
} // VALIDAR QUE LA CONTRASEÑA NO CONTENGA ESPACIOS EN BLANCO
if (!RegExp(r'[!@#$%^&*(),.?":{}|<>]').hasMatch(value)) {
return "form_error_special_character_required";
} // DEBE CONTENER AL MENOS UN CARACTER ESPECIAL
if (!RegExp(r'[0-9]').hasMatch(value)) {
return "form_error_number_required";
} // DEBE CONTENER AL MENOS UN NUMERO
} // VALIDAR SI HAY UN VALOR (por la contraseña del profile)
if (oldPass) {
if (EncryptPassword.encryptPassword(value) != currentUser!.password) {
return Internationalization.internationalization
.getLocalizations(context!, "old_pass_error");
} // SI LA CONTRASEÑA NO COINCIDE, DEVUELVE MENSAJE DE ERROR
} // CONTRASEÑA ANTIGUA
return null;
}