Agrego frontend app
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
class UserSession {
|
||||
final String token;
|
||||
final String role;
|
||||
// UUID del usuario. Null al recién loguear (fc_ingresar no lo devuelve);
|
||||
// se rellena al primer fc_obtener_usuario_por_token. Necesario para
|
||||
// ownership checks (ej. "este pago lo creé yo").
|
||||
final String? id;
|
||||
final String nombre;
|
||||
final String apellido;
|
||||
final String dni;
|
||||
final String? mail;
|
||||
final String? telefono;
|
||||
|
||||
const UserSession({
|
||||
required this.token,
|
||||
required this.role,
|
||||
this.id,
|
||||
this.nombre = '',
|
||||
this.apellido = '',
|
||||
this.dni = '',
|
||||
this.mail,
|
||||
this.telefono,
|
||||
});
|
||||
|
||||
/// Crear desde fc_ingresar (solo token + rol) + el DNI que ingresó el usuario.
|
||||
factory UserSession.fromLogin({
|
||||
required String token,
|
||||
required String role,
|
||||
required String dni,
|
||||
}) {
|
||||
return UserSession(token: token, role: role, dni: dni);
|
||||
}
|
||||
|
||||
/// Crear desde fc_obtener_usuario_por_token (jsonb completo).
|
||||
factory UserSession.fromUserData(Map<String, dynamic> map, String token) {
|
||||
return UserSession(
|
||||
token: token,
|
||||
role: map['rol'] as String? ?? '',
|
||||
id: map['id'] as String?,
|
||||
nombre: map['nombre'] as String? ?? '',
|
||||
apellido: map['apellido'] as String? ?? '',
|
||||
dni: map['dni'] as String? ?? '',
|
||||
mail: map['mail'] as String?,
|
||||
telefono: map['telefono'] as String?,
|
||||
);
|
||||
}
|
||||
|
||||
String get displayName {
|
||||
if (nombre.isNotEmpty && apellido.isNotEmpty) return '$nombre $apellido';
|
||||
if (nombre.isNotEmpty) return nombre;
|
||||
return dni;
|
||||
}
|
||||
|
||||
/// Getter unificado: staff incluye superadmin, admin y profesor
|
||||
bool get isStaff => role == 'superadmin' || role == 'admin' || role == 'profesor';
|
||||
|
||||
bool get isUsuario => role == 'usuario' || role == 'cliente';
|
||||
|
||||
/// True sólo para el rol 'superadmin'. Habilita en UI las acciones
|
||||
/// que el backend gobierna con el permiso 'gestionar_cualquier_pago'.
|
||||
bool get isSuperadmin => role == 'superadmin';
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:gimnasio_soma/features/auth/domain/entities/user_session.dart';
|
||||
|
||||
abstract class AuthRepository {
|
||||
Future<UserSession> login(String dni, String password);
|
||||
Future<UserSession?> validateSession();
|
||||
Future<void> logout();
|
||||
Future<void> cambiarPropiaContrasena({
|
||||
required String passwordActual,
|
||||
required String passwordNueva,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user