Bonjour,
Lors de la création d'un utilisateur j'essaie de crypter les mots de passe sans succès au travers du bundle FOSUserBundle.
Il est ensuite impossible de se connecter avec le mot de passe créé en clair. Pas de pb si le user est créé par ligne de commande.
Security dans app/config:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 imports: - { resource: "@LdbUserBundle/Resources/config/security.yml" } security: role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] access_control: - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/admin/, role: ROLE_ADMIN } - { path: ^/ajouter/, role: ROLE_ADMIN } - { path: ^/voir/, role: ROLE_ADMIN } - { path: ^/modifier/, role: ROLE_ADMIN } - { path: ^/supprimer/, role: ROLE_ADMIN }
Security.yml dans le config du bundle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 security: encoders: Ldb\UserBundle\Entity\User: sha512 providers: fos_userbundle: id: fos_user.user_provider.username firewalls: dev: pattern: ^/(_(profiler|wdt)) security: false main: pattern: .* anonymous: true provider: fos_userbundle form_login: csrf_provider: form.csrf_provider login_path: fos_user_security_login check_path: fos_user_security_check logout: path: fos_user_security_logout target: / remember_me: key: %secret% # %secret% est un paramètre de parameters.yml lifetime: 300000000 path: / domain: ~
Mon entité User:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 namespace Ldb\UserBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use FOS\UserBundle\Entity\User as BaseUser; /** * User * * @ORM\Table() * @ORM\Entity(repositoryClass="Ldb\UserBundle\Entity\UserRepository") */ class User extends BaseUser { /** * @ORM\OneToMany(targetEntity="Ldb\CommentBundle\Entity\Comment", mappedBy="user", cascade={"remove"}) * @ORM\OrderBy({"createdat" = "DESC"}) */ private $comments; // Ici commentaires prend un « s », car un article a plusieurs commentaires ! /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var boolean * * @ORM\Column(name="etiopathe", type="boolean") * @Assert\Type(type="bool", message="{{ value }} n'est pas un type {{ type }} valide.") etc.
Le form du user
Le form du patient qui étend celui du user
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 namespace Ldb\UserBundle\Form; use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class UserType extends BaseType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('username', 'text', array('label' => " ", 'attr' => array('placeholder' => 'Login'))) ->add('password', 'text', array('label' => " ", 'attr' => array('placeholder' => 'Mot de passe'))) ->add('nom', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Nom'))) ->add('prenom', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Prénom'))) ->add('email', 'email', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Email'))) ->add('datenaissance', 'date', array('label' => " ", 'required' => false, 'widget' => 'single_text', 'format' => 'd/M/y', 'attr' => array('class' => 'date', 'placeholder' => 'Date de naissance', 'data-date-start-view' => 'decade', 'data-date-language' => 'fr'))) ->add('adresse', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Adresse'))) ->add('codepostal', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Code postal'))) ->add('ville', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Ville'))) ->add('telfixe', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Téléphone fixe'))) ->add('telportable', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Téléphone portable'))) ; } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Ldb\UserBundle\Entity\User' )); } /** * @return string */ public function getName() { return 'ldb_userbundle_user'; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 namespace Ldb\UserBundle\Form; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class PatientType extends UserType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder ->add('profession', 'text', array('label' => " ", 'required' => false, 'attr' => array('placeholder' => 'Profession'))) ->add('remarque', 'textarea', array('label' => " ", 'required' => false, 'attr' => array('class'=>'input-xlarge','placeholder' => 'Remarque'))) ->add('antecedent', 'textarea', array('label' => " ", 'required' => false, 'attr' => array('class'=>'input-xlarge','placeholder' => 'Antécédent'))) ->add('traitement', 'textarea', array('label' => " ", 'required' => false, 'attr' => array('class'=>'input-xlarge','placeholder' => 'Traitement'))) ->add('mutuelle', 'checkbox', array('label' => "Mutuelle ", 'required' => false)) ; } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Ldb\UserBundle\Entity\User' )); } /** * @return string */ public function getName() { return 'ldb_userbundle_patient'; } }
le services.yml dans le bundle
Voyez-vous quelquechose qui manque, qui cloche?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 services: # ldb_user.example: # class: %ldb_user.example.class% # arguments: [@service_id, "plain_value", %parameter%] ldb_user.registration.form.type: class: Ldb\UserBundle\Form\UserType arguments: [%fos_user.model.user.class%] tags: - { name: form.type, alias: ldb_userbundle_patient }
Laurent.
Partager