Class Usuario
- Direct Known Subclasses:
Administrador, Jugador
Gestiona las credenciales de acceso almacenando la contraseña como hash SHA-256, nunca en texto plano. Las subclases concretas definen el tipo de usuario (normal, administrador, etc.) y amplían su comportamiento según el rol.
La validación de formato y unicidad del username se delega en
GestorUsuarios, que tiene acceso al contexto necesario para realizarla.
- Version:
- 1.1
- Author:
- Adrián
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionDevuelve el identificador único del usuario.private static StringConvierte una cadena de texto a su representación SHA-256 en hexadecimal.abstract StringSerializa los datos del usuario en una línea de texto para su almacenamiento en fichero.abstract StringtoString()Devuelve una representación legible del usuario para mostrar en pantalla y en logs.booleanverificarPassword(String introPassword) Verifica si la contraseña proporcionada coincide con la almacenada.
-
Field Details
-
username
Identificador único del usuario en el sistema. -
passwordHash
Hash SHA-256 de la contraseña del usuario, en representación hexadecimal.
-
-
Constructor Details
-
Usuario
-
Usuario
Crea un usuario a partir de datos ya almacenados, típicamente al cargar desde fichero.Usar
yaEsHash = truecuando el segundo parámetro ya es un hash SHA-256 (por ejemplo, al reconstruir el objeto desdeusuarios.txt). UsaryaEsHash = falsesi se pasa la contraseña en texto plano y debe hashearse.- Parameters:
username- identificador único del usuariopasswordHash- contraseña en texto plano o hash SHA-256, segúnyaEsHashyaEsHash-truesi el segundo parámetro ya es un hash SHA-256;falsesi es texto plano y debe hashearse
-
-
Method Details
-
hashear
Convierte una cadena de texto a su representación SHA-256 en hexadecimal.SHA-256 está garantizado en toda JVM estándar, por lo que
NoSuchAlgorithmExceptionno debería lanzarse nunca en la práctica.- Parameters:
password- texto a hashear- Returns:
- cadena hexadecimal de 64 caracteres con el hash SHA-256
- Throws:
RuntimeException- si SHA-256 no está disponible en la JVM
-
getUsername
Devuelve el identificador único del usuario.- Returns:
- el username de este usuario
-
verificarPassword
Verifica si la contraseña proporcionada coincide con la almacenada.La comparación se realiza entre hashes SHA-256, nunca entre textos en claro.
- Parameters:
introPassword- contraseña en texto plano introducida por el usuario- Returns:
truesi la contraseña es correcta;falseen caso contrario
-
toArchivo
Serializa los datos del usuario en una línea de texto para su almacenamiento en fichero.Formato base:
username;passwordHash;esAdmin. Las subclases deben respetar el separador;y el orden de campos para garantizar compatibilidad conPersistenciaArchivos.- Returns:
- cadena con los datos del usuario listos para escribir en
usuarios.txt
-
toString
-