コード例 #1
0
        private bool IsValid(int itemId, out ContentItem item, out ActionResult invalidResult)
        {
            if (_orchardServices.WorkContext.CurrentUser == null || !_orchardServices.Authorizer.Authorize(Permissions.WatchItems))
            {
                invalidResult = new HttpUnauthorizedResult();
                item = null;
                return false;
            }

            item = _orchardServices.ContentManager.Get(itemId);

            if (item == null)
            {
                invalidResult = HttpNotFound();
                return false;
            }

            if (!_orchardServices.Authorizer.Authorize(Orchard.Core.Contents.Permissions.ViewContent))
            {
                invalidResult = new HttpUnauthorizedResult();
                return false;
            }

            if (!item.Has<WatchablePart>())
            {
                invalidResult = HttpNotFound();
                return false;
            }

            invalidResult = null;
            return true;
        }
コード例 #2
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;
        }