eomeroff
eomeroff

Reputation: 9925

Manually encrypt user password in Symfony php

I have a need to manually encrypt the password in the same way Symfony does it.

$user->setPlainPassword($password);
$userManager->updateUser($user);

This is application code that saves the user password. But it is obviously encrypted (not plain as method says).

How can I manually get the same result for given password?

EDIT1:

The problem is that I want to authenticate user manually in users controller code. I have readable username and password that comes as parameters. I want to return 401 if they to not exist in database.

Upvotes: 11

Views: 37249

Answers (3)

KoviNET
KoviNET

Reputation: 819

In newer Symfony versions (5.3+) you can do it by running CLI command:

bin/console security:hash-password

Upvotes: 16

miikes
miikes

Reputation: 984

Try this in your controller action:

$encoder = $this->get('security.encoder_factory')->getEncoder($userClass);
$encodedPassword = $encoder->encodePassword($plainPassword);

Upvotes: 9

Kévin Dunglas
Kévin Dunglas

Reputation: 3024

Symfony comes with a useful command to encode a password the same way it does:

bin/console security:encode-password 'your_plain_password' 'AppBundle\Entity\YourUserClass'

Upvotes: 32

Related Questions