public static void EnsureIsAuthorized(
            string articleSlugParamName,
            ArticleAccessType accessType,
            HttpControllerContext controllerContext,
            IDictionary<string, object> actionArguments)
        {
            string slugValue = GetSlugValue(articleSlugParamName, actionArguments);

            var repository = controllerContext.GetRepository();

            EnsureIsAuthorizedInternal(slugValue, repository, accessType, controllerContext.RequestContext.Principal);
        }
Esempio n. 2
0
        public static void EnsureIsAuthorized(
            string articleIdParamName,
            ArticleAccessType accessType,
            HttpRequestContext requestContext,
            IDictionary <string, object> actionArguments)
        {
            string slugValue = GetSlugValue(articleIdParamName, actionArguments);

            var repository = RepositoryRequestInstance.Get(requestContext);

            EnsureIsAuthorizedInternal(slugValue, repository, accessType, requestContext.Principal);
        }
Esempio n. 3
0
        public static void EnsureIsAuthorized(
            string articleIdParamName,
            ArticleAccessType accessType,
            RequestContext requestContext,
            IDictionary <string, object> actionArguments)
        {
            string slugValue = GetSlugValue(articleIdParamName, actionArguments);

            var documentStore = DocumentStoreAppInstance.Get(requestContext.HttpContext.Application);
            var repository    = RepositoryRequestInstance.Get(requestContext, documentStore);

            EnsureIsAuthorizedInternal(slugValue, repository, accessType, requestContext.HttpContext.User);
        }
Esempio n. 4
0
        public void AssertCanAccess(ArticleSlug articleSlug, IPrincipal principal, ArticleAccessType accessType)
        {
            if (articleSlug == null)
            {
                throw new ArgumentOutOfRangeException("articleSlug");
            }

            bool canAccess = this.GetCanAccess(principal, accessType);
            if (!canAccess)
            {
                throw new ArticleAccessException(articleSlug);
            }
        }
Esempio n. 5
0
 public bool GetCanAccess(IPrincipal principal, ArticleAccessType accessType)
 {
     switch (accessType)
     {
         case ArticleAccessType.CanRead:
             return this.GetCanRead(principal);
         case ArticleAccessType.CanEdit:
             return this.GetCanEdit(principal);
         case ArticleAccessType.CanAdmin:
             return this.GetCanAdmin(principal);
         default:
             throw new ArgumentOutOfRangeException("accessType");
     }
 }
        private static void EnsureIsAuthorizedInternal(
            string slugValue,
            Repository repository,
            ArticleAccessType accessType,
            IPrincipal principal)
        {
            var articleSlug = new ArticleSlug(slugValue ?? string.Empty);
            var article = (articleSlug.HasValue) ? repository.GetArticle(articleSlug) : null;
            var articleAccess = (article != null) ? article.ArticleAccess : null;

            articleAccess = articleAccess ?? ArticleAccess.Default();

            articleAccess.AssertCanAccess(articleSlug, principal, accessType);
        }
Esempio n. 7
0
        private static void EnsureIsAuthorizedInternal(
            string slugValue,
            Repository repository,
            ArticleAccessType accessType,
            IPrincipal principal)
        {
            var articleId = new ArticleId(slugValue ?? string.Empty);
            var article   = (articleId.HasValue) ? repository.GetArticle(articleId) : null;

            if (article == null)
            {
                return;
            }

            article.EnsureCanAccess(principal, accessType);
        }
Esempio n. 8
0
        public static bool CanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType)
        {
            if (article == null)
            {
                throw new ArgumentNullException("article");
            }

            switch (accessType)
            {
            case ArticleAccessType.CanRead:
                return(article.CanRead(principal));

            case ArticleAccessType.CanEdit:
                return(article.CanEdit(principal));

            case ArticleAccessType.CanAdmin:
                return(article.CanAdmin(principal));

            default:
                throw new ArgumentOutOfRangeException("accessType");
            }
        }
Esempio n. 9
0
        private Article GetArticleAsserted(
            ArticleSlug articleSlug,
            ArticleAccessType accessType = ArticleAccessType.CanRead)
        {
            var article = this.TryGetArticle(articleSlug, accessType);
            if (article == null)
            {
                throw new ArticleNotFoundException(articleSlug);
            }

            return article;
        }
Esempio n. 10
0
        private Article TryGetArticle(ArticleSlug articleSlug, ArticleAccessType accessType = ArticleAccessType.CanRead)
        {
            var articles =
                this.CurrentSession.Query<ArticlesIndex.Result, ArticlesIndex>()
                    .Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
                    .Where(
                        x => this.CurrentPrincipalAccessLevel >= x.CanReadAccess && x.ArticleSlug == articleSlug.Slug)
                    .OfType<Article>();

            var article = articles.FirstOrDefaultHandled();

            return article.EnsureAccess(this.currentPrincipal, accessType);
        }
Esempio n. 11
0
        public static void EnsureCanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType)
        {
            if (article == null)
            {
                throw new ArgumentNullException("article");
            }

            bool canAccess = article.CanAccess(principal, accessType);

            if (!canAccess)
            {
                throw new ArticleAccessException(article.Id);
            }
        }
Esempio n. 12
0
        public static void AssertCanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType)
        {
            AssertArticle(article);

            article.ArticleAccess.AssertCanAccess(article.Slug, principal, accessType);
        }
Esempio n. 13
0
 public static Article EnsureAccess(this Article article, IPrincipal principal, ArticleAccessType accessType)
 {
     return (article != null && article.CanAccess(principal, accessType)) ? article : null;
 }
Esempio n. 14
0
        public static bool CanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType)
        {
            AssertArticle(article);

            return article.ArticleAccess.GetCanAccess(principal, accessType);
        }
Esempio n. 15
0
        private Article GetOrCreateArticle(
            ArticleSlug articleSlug,
            ArticleAccessType accessType = ArticleAccessType.CanRead)
        {
            var article = this.TryGetArticle(articleSlug, accessType);
            if (article == null)
            {
                article = new Article(articleSlug);
                this.CurrentSession.Store(article);
            }

            return article;
        }
 public AuthorizeArticleAttribute(ArticleAccessType accessType)
 {
     this.accessType = accessType;
     this.ParamName = AuthorizeArticleHelper.DefaultArticleSlugParamName;
 }
 public AuthorizeArticleAttribute(ArticleAccessType accessType)
 {
     this.accessType = accessType;
     this.ParamName  = DefaultArticleIdParamName;
 }