Ejemplo n.º 1
0
        public ActionResult Login(string txtLogin, string txtPassword)
        {
            SecurityServices serv = new SecurityServices();
              Usuario user;
              ActionResult result = new EmptyResult();

              try
              {
            user = serv.Login(txtLogin, txtPassword);
            if (user != null)
            {
              //  Opcion 1: terminamos aca y no pedimos perfil
              //  result = View("LoginOK", user);

              //  TODO acomodar autenticacion para que no se repita el codigo

              //  Opcion 2: redirigimos a otra vista que nos permite elegir el perfil (salvo que tenga un unico perfil...)
              if (user.Perfiles.Count > 1)
              {
            result = View("PerfilSelect", user);
              }
              else
              {
            //  Guardamos los datos de sesion en el "contexto" de la sesion establecida (similar al Context que usamos en WPF)
            //
            Session["SESION_USER"] = serv.CrearSesion(user, user.Perfiles.Single());

            FormsAuthentication.SetAuthCookie(user.Login, false);

            string redirectUrl = FormsAuthentication.GetRedirectUrl(user.Login, false);

            if (redirectUrl == "/" || string.IsNullOrEmpty(redirectUrl))
            {
              //  creamos una nueva vista strong-typed para incorporar la Sesion
              result = View("LoginOK_v2", Session["SESION_USER"] as Sesion);
            }
            else
            {
              result = new RedirectResult(redirectUrl);
            }
              }
            }
            else
            {
              //  TODO: armar paginas de error para los casos de credenciales incorrectas o excepcion
              //  TODO: y un controlador que ademas realice el log del problema?
              //
              result = new HttpUnauthorizedResult("Credenciales incorrectas");
            }
              }
              catch (Exception ex)
              {
            //  redireccionar a una pagina de error!!
            result = new HttpUnauthorizedResult("Estas al horno!!!");
              }
              return result;
        }
Ejemplo n.º 2
0
        public LoginViewModel(Action<ActionRequest> notify)
        {
            _notify = notify ?? delegate(ActionRequest r) { };

              ComandoIngresar = new ComandoSimple(() =>
              {
            Debug.WriteLine("Llamar a Login Usuario {0} , Pass: {1}", Login, Password);

            SecurityServices srv = new SecurityServices();

            try
            {
              if ((Usuario = srv.Login(Login, Password)) != null)
              {
            Perfiles = new ObservableCollection<Perfil>(Usuario.Perfiles);
            PerfilSeleccionado = Perfiles[0];

            _notify(ActionRequest.CloseOK);
              }
            }
            catch (OMBSecurityException ex)
            {
              OnLoginError(ex.Message);
            }
              }, IsValid);

              ComandoIngresarPerfil = new ComandoSimple(() =>
              {
            SecurityServices srv = new SecurityServices();

            srv.CrearSesion(Usuario, PerfilSeleccionado);

            Debug.WriteLine("Perfil Seleccionado: {0}", (object)_perfil.Descripcion);

            _notify(ActionRequest.CloseOK);
              });

              ComandoCancelar = new ComandoSimple(() => _notify(ActionRequest.CloseCancel));

              PerfilSeleccionado = null;
        }
Ejemplo n.º 3
0
        /// <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);
        }