I found the solution is overriding the method 'get_query'
It should return a SQLAlchemy query object.
def get_query(self):
role = current_user.role
if role == 'contributor':
return # filtered query
elif role == 'admin':
return # unfiltered query