Example #1
0
        public ActionResult LogOff()
        {
            string id   = GetActualUserId().Id;
            var    user = ApplicationDbContext.Users.Find(id);

            user.SesionUser = SESION.No;
            ApplicationDbContext.SaveChanges();
            if (GetActualUserId().CompanyId != null)
            {
                var    table     = ApplicationDbContext.TableChanges.Find(72);
                var    code      = ApplicationDbContext.CodeLogs.Find(152);
                var    idcompany = user.CompanyId;
                var    company   = ApplicationDbContext.Companies.Find(idcompany);
                string ip        = IpUser();
                var    idchange  = new IdChange
                {
                    IdCh_IdChange = user.Id
                };
                ApplicationDbContext.IdChanges.Add(idchange);
                ApplicationDbContext.SaveChanges();
                Log logsesiontrue = new Log
                {
                    ApplicationUser = user,
                    CoLo_Id         = code.CoLo_Id,
                    CodeLogs        = code,
                    Log_Date        = DateTime.Now,
                    Log_StateLogs   = LOGSTATE.Realizado,
                    TableChange     = table,
                    TaCh_Id         = table.TaCh_Id,
                    IdChange        = idchange,
                    IdCh_Id         = idchange.IdCh_Id,
                    User_Id         = user.Id,
                    Log_Description = "El usuario con id: " + user.Id + "acaba de cerrar sesión en la compañia con id " + company.CompanyId,
                    Company         = company,
                    Company_Id      = company.CompanyId,
                    Log_Ip          = ip
                };
                ApplicationDbContext.Logs.Add(logsesiontrue);
                ApplicationDbContext.SaveChanges();
                string a = GetActualUserId().Company.CompanyName;
                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
                return(RedirectToAction("Index", "Home"));
            }
        }
Example #2
0
        public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                //Evalua si la variable del modelo es vacia o no, si es vacia se establece por defecto
                if (model.UserName == null)
                {
                    var user = DefaultIfEmpty;
                }
                //Si no es vacia, ejecuta la funcion por busqueda del usuario
                else
                {
                    var user = await UserManager.FindByNameAsync(model.UserName);

                    if (user != null)
                    {
                        var table     = ApplicationDbContext.TableChanges.Find(72);
                        var code      = ApplicationDbContext.CodeLogs.Find(154);
                        var idcompany = user.CompanyId;
                        if (idcompany != null)
                        {
                            var    company  = ApplicationDbContext.Companies.Find(idcompany);
                            string ip       = IpUser();
                            var    idchange = new IdChange
                            {
                                IdCh_IdChange = user.Id
                            };
                            ApplicationDbContext.IdChanges.Add(idchange);
                            ApplicationDbContext.SaveChanges();
                            Log logsesiontrue = new Log
                            {
                                ApplicationUser = user,
                                CoLo_Id         = code.CoLo_Id,
                                CodeLogs        = code,
                                Log_Date        = DateTime.Now,
                                Log_StateLogs   = LOGSTATE.Realizado,
                                TableChange     = table,
                                TaCh_Id         = table.TaCh_Id,
                                IdChange        = idchange,
                                IdCh_Id         = idchange.IdCh_Id,
                                User_Id         = user.Id,
                                Log_Description = "El usuario con id: " + user.Id + " olvido su contraseña y acaba de enviar un correo para restablecerla, el usuario pertenece a la compañia con id " + company.CompanyId,
                                Company         = company,
                                Company_Id      = company.CompanyId,
                                Log_Ip          = ip
                            };
                            ApplicationDbContext.Logs.Add(logsesiontrue);
                            ApplicationDbContext.SaveChanges();
                        }

                        UserManager.RemovePassword(user.Id);
                        UserManager.AddPassword(user.Id, user.UserName);
                        SendEmail(user.FirstName + " " + user.LastName, user.Email, user.UserName, user.Company.CompanyName);
                        var user2 = user;
                        UserManager.Update(user2);
                        TempData["Menssages"] = "Hemos enviado un correo a su cuenta con la información solicitada ";

                        return(RedirectToAction("Index", "Home"));
                    }
                }
                // si user esta vacio y se establece la variable user por defecto entra a la validacion por mail
                //Funcion para el mail
                //Evalua si la variable del modelo es vacia o no, si es vacia se establece por defecto
                if (model.UserMail == null)
                {
                    var mail = DefaultIfEmpty;
                }
                else
                {
                    var mail = await UserManager.FindByEmailAsync(model.UserMail);

                    if (mail != null)
                    {
                        var table     = ApplicationDbContext.TableChanges.Find(72);
                        var code      = ApplicationDbContext.CodeLogs.Find(154);
                        var idcompany = mail.CompanyId;
                        if (idcompany != null)
                        {
                            var    company  = ApplicationDbContext.Companies.Find(idcompany);
                            string ip       = IpUser();
                            var    idchange = new IdChange
                            {
                                IdCh_IdChange = mail.Id
                            };
                            ApplicationDbContext.IdChanges.Add(idchange);
                            ApplicationDbContext.SaveChanges();
                            Log logsesiontrue = new Log
                            {
                                ApplicationUser = mail,
                                CoLo_Id         = code.CoLo_Id,
                                CodeLogs        = code,
                                Log_Date        = DateTime.Now,
                                Log_StateLogs   = LOGSTATE.Realizado,
                                TableChange     = table,
                                TaCh_Id         = table.TaCh_Id,
                                IdChange        = idchange,
                                IdCh_Id         = idchange.IdCh_Id,
                                User_Id         = mail.Id,
                                Log_Description = "El usuario con id: " + mail.Id + " olvido su contraseña y acaba de enviar un correo para restablecerla, el usuario pertenece a la compañia con id " + company.CompanyId,
                                Company         = company,
                                Company_Id      = company.CompanyId,
                                Log_Ip          = ip
                            };
                            ApplicationDbContext.Logs.Add(logsesiontrue);
                            ApplicationDbContext.SaveChanges();
                        }

                        UserManager.RemovePassword(mail.Id);
                        UserManager.AddPassword(mail.Id, mail.UserName);
                        SendEmail(mail.FirstName + " " + mail.LastName, mail.Email, mail.UserName, mail.Company.CompanyName);
                        var mail2 = mail;
                        UserManager.Update(mail2);
                        TempData["Menssages"] = "Hemos enviado un correo a su cuenta con la información solicitada ";

                        return(RedirectToAction("Index", "Home"));
                    }
                }
            }

            // fin de la funciojn para el mail
            // If we got this far, something failed, redisplay form
            model.Sesion = SESION.Si;
            model.Logo   = GetUrlLogo();
            return(View(model));
        }
Example #3
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                model.Sesion = SESION.Si;
                model.Logo   = GetUrlLogo();
                return(RedirectToAction("Index", "Home"));
            }

            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                ApplicationUser UserCurrent = UserManager.FindByName(model.Email);
                if (UserCurrent.SesionUser == SESION.No)
                {
                    var table     = ApplicationDbContext.TableChanges.Find(72);
                    var code      = ApplicationDbContext.CodeLogs.Find(151);
                    var idcompany = UserCurrent.CompanyId;
                    if (idcompany != null)
                    {
                        var    company  = ApplicationDbContext.Companies.Find(idcompany);
                        string ip       = IpUser();
                        var    idchange = new IdChange
                        {
                            IdCh_IdChange = UserCurrent.Id
                        };
                        ApplicationDbContext.IdChanges.Add(idchange);
                        ApplicationDbContext.SaveChanges();
                        Log logsesiontrue = new Log
                        {
                            ApplicationUser = UserCurrent,
                            CoLo_Id         = code.CoLo_Id,
                            CodeLogs        = code,
                            Log_Date        = DateTime.Now,
                            Log_StateLogs   = LOGSTATE.Realizado,
                            TableChange     = table,
                            TaCh_Id         = table.TaCh_Id,
                            IdChange        = idchange,
                            IdCh_Id         = idchange.IdCh_Id,
                            User_Id         = UserCurrent.Id,
                            Log_Description = "El usuario con id: " + UserCurrent.Id + "acaba de iniciar sesión en la compañia con id " + company.CompanyId,
                            Company         = company,
                            Company_Id      = company.CompanyId,
                            Log_Ip          = ip
                        };
                        ApplicationDbContext.Logs.Add(logsesiontrue);
                        ApplicationDbContext.SaveChanges();
                    }
                    UserCurrent.SesionUser = SESION.Si;
                    ApplicationDbContext.SaveChanges();
                    if (UserCurrent.firstAccess == null)
                    {
                        UserCurrent.firstAccess = DateTime.Now;
                    }
                    UserCurrent.lastAccess = DateTime.Now;
                    Session["FirstName"]   = UserCurrent.FirstName;
                    Session["LastName"]    = UserCurrent.LastName;
                    Session["sesion"]      = UserCurrent.SesionUser;
                    UserManager.Update(UserCurrent);
                    return(RedirectToLocal(returnUrl));
                }
                else
                {
                    var table     = ApplicationDbContext.TableChanges.Find(72);
                    var code      = ApplicationDbContext.CodeLogs.Find(157);
                    var idcompany = UserCurrent.CompanyId;
                    if (idcompany != null)
                    {
                        var    company  = ApplicationDbContext.Companies.Find(idcompany);
                        string ip       = IpUser();
                        var    idchange = new IdChange
                        {
                            IdCh_IdChange = UserCurrent.Id
                        };
                        ApplicationDbContext.IdChanges.Add(idchange);
                        ApplicationDbContext.SaveChanges();
                        Log logsesiontrue = new Log
                        {
                            ApplicationUser = UserCurrent,
                            CoLo_Id         = code.CoLo_Id,
                            CodeLogs        = code,
                            Log_Date        = DateTime.Now,
                            Log_StateLogs   = LOGSTATE.Realizado,
                            TableChange     = table,
                            TaCh_Id         = table.TaCh_Id,
                            IdChange        = idchange,
                            IdCh_Id         = idchange.IdCh_Id,
                            User_Id         = UserCurrent.Id,
                            Log_Description = "El usuario con id: " + UserCurrent.Id + " intento iniciar sesion dos veces con su misma cuenta en la compañia con id " + company.CompanyId,
                            Company         = company,
                            Company_Id      = company.CompanyId,
                            Log_Ip          = ip
                        };
                        ApplicationDbContext.Logs.Add(logsesiontrue);
                        ApplicationDbContext.SaveChanges();
                    }
                    TempData["Info"] = "Ya hay una sesión iniciada con este usuario, esta sesión se cerrara por seguridad";
                    model.UrlLogo    = GetUrlLogo();
                    ApplicationUser UserCurrent1 = UserManager.FindByName(model.Email);
                    UserCurrent1.SesionUser = SESION.No;
                    ApplicationDbContext.SaveChanges();
                    return(RedirectToAction("Index", "Home"));
                }

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Datos Incorrectos");
                model.UrlLogo = GetUrlLogo();
                model.Sesion  = SESION.Si;
                return(RedirectToAction("Index", "Home"));
            }
        }