What are the differences between these three methods?
Connor Leech

Hey Connor!

Despite the similarity, each of them are responsible for a single task. authorizeRoles() is just responsible for checking; hasAnyRole() contain the logic to verify if the Role is an array or string; and hasRole() have the single task of query the database. 
For sure you can refactor and merge all in one method that do these three tasks if you want. But better to keep it as simple as possible.