The international conference on the API Platform Framework
Lear more about the event, register for the conference, and get ready for two days of inspiration, ideas, and knowledge-sharing with our incredible lineup of renowned specialists and advocates.
This edition is shaping up to be our biggest yet — secure your seat now at the best price before we sell out!
ℹ️ 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