ℹ️ Warning
The use of FOSUserBundle is no longer recommended for better flexibility and security. It is advised to switch to the Doctrine entity user provider (recommended) or consider creating a custom user provider.
The installation procedure of the FOSUserBundle is described in the FOSUserBundle documentation.
You can:
LexikJWTAuthenticationBundle
If you are using the API Platform Standard Edition, you will need to enable the form services in the symfony framework configuration options:
# api/config/packages/framework.yaml framework: form: { enabled: true }
User
Entity with Serialization GroupsHere’s an example of declaration of a Doctrine ORM User class. There’s also an example for a Doctrine MongoDB ODM. You need to use serialization groups to hide some properties like plainPassword
(only in read) and password
. The properties shown are handled with normalizationContext
, while the properties you can modify are handled with denormalizationContext
.
Create your User entity with serialization groups:
<?php // api/src/Entity/User.php namespace App\Entity; use ApiPlatform\Metadata\ApiResource; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Model\User as BaseUser; use FOS\UserBundle\Model\UserInterface; use Symfony\Component\Serializer\Annotation\Groups; #[ORM\Entity] #[ORM\Table(name: 'fos_user')] #[ApiResource( normalizationContext: ['groups' => ['user']], denormalizationContext: ['groups' => ['user', 'user:write']], )] class User extends BaseUser { #[ORM\Id, ORM\Column, ORM\GeneratedValue] protected ?int $id = null; #[Groups("user")] protected string $email; #[ORM\Column(nullable: true)] #[Groups("user")] protected string $fullname; #[Groups("user:write")] protected string $plainPassword; #[Groups("user")] protected string $username; public function setFullname(?string $fullname): void { $this->fullname = $fullname; } public function getFullname(): ?string { return $this->fullname; } public function isUser(?UserInterface $user = null): bool { return $user instanceof self && $user->id === $this->id; } }
You can also help us improve the documentation of this page.
Made with love by
Les-Tilleuls.coop can help you design and develop your APIs and web projects, and train your teams in API Platform, Symfony, Next.js, Kubernetes and a wide range of other technologies.
Learn more