/// <summary> /// Tomamos un Usuario, cambiamos la Persona asociada al mismo, algunas propiedades escalares, eliminamos un perfil /// y agregamos otro. Tambien modificamos la contraseña /// Luego de probar este metodo se puede acceder a la app principal y ver que pasa, obviamente ingresando con la /// nueva password /// [[IMPORTANTE]] /// Antes de probar este metodo, asegurarse de haber llamado a CrearUsuarioCompleto() /// </summary> public static void CambiarCompleto() { SecurityServices serv = new SecurityServices(); Usuario user; user = serv.GetUsuarioFromLogin("lsimpson"); var perfiles = from p in DB.Contexto.Perfiles where p.ID == 4 select p; user.Perfiles.RemoveWhere(perf => perf.ID == 2); user.Perfiles.Add(perfiles.Single()); Persona nuevaPersona; // primero chequeamos que la Persona no exista, si no existe la creamos nuevaPersona = (from per in DB.Contexto.Personas where per.Apellido == "Olsen" && per.Nombre == "Mona Penelope" select per).SingleOrDefault(); if (nuevaPersona == null) nuevaPersona = CrearPersonaInternal("Mona Penelope", "Olsen", "*****@*****.**", 78); user.Persona = nuevaPersona; user.EnforceExpiration = true; user.FechaExpiracionPassword = DateTime.Now.AddDays(120); serv.UpdateUsuario(user, "123-lisa"); }
/// <summary> /// /// </summary> /// <param name="cbPerfiles">Valor option del elemento actualmente seleccionado en el dropdown</param> /// <param name="login">Argumento adicional que se obtiene desde el modelo y se vuelve a pasar al controlador /// Otra posibilidad seria incluirlo en un campo hidden /// </param> /// <returns></returns> public ActionResult SelectPerfil(string cbPerfiles, string login) { SecurityServices serv = new SecurityServices(); Usuario user = serv.GetUsuarioFromLogin(login); Perfil perfilElegido; Sesion newSesion; perfilElegido = user.Perfiles.Where(pf => pf.Nombre == cbPerfiles).Single(); Session["SESION_USER"] = newSesion = serv.CrearSesion(user, perfilElegido); return View("LoginOK_v2", newSesion); }
/// <summary> /// Tomamos un Usuario, borramos los perfiles que tiene y agregamos los que no tenia /// Visualizar en SQL Profiler: se veran las dos instrucciones delete y los 2 insert en Usuarios_Perfiles /// [[IMPORTANTE]] /// Antes de probar este metodo, asegurarse de haber llamado a CrearUsuarioCompleto() ya que ahi es donde /// colocamos los perfiles /// </summary> public static void CambiarSoloPerfiles() { SecurityServices serv = new SecurityServices(); Usuario user; // Seguramente no se hace un viaje a la DB, este objeto ya esta en memoria local... user = serv.GetUsuarioFromLogin("lsimpson"); var perfiles = from p in DB.Contexto.Perfiles where p.ID == 1 || p.ID == 4 select p; user.Perfiles.Clear(); user.Perfiles.UnionWith(perfiles); serv.UpdateUsuario(user); }