/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <UsuarioData> Handle(Ejecuta request, CancellationToken cancellationToken) { var usuario = await _userManager.FindByEmailAsync(request.Email); if (usuario == null) { throw new ManejadorExcepcion(System.Net.HttpStatusCode.Unauthorized); } var resultado = await _signInManager.CheckPasswordSignInAsync(usuario, request.Password, false); var resultadoRoles = await _userManager.GetRolesAsync(usuario); var listaRoles = new List <string>(resultadoRoles); if (resultado.Succeeded) { return(new UsuarioData { NombreCompleto = usuario.NombreCompleto, Email = usuario.Email, Token = _jwtGenerador.crearToken(usuario, listaRoles), UserName = usuario.UserName, Imagen = null }); } throw new ManejadorExcepcion(System.Net.HttpStatusCode.Unauthorized); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <UsuarioData> Handle(Ejecuta request, CancellationToken cancellationToken) { var usuarioToken = await _userManager.FindByNameAsync(request.UserName); if (usuarioToken == null) { throw new ManejadorExcepcion(System.Net.HttpStatusCode.NotFound, new { Mensaje = "No existe un usuario con este userName" }); } ///Evaluar si un usuario ya tiene ese email. var result = await _contex.Users.Where(x => x.Email == request.Email && x.UserName != request.UserName).AnyAsync(); if (result) { throw new ManejadorExcepcion(System.Net.HttpStatusCode.InternalServerError, new { Mensaje = "Este email pertenece a otro usuario" }); } usuarioToken.NombreCompleto = request.NombreCompleto; //Método para encriptar el password usuarioToken.PasswordHash = _passwordHasher.HashPassword(usuarioToken, request.Password); usuarioToken.Email = request.Email; var resultUpdate = await _userManager.UpdateAsync(usuarioToken); var resultRoles = await _userManager.GetRolesAsync(usuarioToken); var listRoles = new List <string>(resultRoles); if (resultUpdate.Succeeded) { return(new UsuarioData { NombreCompleto = usuarioToken.NombreCompleto, UserName = usuarioToken.UserName, Imagen = usuarioToken.Email, Token = _jwtGenerador.crearToken(usuarioToken, listRoles) }); } throw new Exception("No se pudo actualizar el usuario"); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <UsuarioData> Handle(Ejecuta request, CancellationToken cancellationToken) { var existe = await _cursosContext.Users.Where( x => x.Email == request.Email).AnyAsync(); if (existe) { throw new ManejadorExcepcion(System.Net.HttpStatusCode.BadRequest, new { mensaje = "Ya éxiste un usuario registrado con ese Email" }); } var existeUserName = await _cursosContext.Users.Where(x => x.UserName == request.UserName).AnyAsync(); if (existeUserName) { throw new ManejadorExcepcion(System.Net.HttpStatusCode.BadRequest, new { mensaje = "Existe ya un usuario con este userName" }); } var usuario = new Usuario { NombreCompleto = request.NombreCompleto, Email = request.Email, UserName = request.UserName }; var resultado = await _userManager.CreateAsync(usuario, request.Password); if (resultado.Succeeded) { return(new UsuarioData { NombreCompleto = usuario.NombreCompleto, Token = _jwtGenerador.crearToken(usuario, null), UserName = usuario.UserName, Email = usuario.Email }); } throw new Exception("No se pudo agregar al nuevo usuario"); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <UsuarioData> Handle(Ejecutar request, CancellationToken cancellationToken) { var usuario = await _userManager.FindByNameAsync(_usuarioSesion.obtenerUsuarioSesion()); var resultadoRoles = await _userManager.GetRolesAsync(usuario); var listaRoles = new List <string>(resultadoRoles); return(new UsuarioData { UserName = usuario.UserName, NombreCompleto = usuario.NombreCompleto, Token = _jwtGenerador.crearToken(usuario, listaRoles), Email = usuario.Email, Imagen = usuario.Email }); }