/*Borra el usuario con la sesión iniciada de la tabla de UsuarioActual de la base de datos * para cerrar su sesión.*/ public static void deleteCurrentUser(string username) { DataIntegradorEntities db = new DataIntegradorEntities(); UsuarioActual newUser = new UsuarioActual(); newUser.CorreoUsuario = (username != null ? username : (string)HttpContext.Current.Session["Username"]); if (username == null) { Console.WriteLine("Error al borrar el usuario."); return; } else { UsuarioActual otroUsuario = db.UsuarioActual.Find(username); if (otroUsuario != null) { newUser = otroUsuario; } } if (!db.UsuarioActual.Local.Contains(newUser)) { db.UsuarioActual.Attach(newUser); } db.UsuarioActual.Remove(newUser); try { db.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); } clearSession(); }
public static void setUserEmphasis(string emphasis) { updateCurrentUser(); HttpContext.Current.Session["EmphasisId"] = emphasis; DataIntegradorEntities db = new DataIntegradorEntities(); UsuarioActual user = new UsuarioActual(); user = db.UsuarioActual.Find(getUsername()); user.CodEnfasis = emphasis; db.SaveChanges(); }
public static void setUserMajor(string major) { updateCurrentUser(); HttpContext.Current.Session["MajorId"] = major; DataIntegradorEntities db = new DataIntegradorEntities(); UsuarioActual user = new UsuarioActual(); user = db.UsuarioActual.Find(getUsername()); user.CodCarrera = major; db.SaveChanges(); }
public static void setUserProfile(string profile) { updateCurrentUser(); HttpContext.Current.Session["Profile"] = profile; DataIntegradorEntities db = new DataIntegradorEntities(); UsuarioActual user = new UsuarioActual(); user = db.UsuarioActual.Find(getUsername()); user.Perfil = profile; db.SaveChanges(); }
//Método que guarda en la base de datos los datos del usuario loggeado. Busca primero si ya está en la tabla, //si ya está no hace nada y si no está lo inserta para configurar su sesión. public static void setCurrentUser(string username, string profile, string majorId, string emphasisId) { DataIntegradorEntities db = new DataIntegradorEntities(); UsuarioActual newUser = new UsuarioActual(); newUser.CorreoUsuario = username; newUser.Perfil = profile; newUser.CodCarrera = majorId; newUser.CodEnfasis = emphasisId; if (db.UsuarioActual.Find(username) == null) { try { db.UsuarioActual.Add(newUser); db.SaveChanges(); } catch (Exception exception) { //throw exception; } } /* Codigo que no permite dos sesiones simultaneas * else * { * deleteCurrentUser(newUser.CorreoUsuario); * db.UsuarioActual.Add(newUser); * try * { * db.SaveChanges(); * }//TO-DO: Por algún motivo genera excepciones aquí, arreglar esto. * catch (Exception e) { * Console.WriteLine(e.Message); * } * }*/ // Preparar imagen de perfil predeterminada ProfilePicture picture = new ProfilePicture(); Persona persona = db.Persona.Find(username); MemoryStream imagen = picture.GenerateCircle(persona.Nombre1, persona.Apellido1); string base64 = Convert.ToBase64String(imagen.ToArray()); string imgSrc = string.Format("data:image/png;base64,{0}", base64); HttpContext.Current.Session["Username"] = username; HttpContext.Current.Session["Profile"] = profile; HttpContext.Current.Session["MajorId"] = majorId; HttpContext.Current.Session["EmphasisId"] = emphasisId; HttpContext.Current.Session["LoginFailures"] = 0; HttpContext.Current.Session["ProfileImage"] = imgSrc; }
/*Método para actualizar desde base de datos los datos del usuario actual, en caso de que se borren * automáticamente. */ private static void updateCurrentUser() { string sessionUsername; try { sessionUsername = (string)HttpContext.Current.Session["Username"]; } catch (NullReferenceException exception) { Console.WriteLine(exception.ToString()); throw new NullReferenceException("No existe la variable Session en el contexto actual."); } string contextUsername = HttpContext.Current.User.Identity.Name; if (sessionUsername == null || contextUsername != sessionUsername) { DataIntegradorEntities db = new DataIntegradorEntities(); string name = System.Web.HttpContext.Current.User.Identity.Name; UsuarioActual user = db.UsuarioActual.Find(name); /*Si el usuario actual aún se encuentra en la base de datos, se vuelve a cargar en la sesión*/ if (user != null) { HttpContext.Current.Session["Username"] = user.CorreoUsuario; HttpContext.Current.Session["Profile"] = user.Perfil; HttpContext.Current.Session["MajorId"] = user.CodCarrera; HttpContext.Current.Session["EmphasisId"] = user.CodEnfasis; } else /*Sino, se hace logout y se redirige a la pantalla de login.*/ { try { IAuth auth = new FormsAuth(); auth.SignOut(); clearSession(); } catch (NullReferenceException exception) { Console.WriteLine(exception.ToString()); } } } }