/**
  * Add a role to a user
  *
  * This command allows for adding a specific role to an existing user.
  *
  * Roles can optionally be specified as a comma separated list. For all roles provided by Neos, the role
  * namespace "TYPO3.Neos:" can be omitted.
  *
  * If an authentication provider was specified, the user will be determined by an account identified by "username"
  * related to the given provider. However, once a user has been found, the new role will be added to <b>all</b>
  * existing accounts related to that user, regardless of its authentication provider.
  *
  * @param string $username The username of the user
  * @param string $role Role to be added to the user, for example "TYPO3.Neos:Administrator" or just "Administrator"
  * @param string $authenticationProvider Name of the authentication provider to use. Example: "Typo3BackendProvider"
  * @return void
  */
 public function addRoleCommand($username, $role, $authenticationProvider = null)
 {
     $user = $this->getUserOrFail($username, $authenticationProvider);
     try {
         if ($this->userService->addRoleToUser($user, $role) > 0) {
             $this->outputLine('Added role "%s" to accounts of user "%s".', array($role, $username));
         } else {
             $this->outputLine('User "%s" already had the role "%s" assigned.', array($username, $role));
         }
     } catch (NoSuchRoleException $exception) {
         $this->outputLine('The role "%s" does not exist.', array($role));
         $this->quit(2);
     }
 }