protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie != null) { JavaScriptSerializer serializer = new JavaScriptSerializer(); FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); var data = Peach.DecriptText(authTicket.UserData); CustomPrincipalTicket _dataTicket = serializer.Deserialize <CustomPrincipalTicket>(data); CustomPrincipal CustomPrincipalLogin = new CustomPrincipal(authTicket.Name); CustomPrincipalLogin.CID = _dataTicket.CID; CustomPrincipalLogin.Usuario = _dataTicket.Usuario; CustomPrincipalLogin.Unidad_CID = _dataTicket.Unidad_CID; CustomPrincipalLogin.Unidad_Nombre = _dataTicket.Unidad_Nombre; CustomPrincipalLogin.OrganoServicio_CID = _dataTicket.OrganoServicio_CID; CustomPrincipalLogin.OrganoServicio_Nombre = _dataTicket.OrganoServicio_Nombre; CustomPrincipalLogin.OrganoServicio_Abr = _dataTicket.OrganoServicio_Abr; if (_dataTicket.Perfil_CID != null) { CustomPrincipalLogin.Perfil_CID = _dataTicket.Perfil_CID; CustomPrincipalLogin.Perfil_Nombre = _dataTicket.Perfil_Nombre; } HttpContext.Current.User = CustomPrincipalLogin; } }
public ActionResult Perfil(PerfilLoginModel model) { if (ModelState.IsValid) { // Ticket de cookie CustomPrincipalTicket _dataTicket = new CustomPrincipalTicket { CID = User.CID, Usuario = User.Usuario, Unidad_Nombre = User.Unidad_Nombre, OrganoServicio_CID = User.OrganoServicio_CID, OrganoServicio_Nombre = User.OrganoServicio_Nombre, OrganoServicio_Abr = User.OrganoServicio_Abr, Rol_Accion = User.Rol_Accion, Perfil_CID = model.Perfil.CID, Perfil_Nombre = model.SelectPerfil }; SessionHelper.DestroyUserSession(); JavaScriptSerializer serializer = new JavaScriptSerializer(); string userData = serializer.Serialize(_dataTicket); SessionHelper.AddUserToSession(Peach.EncriptText(userData)); } else { AddToastMessage("Error", "El modelo de datos de seleccion de perfil no es válido", BootstrapAlertType.danger); } return(RedirectToAction("Index", "Home")); }
public ActionResult Login(BELogin model) { JavaScriptSerializer serializer = new JavaScriptSerializer(); BLUsuario oblUsuario = new BLUsuario(); try { if (ModelState.IsValid) { var _usr = model.user.Trim().ToUpper(); var _pwd = Peach.EncriptText(Crypto.CryptoProvider.TripleDES, model.pass.Trim()); var responser = oblUsuario.getUsuario_byLogin(_usr, _pwd); if (responser.Estado == ResponserEstado.Ok) { BEUsuario UserData = (BEUsuario)responser.DataContent; if (UserData.IsDominio == 1) { var DominioResult = BLUsuario.ValidaDominio(new BELogin { user = _usr, pass = model.pass.Trim() }); if (!DominioResult) { AddToastMessage(string.Empty, "Su contraseña no es correcta. Utilice su contraseña de dominio.", BootstrapAlertType.danger); return(View()); } } // :Ticket de cookie CustomPrincipalTicket _dataTicket = new CustomPrincipalTicket { CID = UserData.CID, Usuario = UserData.Apellidos, Unidad_Nombre = UserData.Unidad.Nombre, OrganoServicio_CID = UserData.OrganoServicio.CID, OrganoServicio_Nombre = UserData.OrganoServicio.Nombre, OrganoServicio_Abr = UserData.OrganoServicio.Abreviatura, Rol_Accion = (UsuarioRolType)UserData.Rol.IntValue }; // :Perfiles int num_perfiles = (UserData.Perfiles != null) ? UserData.Perfiles.ToList().Count() : 1; if (num_perfiles == 1) { // :Tiene un perfil => adiciona al ticket _dataTicket.Perfil_CID = UserData.Perfil.CID; _dataTicket.Perfil_Nombre = UserData.Perfil.Nombre; } // :Serializa, encripta, genera la cookie y establece la sesión string userData = serializer.Serialize(_dataTicket); SessionHelper.AddUserToSession(Peach.EncriptText(userData)); if (num_perfiles == 1) { // :Home return(RedirectToAction("Index", "Home")); } else { // Redirecciona a la página para la selección de perfil TempData["jJ0PG6Fk"] = UserData.Perfiles; return(RedirectToAction("Perfil", "Account")); } } else { AddToastMessage(string.Empty, responser.Mensaje, responser.TipoAlerta); return(View()); } } else { AddToastMessage("Acceso no permitido", "Sus credenciales de acceso no son válidas", BootstrapAlertType.danger); return(View()); } } catch (Exception ex) { AddToastMessage("Error", ex.Message, BootstrapAlertType.danger); } return(View()); }