public bool IsTokenAuthorized(string token, AccessLevel accessLevelRequired) { if (accessLevelRequired == AccessLevel.Public) { return(true); } var metadata = _storage.GetMetadata(token); if (metadata == null) { return(false); } switch (accessLevelRequired) { case AccessLevel.Admin: return(metadata.Role == UserRole.Admin); case AccessLevel.User: return(metadata.Role == UserRole.Admin || metadata.Role == UserRole.User); case AccessLevel.Public: return(true); case AccessLevel.Anonymous: return(metadata.Role == UserRole.Public); } return(true); }