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")); } }
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)); }
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")); } }