Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        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)));
            }
        }
Esempio n. 3
0
        /// <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");
            }
        }
Esempio n. 4
0
 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)));
     }
 }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        /// <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;
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        /// <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(), "");
        }