/// <summary> /// El usuario ya se encuentra en lapagina de Olvide Contras.. y preciona el boton chequear DNI /// /// </summary> /// <param name="dni">retorna Empleado con sus usuarios</param> /// <returns></returns> internal static EmpleadoBE ForgotPassword_checkDNI(string dni) { StringBuilder str = new StringBuilder("Con el DNI ingresado no podemos ayudarte. Comunícate con CAIS. "); str.AppendLine("CANALES DE ATENCIÓN:"); str.AppendLine("Chat(Incidentes particulares): caischat.grupokonecta.com.ar"); str.AppendLine("Telefónico(Incidentes Masivos) 54 9 351 4266616"); str.AppendLine("Mail: [email protected]"); try { EmpleadoBE empleadoBE = MeucciDAC.VirifyUser_ForgotPassword(dni); if (empleadoBE == null) { //throw new FunctionalException(1001,"El DNI no se encuentra registrado en nuestras Bases de Datos, verifícalo e intenta nuevamente o comunicarse con CAIS [email protected] y contacto 3514266616 .- "); throw new FunctionalException(1001, str.ToString()); } if (string.IsNullOrEmpty(empleadoBE.Email)) { throw new FunctionalException(1000, str.ToString()); } return(empleadoBE); } catch (Exception ex) { throw ex; } }
public IActionResult userResetPassword(userResetPasswordReq req) { try { //int domain_id = DAC.MeucciDAC.GetDimainId(req.DomainName); if (req.ResetUserCAIS == false) { //Regla Si se intenta resetear por tercera o más veces un UW el mismo día, var intentos = MeucciDAC.ValidarteIntentos(req.WindowsUser, req.dom_id, Common.resetear); if (intentos > 2) { throw new Fwk.Exceptions.FunctionalException("No es posible resetear más de dos veces el Usuario Windows el mismo día. Por favor comuníquese con el CAIS."); } } //Si el usuario pertenece al CAIS será obligatoria la carga del Nº de Ticket. if (req.ResetUserCAIS) { if (string.IsNullOrEmpty(req.ticket)) { throw new Fwk.Exceptions.FunctionalException("El Nº de Ticket es obligatorio .-"); } } req.newPassword = _LDAPService.GetRandomPassword(); var fwk_domain_name = _LDAPService.Get_correct_DomainName(req.DomainName); ActiveDirectoryService.User_Reset_Password(req.WindowsUser, req.newPassword, fwk_domain_name); DAC.MeucciDAC.ReseteoWeb_Log(req.Emp_Id, req.WindowsUser, req.dom_id, req.ResetUserId, req.ticket, Common.resetear, req.host); DAC.MeucciDAC.ReseteoWeb_EnviosMails(req.Emp_Id, req.WindowsUser, req.dom_id, req.ResetUserId, Common.resetear, req.host); //return apiHelper.fromObject<String>("El reseteo se realizó exitosamente. La contraseña provisoria es " + req.newPassword); return(Ok("El reseteo se realizó exitosamente. La contraseña provisoria es " + req.newPassword)); } catch (Exception ex) { //Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)) var msg = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex, false); if (msg.ToLower().Contains("impersonali") || msg.ToLower().Contains("acceso")) { TechnicalException t = new TechnicalException("No es posible desbloquear " + req.WindowsUser + " en el dominio " + req.DomainName + " deberá comunicarse con el CAIS"); ex = t; } if (msg.Contains("E_ACCESSDENIED")) { TechnicalException t = new TechnicalException("No es posible desbloquear " + req.WindowsUser + " en el dominio " + req.DomainName + " deberá comunicarse con el CAIS"); ex = t; } msg = apiHelper.getMessageException(ex); return(BadRequest(new ApiErrorResponse(HttpStatusCode.InternalServerError, msg))); } }
/// <summary> /// El usuario recibe un mail con el codigo de autorizacion, entra ala pagina (link ofrecido) y envia nuevo pàssword /// </summary> /// <param name="userName"></param> /// <param name="code"></param> /// <param name="domainName"></param> /// <param name="newPassword"></param> /// <returns></returns> //internal static ForgotPasswordRes forgotPassworChangePassword(string userName, string domainName,string code, string newPassword) //{ // ForgotPasswordRes result = new ForgotPasswordRes(); // //result = getSocioBEByUserName(userName); // var isValid = Common.verifyMd5Hash(string.Concat(userName, domainName), code); // if (isValid) // { // //User_Reset_Password(userName, newPassword, domainName); // result.Status = "OK"; // result.Message = "El reseteo se realizó exitosamente."; // } // else // { // result.Status = "Error"; // result.Message = "El código de verificación enviado no es válido o no corresponde al socio en cuestión"; // } // return result; //} /// <summary> /// El usuario recibe un mail con el codigo de autorizacion, entra ala pagina (link ofrecido) y en el init se chequea validez de url /// </summary> /// <param name="code"></param> /// <returns>EmpleadoBE</returns> internal static EmpleadoBE forgotPassworChangePassword_Verify(string code) { EmpleadoBE empleadoBE = null; string decriptedData = ""; //var isValid = Common.verifyMd5Hash(string.Concat(dni, empleadoBE.Email), code); try { decriptedData = Common.Dencrypt(code); } catch (Exception ex) { throw new Exception("El códido de seguridad es incorrecto-"); } bool isValid = false; if (decriptedData.Split(';').Length == 3) { // DNI;Email;TTL; string[] splited = decriptedData.Split(';'); string dni = splited[0].Trim(); //Obtengo la fecha de exp Int64 epocTtl = Convert.ToInt64(splited[2].Trim()); Int64 epocNow = Fwk.HelperFunctions.DateFunctions.DateTimeToUnixTimeStamp(System.DateTime.Now); if (epocTtl < epocNow) { throw new Exception("El códido de seguridad a caducado, por favor vuelva a solicitar cambio de contraseña.-"); } empleadoBE = MeucciDAC.VirifyUser_ForgotPassword(dni); if (empleadoBE != null) { empleadoBE.DNI = dni; isValid = splited[1].Trim().CompareTo(empleadoBE.Email.Trim()) == 0; } } if (isValid) { return(empleadoBE); } else { throw new Exception("El código de verificación enviado no es válido o no corresponde al socio en cuestión"); } }
public IActionResult User_Unlock(userUnlockReq req) { try { if (req.ResetUserCAIS == false) { //regla se intenta desbloquear por tercera vez un UW el mismo día var intentos = MeucciDAC.ValidarteIntentos(req.WindowsUser, req.dom_id, Common.resetear); if (intentos > 2) { throw new Fwk.Exceptions.FunctionalException("No es posible desbloquear más de dos veces el Usuario Windows el mismo día. Por favor comuníquese con el CAIS."); } } //Si el usuario pertenece al CAIS será obligatoria la carga del Nº de Ticket. if (req.ResetUserCAIS) { if (String.IsNullOrEmpty(req.ticket)) { throw new Fwk.Exceptions.FunctionalException("El Nº de Ticket es obligatorio .-"); } } var fwk_domain_name = _LDAPService.Get_correct_DomainName(req.DomainName); ActiveDirectoryService.User_Unlock(req.WindowsUser, fwk_domain_name); DAC.MeucciDAC.ReseteoWeb_Log(req.emp_id, req.WindowsUser, req.dom_id, req.ResetUserId, req.ticket, Common.desbloquear, req.host); DAC.MeucciDAC.ReseteoWeb_EnviosMails(req.emp_id, req.WindowsUser, req.dom_id, req.ResetUserId, Common.desbloquear, req.host); return(Ok("El desbloqueo se realizó correctamente")); } catch (Exception ex) { var msg = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex, false); if (msg.ToLower().Contains("impersonali") || msg.ToLower().Contains("acceso")) { TechnicalException t = new TechnicalException("No es posible desbloquear " + req.WindowsUser + " en el dominio " + req.DomainName + " deberá comunicarse con el CAIS"); ex = t; } if (msg.Contains("E_ACCESSDENIED")) { TechnicalException t = new TechnicalException("No es posible desbloquear " + req.WindowsUser + " en el dominio " + req.DomainName + " deberá comunicarse con el CAIS"); ex = t; } msg = apiHelper.getMessageException(ex); return(BadRequest(new ApiErrorResponse(HttpStatusCode.InternalServerError, msg))); } }
public HttpResponseMessage userChangePasswordSelf(userChangePasswordReq req) { try { var intentos = MeucciDAC.ValidarteIntentos(req.userName, req.dom_id, Common.changePwdSelft); if (intentos >= 2) { throw new Fwk.Exceptions.FunctionalException("No es posible resetear más de dos veces el Usuario Windows el mismo día. Por favor comuníquese con el CAIS."); } var fwk_domain_name = _LDAPService.Get_correct_DomainName(req.domainName); //ActiveDirectoryService.User_Reset_Password(req.userName, req.newPassword, fwk_domain_name); DAC.MeucciDAC.ReseteoWeb_Log(req.emp_Id, req.userName, req.dom_id, req.userId, "", Common.changePwdSelft, req.host); //DAC.MeucciDAC.ReseteoWeb_EnviosMails(req.emp_Id, req.WindowsUser, req.dom_id, req.ResetUserId, Common.resetear, req.host); return(apiHelper.fromObject <String>("La contraseña se cambio exitosamente. ")); } catch (Exception ex) { var msg = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex, false); if (msg.ToLower().Contains("impersonali") || msg.ToLower().Contains("acceso")) { TechnicalException t = new TechnicalException("No es posible resetear " + req.userName + " en el dominio " + req.domainName + " deberá comunicarse con CAIS "); ex = t; } if (msg.Contains("E_ACCESSDENIED")) { TechnicalException t = new TechnicalException("No es posible resetear " + req.userName + " en el dominio " + req.domainName + " deberá comunicarse con CAIS "); ex = t; } return(apiHelper.fromEx(ex)); } }
/// <summary> /// /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <param name="domain"></param> /// <returns></returns> public String Authenticate(string username, string password, string domain) { FunctionalException fe = null; try { var domName = ActiveDirectoryService.Get_correct_DomainName(domain); ///Virifica contra domino var res = ActiveDirectoryService.User_Logon(username, password, domName); //var resp = apiHelper.fromObject<LoogonUserResult>(res); if (res.LogResult == "LOGIN_USER_OR_PASSWORD_INCORRECT") // if (res.Autenticated == false) { fe = new FunctionalException("El usuario y/o contraseña es incorrecto"); fe.ErrorId = HttpStatusCode.Unauthorized.ToString(); throw fe; //return BadRequest(new ApiErrorResponse(HttpStatusCode.Unauthorized, "El usuario y/o contraseña es incorrecto")); } if (res.LogResult == "LOGIN_USER_DOESNT_EXIST") { fe = new FunctionalException("El usuario no existe en el dominio "); fe.ErrorId = HttpStatusCode.Unauthorized.ToString(); throw fe; //return BadRequest(new ApiErrorResponse(HttpStatusCode.Unauthorized, "El usuario no existe en el dominio ")); } //si la verificacion contra dominio es OK //busco info del dmonio int dom_id = MeucciDAC.GetDimainId(domain); var emmpleadoBE = MeucciDAC.VirifyUser(username, dom_id); //Emp_Id, legajo correspondiente al usuario reseteador, si devuelve NULL mostrar el mensaje “Usuario no registrado en Meucci” y cerrar aplicación. //o Cue_Id, cuenta correspondiente al usuario reseteador, si devuelve NULL y el campo CAIS es 0, mostrar el mensaje “Usuario no habilitado” if (emmpleadoBE == null) { fe = new FunctionalException("Usuario no registrado en Meucci "); fe.ErrorId = HttpStatusCode.Unauthorized.ToString(); throw fe; //return BadRequest(new ApiErrorResponse(HttpStatusCode.Unauthorized, "Usuario no registrado en Meucci ")); } if (string.IsNullOrEmpty(emmpleadoBE.Cuenta) && emmpleadoBE.CAIS == false) { fe = new FunctionalException("Usuario no habilitado "); fe.ErrorId = HttpStatusCode.Unauthorized.ToString(); throw fe; //return BadRequest(new ApiErrorResponse(HttpStatusCode.Unauthorized, "Usuario no habilitado")); } emmpleadoBE.Dominio = domain; var jwtTokenString = TokenGenerator.GenerateTokenMeucci(emmpleadoBE); return(jwtTokenString); } catch (Exception ex) { throw ex; } }
public HttpResponseMessage Authenticate(LoginRequest login) { if (login == null) { return(apiHelper.fromEx(new HttpResponseException(HttpStatusCode.BadRequest))); } if (string.IsNullOrEmpty(login.username)) { return(apiHelper.fromEx(new HttpResponseException(HttpStatusCode.BadRequest))); } try { var domName = ActiveDirectoryService.Get_correct_DomainName(login.domain); ///Virifica contra domino var res = ActiveDirectoryService.User_Logon(login.username, login.password, domName); //var resp = apiHelper.fromObject<LoogonUserResult>(res); if (res.LogResult == "LOGIN_USER_OR_PASSWORD_INCORRECT") // if (res.Autenticated == false) { //return Unauthorized(); return(apiHelper.fromErrorString("El usuario y/o contraseña es incorrecto ", HttpStatusCode.Unauthorized)); } if (res.LogResult == "LOGIN_USER_DOESNT_EXIST") { return(apiHelper.fromErrorString("El usuario no existe en el dominio " + login.domain, HttpStatusCode.Unauthorized)); } //si la verificacion contra dominio es OK //busco info del dmonio int dom_id = MeucciDAC.GetDimainId(login.domain); var emmpleadoBE = MeucciDAC.VirifyUser(login.username, dom_id); //Emp_Id, legajo correspondiente al usuario reseteador, si devuelve NULL mostrar el mensaje “Usuario no registrado en Meucci” y cerrar aplicación. //o Cue_Id, cuenta correspondiente al usuario reseteador, si devuelve NULL y el campo CAIS es 0, mostrar el mensaje “Usuario no habilitado” if (emmpleadoBE == null) { emmpleadoBE = new EmpleadoReseteoBE(); emmpleadoBE.Emp_id = -1; emmpleadoBE.WindowsUser = login.username; emmpleadoBE.Legajo = -1; emmpleadoBE.Legajo = -1; emmpleadoBE.CAIS = false; emmpleadoBE.isRessetUser = false; emmpleadoBE.Cuenta = ""; emmpleadoBE.Cargo = ""; //return apiHelper.fromErrorString("Usuario no registrado en Meucci", HttpStatusCode.Unauthorized); } if (string.IsNullOrEmpty(emmpleadoBE.Cuenta) && emmpleadoBE.CAIS == false) { emmpleadoBE.isRessetUser = false; //return apiHelper.fromErrorString("Usuario no habilitado ", HttpStatusCode.Unauthorized); } else { emmpleadoBE.isRessetUser = true; } emmpleadoBE.Dominio = login.domain; var token = TokenGenerator.GenerateTokenJwt(emmpleadoBE); //return Ok(token); return(apiHelper.fromObject <string>(token)); } catch (Exception ex) { return(apiHelper.fromEx(ex)); //return new System.Web.Http.Results.ExceptionResult(ex,this); } }
/// <summary> /// El usuario solicita reestablecer contraseña /// </summary> /// <param name="dni"></param> /// <returns></returns> internal static ForgotPasswordRes forgotPassword_requets(string dni) { ForgotPasswordRes result = new ForgotPasswordRes(); var baseUrl = Common.GetBaseUrl(); //verificar si existe en el dominio //bool userExst = true;//UserExist(userName, domainName); //if (!userExst ) //{ // result.Status = "Error"; // result.Message = " <p> El usuario ingresado no existe.</p>"; // return result; //} EmpleadoBE empleadoBE = MeucciDAC.VirifyUser_ForgotPassword(dni); empleadoBE.DNI = dni; //Buscar empleado //EmpleadoBE empleadoBE = new EmpleadoBE(); //empleadoBE.email = "*****@*****.**"; //empleadoBE.ApeNom ="MOF"; //var res = getSocioBEByUserName(userName, false, false); if (string.IsNullOrEmpty(empleadoBE.Email)) { result.Status = "Error"; result.Message = " <p> El usuario ingresado no registra un correo.</p>"; return(result); } Int64 ttl = Fwk.HelperFunctions.DateFunctions.DateTimeToUnixTimeStamp(System.DateTime.Now.AddMinutes(10)); //Generate token string toEncrypt = string.Concat(empleadoBE.DNI, ";", empleadoBE.Email.Trim(), ";", ttl.ToString()); string code = Common.Encrypt(toEncrypt); //string code = Common.getMd5Hash(string.Concat(empleadoBE.DNI, empleadoBE.Email.Trim())); string file = System.Web.Hosting.HostingEnvironment.MapPath("~/files/Email_Forgot_Password.html"); try { string txt = Fwk.HelperFunctions.FileFunctions.OpenTextFile(file); StringBuilder BODY = new StringBuilder(txt); BODY.Replace("$userName$", empleadoBE.ApeNom); //BODY.Replace("$url$", "https://host/selfreset/?code=" + code); //string forgotPwd = String.Format("reset/{0}/{1}", code, empleadoBE.DNI); string forgotPwd = String.Format("reset?code={0}", HttpUtility.UrlEncode(code)); BODY.Replace("$url$", apiHelper.apiConfig.url_reseteoBase + forgotPwd); Common.SendMail(string.Concat("Solicitud de cambio de contraseña"), BODY.ToString(), empleadoBE.Email.Trim(), ""); int at = empleadoBE.Email.IndexOf('@'); var mail = "*******" + empleadoBE.Email.Substring(at - 3, empleadoBE.Email.Length - at + 3); result.Message = "Le enviaremos un email a su casilla de correo " + mail + " y " + "en el mismo encontrará un código de acceso en un enlace para que finalice el " + "proceso de cambio de contraseña"; result.Status = "Success"; } catch (Exception ex) { result.Status = "Error"; result.Message = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex, false); } return(result); // Common.SendMail("Registracion de socio al sitio web de CELAM", string.Format(txt, userName), "*****@*****.**", emai.Trim(), ""); }