4
votes

Alice Bundle - Comment utiliser le mot de passe encodé dans le montage YML

J'utilise hautelook / alice-bundle.

Je ne peux pas utiliser le mot de passe bcrypt encodé dans mon appareil à cause de l'erreur suivante ($ in interprété comme une référence à un objet):

In SimpleObjectGenerator.php line 114:

Une erreur s'est produite lors de la génération du projecteur "stagiaire" (App \ Document \ Trainee): Impossible de résoudre la valeur pendant le processus de génération.

App\Document\Trainee:
# template
trainee (template):
    firstName:              <fr_FR:firstName()>
    lastName:               <fr_FR:lastName()>
    email (unique):         <fr_FR:email()>
    password :              $2y$13$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u
    plainPassword:          password
    birthdate:              <date('now')>
    address:                '@address_tr_*'
    phoneNumber:            <fr_FR:phoneNumber()>
    profileCompleted:       false


1 commentaires

Je n'utilise pas FOSUserBundle


3 Réponses :


6
votes

Vous pouvez mettre le mot de passe haché dans les paramètres, comme ceci:

parameters:
    hash: $2y$13$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u

App\Document\Trainee:
    trainee (template):
        password: <{hash}>
        ...


0 commentaires

0
votes

Vous devez simplement échapper chaque $ avec \$

pour votre exemple:

App\Document\Trainee:
    trainee (template):
        [...]
        password: '\$2y\$13\$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u'


0 commentaires

0
votes

Je vous suggère de définir simplement un encodeur de texte en clair dans l'environnement de test et de définir des mots de passe en clair dans vos appareils.

Tout d'abord, passez à un encodeur de mot de passe en clair dans l'environnement test :

public function testLoginWithUsernameAndPassword()
{
    $response = static::createHttpClient()->request('POST', '/api/login', ['json' => [
        'username' => 'user1@example.com',
        'password' => 'password'
    ]]);

    // assert $response
}

Ensuite dans votre appareil:

App\Entity\User:
    user1:
        username: user1@example.com
        password: 'password'

Vous pouvez maintenant utiliser le mot de passe en clair dans vos tests:

# config/packages/test/security.yaml
security:
    encoders:
        App\Entity\User:
            algorithm: plaintext


0 commentaires