public override string[] FindUsersInRole(string roleName, string usernameToMatch) { SecUtility.CheckParameter(ref roleName, true, true, null, MAX_ROLE_LENGTH, ROLE_NAME); if (String.IsNullOrWhiteSpace(usernameToMatch)) { return(new string[0]); } var username = ElementNames.LowercaseUsername; var userQuery = Helper.FindQuery(usernameToMatch.ToLowerInvariant(), username); var query = Builders <User> .Filter.And( Builders <User> .Filter.Eq(ElementNames.Roles, roleName.ToLowerInvariant()), userQuery.ToBsonDocument() ); var cursor = UserCollection.FindSync <User>(query); return(cursor.ToEnumerable().Select(doc => doc.Username).ToArray()); }
public override string[] FindUsersInRole(string roleName, string usernameToMatch) { SecUtility.CheckParameter(ref roleName, true, true, null, MAX_ROLE_LENGTH, ROLE_NAME); if (String.IsNullOrWhiteSpace(usernameToMatch)) { return(new string[0]); } var username = ElementNames.LowercaseUsername; var userQuery = Helper.FindQuery(usernameToMatch.ToLowerInvariant(), username); var query = Query.And( Query.EQ(ElementNames.Roles, roleName.ToLowerInvariant()), userQuery ); var cursor = UserCollection.FindAs <BsonDocument>(query); // only want the usernames cursor.SetFields(Fields.Include(username).Exclude(DOCUMENT_ID_NAME)); return(cursor.Select(doc => doc[username].AsString).ToArray()); }
public override bool RoleExists(string roleName) { SecUtility.CheckParameter(ref roleName, true, true, null, MAX_ROLE_LENGTH, ROLE_NAME); return(Roles.Contains(roleName.ToLowerInvariant())); }