public static IReadOnlyCollection<string> GetRoles(ArticleAccessLevel? accessLevel) { switch (accessLevel) { case null: case ArticleAccessLevel.Anonymous: return Enumerable.Empty<string>().ToList(); case ArticleAccessLevel.LoggedIn: return LoggedInRoles; case ArticleAccessLevel.Editor: return EditorRoles; case ArticleAccessLevel.SuperUser: return SuperUserRoles; case ArticleAccessLevel.Admin: return AdminRoles; case ArticleAccessLevel.Root: return RootRoles; default: throw new ArgumentOutOfRangeException("accessLevel"); } }
public static bool HasAccessLevel(this IPrincipal principal, ArticleAccessLevel accessLevel) { var principalAccessLevel = principal.GetAccessLevel(); return principalAccessLevel >= accessLevel; }
public static ArticleAccessLevel TryParse(string accessLevel, ArticleAccessLevel defaultValue) { var articleAccessLevel = TryParse(accessLevel); return articleAccessLevel ?? defaultValue; }