Parfois dans nos développements, il peut y arriver qu’on ait besoin de créer un utilisateur ou faire une mise à jour.
Je partage ici un exemple de création et de modification d’un utilisateur Ibexa
Le code est facile à lire. En gros
- On charge le groupe d’utilisateurs via une méthode disponibles dans le service UserService
- Une fois le groupe est trouvé, On peut créer ce qu’on appel une structure ==> toujours via les méthodes du UserService
- Remplir les données
- Créer l’utilisateur
public function createUser(array $userInfo)
{
try {
$userService = $this->repository->getUserService();
$contentTypeService = $this->repository->getContentTypeService();
$userGroup = $this->repository->sudo(
function () use ($userService) {
return $userService->loadUserGroupByRemoteId('REMOTE');
}
);
if ($userGroup) {
$createStruct = $userService->newUserCreateStruct(
$userInfo['login'],
$userInfo['email'],
md5($userInfo['login']),
self::MAIN_LANGUAGE,
$contentTypeService->loadContentTypeByIdentifier('user')
)
);
// Create Field User
$createStruct->setField('first_name', trim($userInfo['first_name']));
$createStruct->setField('second_name', trim($userInfo['second_name']));
// Create User
return $this->repository->sudo(
function () use ($userService, $createStruct, $userGroup) {
return $userService->createUser($createStruct, [$userGroup]);
}
);
}
} catch (\Exception $exception) {
$this->logger->error('Error when create user in Ibexa '.$exception->getTraceAsString());
return false;
}
}
Un autre exemple d’une mise à jour
public function updateUser($user, $userInfo)
{
try {
$userService = $this->repository->getUserService();
$updateStruct = $userService->newUserUpdateStruct();
$updateStruct->contentUpdateStruct = $this->repository->getContentService()->newContentUpdateStruct();
// Update Field user
$updateStruct->email = $userInfo['email'];
$updateStruct->contentUpdateStruct->setField('first_name', trim($userInfo['first_name']));
$updateStruct->contentUpdateStruct->setField('second_name', trim($userInfo['second_name']));
// Update Field User
return $this->repository->sudo(
function () use ($userService, $updateStruct, $user) {
return $userService->updateUser($user, $updateStruct);
}
);
} catch (\Exception $exception) {
$this->logger->error('Error when update user in Ibexa '.$exception->getTraceAsString());
return false;
}
}
Nous avons vu deux exemples qui consomment l’API Public d’Ibexa
L’exemple donné est sous Ibexa 3.3
D’autres exemples et code seront partagés sous la catégorie Ibexa