/** * @param Response $response * * @return UserInterface|null */ public function createUser(Response $response) { $username = $this->usernameMapper->getUsername($response); $attributes = $this->attributeMapper->getAttributesFromResponse($response); /* * Retrieve roles from attributes array, either at key roles or at key gidNumber (LDAP Auth) */ if (array_key_exists('gidNumber', $attributes)) { $roles = $this->getRolesFromGidNumber($attributes['gidNumber']); } else { $roles = []; } $user = new User(); $user ->setUsername($username) ->setRoles($roles) ; $this->objectManager->persist($user); $this->objectManager->flush(); return $user; } /** * @param int $gidNumber */ private function getRolesFromGidNumber($gidNumber) { $roles = []; foreach ($gidNumber as $number) { switch ($number) { case '500': array_push($roles, 'ROLE_ADMIN'); break; case '501': array_push($roles, 'ROLE_USER'); break; } } return $roles; }