37-5 Retourner un jeton lors de l'inscription
Lors de l'inscription, on retourne le détail de l'utilisateur. Cela fait en sorte qu'il faudrait faire deux requêtes. Une première pour inscrire l'utilisateur et une deuxième l'authentifier ensuite.
On peut combiner les deux et simplement retourner un jeton si l'inscription est réussie.
Support pour signer des jetons
Tout comme dans AuthModule, on doit ajouter le support pour la signature de jetons au module Utilisateur.
src/utilisateurs/utilisateurs.module.ts
@Module({
imports: [
JwtModule.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
secret: configService.get('JWT_SECRET'),
signOptions: { expiresIn: configService.get('JWT_EXPIRES_IN') },
}),
}),
],
controllers: [UtilisateursController],
providers: [UtilisateursService]
})
export class UtilisateursModule {}
Retourner un jeton lors de l'inscription
- Injecter
JwtServicevia le constructeur deUtilisateursServicesrc/utilisateurs/utilisateurs.service.tsexport class UtilisateursService {
constructor(private readonly i18n: I18nService,
private jwtService: JwtService) {} - Plutôt que de retourner l'utilisateur, retournez simplement un nouveau jeton signé!
src/utilisateurs/utilisateurs.service.ts
//...
await utilisateur.save();
const access_token = this.jwtService.sign({
sub: utilisateur.id,
courriel: utilisateur.courriel,
nomUtilisateur: utilisateur.nomUtilisateur,
});
return { access_token };
}
Vous pouvez essayer via Postman d'inscrire un autre utilisateur et devriez recevoir un jeton d'accès JWT.
