Move permission check to User class