allow to set api token when creating user via API (#3380)
This commit is contained in:
@@ -226,11 +226,17 @@ final class UserController extends BaseApiController
|
||||
$password = $this->encoder->encodePassword($user, $user->getPlainPassword());
|
||||
$user->setPassword($password);
|
||||
|
||||
if ($user->getPlainApiToken() !== null) {
|
||||
$user->setApiToken($this->encoder->encodePassword($user, $user->getPlainApiToken()));
|
||||
}
|
||||
|
||||
$this->repository->saveUser($user);
|
||||
|
||||
$view = new View($user, 200);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
$user->eraseCredentials();
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
|
||||
|
||||
@@ -156,8 +156,9 @@ class User implements UserInterface, EquatableInterface, \Serializable
|
||||
*/
|
||||
private $apiToken;
|
||||
/**
|
||||
* @var string
|
||||
* @var string|null
|
||||
* @internal to be set via form, must not be persisted
|
||||
*
|
||||
* @Assert\NotBlank(groups={"ApiTokenUpdate"})
|
||||
* @Assert\Length(min="8", max="60", groups={"ApiTokenUpdate"})
|
||||
*/
|
||||
@@ -848,6 +849,7 @@ class User implements UserInterface, EquatableInterface, \Serializable
|
||||
public function eraseCredentials()
|
||||
{
|
||||
$this->plainPassword = null;
|
||||
$this->plainApiToken = null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,7 +24,9 @@ class UserApiCreateForm extends UserCreateType
|
||||
{
|
||||
parent::buildForm($builder, $options);
|
||||
|
||||
$builder->remove('plainPassword');
|
||||
if ($builder->has('plainPassword')) {
|
||||
$builder->remove('plainPassword');
|
||||
}
|
||||
|
||||
$builder->add('plainPassword', PasswordType::class, [
|
||||
'required' => true,
|
||||
@@ -35,6 +37,19 @@ class UserApiCreateForm extends UserCreateType
|
||||
],
|
||||
]);
|
||||
|
||||
if ($builder->has('plainApiToken')) {
|
||||
$builder->remove('plainApiToken');
|
||||
}
|
||||
|
||||
$builder->add('plainApiToken', PasswordType::class, [
|
||||
'required' => false,
|
||||
'label' => 'label.api_token',
|
||||
'documentation' => [
|
||||
'type' => 'string',
|
||||
'description' => 'Plain API token',
|
||||
],
|
||||
]);
|
||||
|
||||
if ($options['include_roles']) {
|
||||
$builder->add('roles', UserRoleType::class, [
|
||||
'label' => 'label.roles',
|
||||
|
||||
Reference in New Issue
Block a user