/// <summary> /// Controller para que el usuario inicie sesion /// </summary> /// <param name="loginDTO">Objeto login a ingresar a la aplicaicon</param> /// <returns>Objeto tipo Entity con los datos del usuario que se a logeado </returns> /// <exception cref="LoginUserNotFoundException">El objeto a retornar es nulo</exception> /// <exception cref="DatabaseException">Algun error con la base de datos</exception> //POST : /api/Login public ActionResult <LoginDTO> Login([FromBody] LoginDTO loginDTO) { try{ LoginMapper LoginMapper = MapperFactory.createLoginMapper(); Entity entity = LoginMapper.CreateEntity(loginDTO); GetUserCommand command = CommandFactory.loginGetUserCommand((Login)entity); command.Execute(); Login answer = command.GetResult(); if (answer == null) { throw new LoginUserNotFoundException("Correo o clave invalido"); } else { DTO lDTO = LoginMapper.CreateDTO(answer); return(Ok(lDTO)); } } catch (DatabaseException ex) { _logger?.LogError(ex, "Database exception cuando se intento iniciar sesion."); return(StatusCode(500, ex.Message)); } catch (LoginUserNotFoundException) { return(BadRequest(new { message = "Correo o clave invalida." })); } }
/// <summary> /// Controller para cambiar la clave del usuario /// </summary> /// <param name="loginDTO">Objeto login a cambiar su clave</param> /// <returns>Objeto tipo Entity con los datos del usuario luego de cambiar su clave</returns> /// <exception cref="PasswordRecoveryException">El objeto a retornar es nulo</exception> /// <exception cref="DatabaseException">Algun error con la base de datos</exception> //POST : /api/Email public ActionResult <LoginDTO> Recovery([FromBody] LoginDTO loginDTO) { try{ LoginMapper LoginMapper = MapperFactory.createLoginMapper(); Entity entity = LoginMapper.CreateEntity(loginDTO); RecoveryPasswordCommand command = CommandFactory.RecoveryPasswordCommand((Login)entity); command.Execute(); Login objUser = command.GetResult(); if (objUser != null) { Console.WriteLine("Correo del usuario que modifico: "); Console.WriteLine(objUser.email); Console.WriteLine("Clave del usuario modificada: "); Console.WriteLine(objUser.password); //logica correo var message = new MimeMessage(); //From Address message.From.Add(new MailboxAddress("Vacanze Administracion", "*****@*****.**")); //To Address message.To.Add(new MailboxAddress("Usuario", address: objUser.email)); //Subject message.Subject = "Recuperacion De ContraseƱa : "; message.Body = new TextPart("plain") { Text = "Su contraseƱa nueva: " + objUser.password }; using (var client = new MailKit.Net.Smtp.SmtpClient()){ client.CheckCertificateRevocation = false; client.Connect("smtp.gmail.com", 587); client.Authenticate("*****@*****.**", "_Gx123456"); client.Send(message); client.Disconnect(true); client.Dispose(); } LoginDTO ldto = LoginMapper.CreateDTO(objUser); return(Ok(ldto)); } else { return(BadRequest(new { message = "Correo invalido." })); } } catch (DatabaseException ex) { _logger?.LogError(ex, "Database exception cuando se intenta mandar el correo con la nueva clave al cliente"); return(StatusCode(500, ex.Message)); } catch (PasswordRecoveryException) { return(BadRequest(new { message = "Correo invalido." })); } }
public void CreateLoginEntityTest() { var loginEntity = _loginMapper.CreateEntity(_loginDto); Assert.AreEqual(_loginDto.email, loginEntity.email); }