On second glance, yes, but you can simplifying the logic. You don't need to check if an assertion exists for $permission) unless $assert is null. 

if (null === $assert && $this->hasAssertion($permission)) { $assert = $this->assertions[$permission] }