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); }
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); }
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); }
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); } }
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); }
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); }
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"); } }
private Article GetArticleAsserted( ArticleSlug articleSlug, ArticleAccessType accessType = ArticleAccessType.CanRead) { var article = this.TryGetArticle(articleSlug, accessType); if (article == null) { throw new ArticleNotFoundException(articleSlug); } return article; }
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); }
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); } }
public static void AssertCanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType) { AssertArticle(article); article.ArticleAccess.AssertCanAccess(article.Slug, principal, accessType); }
public static Article EnsureAccess(this Article article, IPrincipal principal, ArticleAccessType accessType) { return (article != null && article.CanAccess(principal, accessType)) ? article : null; }
public static bool CanAccess(this Article article, IPrincipal principal, ArticleAccessType accessType) { AssertArticle(article); return article.ArticleAccess.GetCanAccess(principal, accessType); }
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; }