/// <summary> /// Implementación de Contrato para verificar un jugador antes de ser otorgado acceso al sistema /// </summary> /// <param name="player"></param> public void VerifyPlayer(Dominio.Jugador player) { VerificationResult resultado = VerificationResult.NoExisteJugador; JugadorDataManager jugadorManager = new JugadorDataManager(); if (jugadorManager.CheckNickname(player.Apodo)) { if (jugadorManager.PinCorrecto(player.Apodo, player.PinConfirmacion)) { int result = jugadorManager.VerifyNewPlayer(new DataAccess.Jugador { apodo = player.Apodo, pinConfirmacion = player.PinConfirmacion, }); if (result > 0) { resultado = VerificationResult.VerificacionExistosa; } } else { resultado = VerificationResult.PinIncorrecto; } } else { resultado = VerificationResult.NoExisteJugador; } PlayerCallback.GetVerifyResult(resultado); }
/// <summary> /// Implementación de Contrato para guardar un jugador registrado a la base de datos /// </summary> /// <param name="player"></param> /// <exception> /// Este metodo puede retornar una excepcion tipo SmtpException /// </exception> public void SavePlayer(Dominio.Jugador player) { JugadorDataManager playerDataManager = new JugadorDataManager(); SaveResult saveResult; MailResult mailResult; bool nicknameExists = playerDataManager.CheckNickname(player.Apodo); if (!nicknameExists) { bool emailExists = playerDataManager.CheckEmail(player.CorreoElectronico); if (!emailExists) { System.Net.Mail.MailMessage mensaje = new System.Net.Mail.MailMessage(); mensaje.To.Add(player.CorreoElectronico); mensaje.Subject = "Account creation confirmation" + player.Apodo; mensaje.Body = "Hello " + player.Apodo + " you are one step away from verifying your account!, " + "the account verification code is as follows: " + player.PinConfirmacion; mensaje.From = new System.Net.Mail.MailAddress("*****@*****.**", "Checkers Game Proyect"); System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient { Credentials = new System.Net.NetworkCredential(mailUser, mailPassword), Port = 587, EnableSsl = true, Host = "smtp.gmail.com", }; try { mailResult = MailResult.MailSend; cliente.Send(mensaje); } catch (System.Net.Mail.SmtpException) { mailResult = MailResult.SendError; PlayerCallback.GetResendMailResult(mailResult, player.Apodo); } if (mailResult == MailResult.MailSend) { SaveNewPlayer(player); } } else { saveResult = SaveResult.CorreoExistente; PlayerCallback.GetSaveResult(saveResult, player); } } else { saveResult = SaveResult.NicknameExistente; PlayerCallback.GetSaveResult(saveResult, player); } }
/// <summary> /// Implementación de Contrato para iniciar sesion como Jugador /// </summary> /// <param name="player"></param> public void LoginPlayer(Jugador player) { LoginResult result = LoginResult.NoExisteJugador; JugadorDataManager jugadorManager = new JugadorDataManager(); if (jugadorManager.CheckNickname(player.Apodo)) { if (jugadorManager.CheckState(player.Apodo)) { if (jugadorManager.EsPasswordCorrecto(player.Contrasenia, player.Apodo)) { DataAccess.Jugador searchedPlayer = jugadorManager.GetPlayerByNickname(player.Apodo); if (!playersLoggedIn.ContainsKey(searchedPlayer.apodo)) { result = LoginResult.ExisteJugadorVerificado; playersLoggedIn.Add(searchedPlayer.apodo, PlayerCallback); player.Apodo = searchedPlayer.apodo; player.IdLenguaje = searchedPlayer.idioma; player.IdJugador = searchedPlayer.idJugador; player.Contrasenia = searchedPlayer.contrasenia; player.CorreoElectronico = searchedPlayer.correoElectronico; player.PreguntaRecuperacion = searchedPlayer.preguntaRecuperacion; PlayerCallback.GetPlayerLoginResult(result, player); } else { result = LoginResult.LOGGED_PLAYER; PlayerCallback.GetPlayerLoginResult(result, player); } } else { result = LoginResult.PasswordIncorrecto; PlayerCallback.GetPlayerLoginResult(result, player); } } else { CheckBan(player); } } else { PlayerCallback.GetPlayerLoginResult(result, player); } }
/// <summary> /// Implementación de Contrato para actualizar la contraseña de un jugador /// </summary> /// <param name="userNickname"></param> /// <param name="password"></param> public void ChangePassword(string userNickname, string password) { PasswordChangeResult changeResult = PasswordChangeResult.ErrorChanging; if (jugadorDataManager.CheckNickname(userNickname)) { string newPassword = hashText.TextToHash(password); int resultChange = jugadorDataManager.ChangePassword(userNickname, newPassword); if (resultChange > 0) { changeResult = PasswordChangeResult.ChangedPassword; } } PlayerCallback.GetPasswordChangeResult(changeResult); }
/// <summary> /// Implementación de Contrato para enviar email de solicitud de cambio de contraseña a un jugador /// </summary> /// <param name="actualNickname"></param> /// <exception> /// Este metodo puede retornar una excepcion tipo SmtpException /// </exception> public void PasswordForgotMail(string actualNickname) { JugadorDataManager jugadorManager = new JugadorDataManager(); MailResult mailSuccesResult; string securityQuestion = " "; if (jugadorManager.CheckNickname(actualNickname)) { DataAccess.Jugador player = jugadorManager.ChangePinByNickname(actualNickname); securityQuestion = player.preguntaRecuperacion; System.Net.Mail.MailMessage mailMesagge = new System.Net.Mail.MailMessage(); mailMesagge.To.Add(player.correoElectronico); mailMesagge.Subject = "Recuperacion de cuenta del jugador " + player.apodo; mailMesagge.Body = "Hola " + player.apodo + " has solicitado una recuperacion de cuenta, " + "el código de verificación para cambiar tu contraseña es el siguiente: " + player.pinConfirmacion; mailMesagge.From = new System.Net.Mail.MailAddress("*****@*****.**", "Checkers Game Proyect"); System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient { Credentials = new System.Net.NetworkCredential(mailUser, mailPassword), Port = 587, EnableSsl = true, Host = "smtp.gmail.com", }; try { client.Send(mailMesagge); mailSuccesResult = MailResult.MailSend; PlayerCallback.GetMailResult(mailSuccesResult, actualNickname, securityQuestion); } catch (System.Net.Mail.SmtpException) { mailSuccesResult = MailResult.SendError; PlayerCallback.GetMailResult(mailSuccesResult, actualNickname, securityQuestion); } } else { mailSuccesResult = MailResult.UnknownPlayer; PlayerCallback.GetMailResult(mailSuccesResult, actualNickname, securityQuestion); } }