BasePermission.has_permission may be synchronous or asynchronous. Return a false
value to produce a field error using the permission’s message. Extensions wrap
the next stage in declared order and may inspect or transform its result.
Keep authorization rules explicit and narrow. Context establishes identity;
permissions decide whether the active field operation is allowed.