瀏覽代碼

Evolution #582: Implémenter le mode nopass

Sevajol Bastien 11 年之前
父節點
當前提交
5e077abd39

+ 8 - 0
src/Muzich/CoreBundle/Entity/User.php 查看文件

@@ -1031,6 +1031,14 @@ class User extends BaseUser
1031 1031
     return $this->cgu_accepted;
1032 1032
   }
1033 1033
   
1034
+  public function setCguAccepted($accepted)
1035
+  {
1036
+    if ($accepted)
1037
+      $this->cgu_accepted = true;
1038
+    else
1039
+      $this->cgu_accepted = false;
1040
+  }
1041
+  
1034 1042
   public function getMailNewsletter()
1035 1043
   {
1036 1044
     return $this->mail_newsletter;

+ 56 - 5
src/Muzich/UserBundle/Controller/UserController.php 查看文件

@@ -11,7 +11,8 @@ use Muzich\CoreBundle\Form\Tag\TagFavoritesForm;
11 11
 use Symfony\Component\Validator\Constraints\Email;
12 12
 use Symfony\Component\Validator\Constraints\Collection;
13 13
 use Symfony\Component\HttpFoundation\Request;
14
-
14
+use Muzich\UserBundle\Form\Type\RegistrationFormType;
15
+use Muzich\CoreBundle\Entity\User;
15 16
 
16 17
 class UserController extends Controller
17 18
 {
@@ -130,8 +131,58 @@ class UserController extends Controller
130 131
     ;
131 132
   }
132 133
   
133
-      
134
-  public function registerAction()
134
+  public function registerAction(Request $request)
135
+  {
136
+    $userManager = $this->container->get('fos_user.user_manager');
137
+    $user = $this->getNewUser($userManager);
138
+    $form = $this->createForm(new RegistrationFormType(), $user);
139
+    $form->bindRequest($request);
140
+    
141
+    if ($form->isValid())
142
+    {
143
+      $response = $this->getSuccessRegistrationResponse();
144
+      $userManager->updateUser($user);
145
+      $this->authenticateUser($user, $response);
146
+      return $response;
147
+    }
148
+    
149
+    return $this->getFailureRegistrationResponse($form);
150
+  }
151
+  
152
+  /** @return User */
153
+  protected function getNewUser($userManager)
154
+  {
155
+    $user = $userManager->createUser();
156
+    $user->setUsername($this->generateUsername());
157
+    $user->setPlainPassword($this->generatePassword(32));
158
+    $user->setEnabled(true);
159
+    $user->setCguAccepted(true);
160
+    return $user;
161
+  }
162
+  
163
+  protected function generateUsername()
164
+  {
165
+    $qb = $this->getEntityManager()->createQueryBuilder();
166
+    $qb->select('count(id)');
167
+    $qb->from('MuzichCoreBundle:User','id');
168
+    $count = $qb->getQuery()->getSingleScalarResult();
169
+    return 'User'.$count;
170
+  }
171
+  
172
+  protected function generatePassword($length = 8)
173
+  {
174
+    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
175
+    $count = mb_strlen($chars);
176
+    
177
+    for ($i = 0, $result = ''; $i < $length; $i++) {
178
+        $index = rand(0, $count - 1);
179
+        $result .= mb_substr($chars, $index, 1);
180
+    }
181
+    
182
+    return $result;
183
+  }
184
+  
185
+  public function registerOldAction()
135 186
   {
136 187
     $form = $this->container->get('fos_user.registration.form');
137 188
     $formHandler = $this->container->get('fos_user.registration.form.handler');
@@ -180,13 +231,13 @@ class UserController extends Controller
180 231
     ));
181 232
   }
182 233
   
183
-  protected function getFailureRegistrationResponse($form, $formHandler)
234
+  protected function getFailureRegistrationResponse($form)//, $formHandler)
184 235
   {
185 236
     $parameters = array(
186 237
       'form'                     => $form->createView(),
187 238
       'error'                    => null,
188 239
       'registration_errors'      => $form->getErrors(),
189
-      'registration_errors_pers' => $formHandler->getErrors(),
240
+      //'registration_errors_pers' => $formHandler->getErrors(),
190 241
       'last_username'            => null,
191 242
       'registration_page'        => true,
192 243
       'presubscription_form'     => $this->getPreSubscriptionForm()->createView()

+ 14 - 21
src/Muzich/UserBundle/Form/Type/RegistrationFormType.php 查看文件

@@ -2,34 +2,27 @@
2 2
 
3 3
 namespace Muzich\UserBundle\Form\Type;
4 4
 
5
+use Symfony\Component\Form\AbstractType;
5 6
 use Symfony\Component\Form\FormBuilderInterface;
6
-use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
7
+use Symfony\Component\OptionsResolver\OptionsResolverInterface;
7 8
 
8
-class RegistrationFormType extends BaseType
9
+class RegistrationFormType  extends AbstractType
9 10
 {
10 11
   public function buildForm(FormBuilderInterface $builder, array $options)
11 12
   {
12
-    parent::buildForm($builder, $options);
13
-
14
-    $builder->add('token', 'text', array(
15
-      //"property_path" => false UPGRADE 2.1
16
-      'mapped' => false,
17
-    ));
18
-    
19
-    $builder->add('cgu_accepted', 'checkbox', array(
20
-      'required'  => true
21
-    ));
22
-
23
-    $builder->add('mail_newsletter', 'checkbox', array(
24
-      'required'  => false
13
+    $builder->add('email', 'email', array(
14
+      'label' => 'form.email',
15
+      'translation_domain' => 'FOSUserBundle'
25 16
     ));
26
-
27
-    $builder->add('mail_partner', 'checkbox', array(
28
-      'required'  => false
29
-    ));
30
-    
31 17
   }
32
-
18
+  
19
+  //public function setDefaultOptions(OptionsResolverInterface $resolver)
20
+  //{
21
+  //  $resolver->setDefaults(array(
22
+  //    'data_class' => 'Muzich\CoreBundle\Entity\User'
23
+  //  ));
24
+  //}
25
+  
33 26
   public function getName()
34 27
   {
35 28
     return 'muzich_user_registration';

+ 0 - 46
src/Muzich/UserBundle/Resources/views/Registration/register_form_content.html.twig 查看文件

@@ -15,57 +15,11 @@
15 15
 {% endif %}
16 16
 
17 17
 <div class="field">
18
-  {{ form_errors(form.username) }}
19
-  {{ form_label(form.username, 'username'|trans({}, 'userform')) }}
20
-  {{ form_widget(form.username, {'attr':{'class':'niceinput'}}) }}
21
-</div>   
22
-    
23
-<div class="field">
24 18
   {{ form_errors(form.email) }}
25 19
   {{ form_label(form.email, 'email'|trans({}, 'userform')) }}
26 20
   {{ form_widget(form.email, {'attr':{'class':'niceinput'}}) }}
27 21
 </div> 
28 22
 
29
-<div class="field">
30
-  {{ form_errors(form.plainPassword.first) }}
31
-  {{ form_label(form.plainPassword.first, 'password.first'|trans({}, 'userform')) }}
32
-  {{ form_widget(form.plainPassword.first, {'attr':{'class':'niceinput'}}) }}
33
-</div> 
34
-
35
-<div class="field">
36
-  {{ form_errors(form.plainPassword.second) }}
37
-  {{ form_label(form.plainPassword.second, 'password.second'|trans({}, 'userform')) }}
38
-  {{ form_widget(form.plainPassword.second, {'attr':{'class':'niceinput'}}) }}
39
-</div> 
40
-
41
-<span class="help">{{ 'help.token'|trans({}, 'userform') }}</span>
42
-
43
-<div class="field">
44
-  {{ form_errors(form.token) }}
45
-  {{ form_label(form.token, 'token'|trans({}, 'userform')) }}
46
-  {{ form_widget(form.token, {'attr':{'class':'niceinput'}}) }}
47
-</div>
48
-
49
-<div class="field">
50
-  {{ form_errors(form.cgu_accepted) }}
51
-  {{ form_widget(form.cgu_accepted, {'attr':{}}) }}
52
-  {% autoescape false %}
53
-  {{ 'cgu_accepted'|trans({'%url%':path('info_cgu')}, 'userform') }}
54
-  {% endautoescape %}
55
-</div>
56
-
57
-<div class="field">
58
-  {{ form_errors(form.mail_newsletter) }}
59
-  {{ form_widget(form.mail_newsletter, {'attr':{}}) }}
60
-  {{ 'mail_newsletter'|trans({}, 'userform') }}
61
-</div>
62
-
63
-<div class="field">
64
-  {{ form_errors(form.mail_partner) }}
65
-  {{ form_widget(form.mail_partner, {'attr':{}}) }}
66
-  {{ 'mail_partner'|trans({}, 'userform') }}
67
-</div> 
68
-
69 23
 {{ form_rest(form) }}
70 24
 
71 25
 <div class="alignright">

+ 74 - 0
src/Muzich/UserBundle/Resources/views/Registration/register_form_content_old.html.twig 查看文件

@@ -0,0 +1,74 @@
1
+{% if registration_errors_pers is not defined %}
2
+  {% set registration_errors_pers = null %}
3
+{% endif %}
4
+
5
+{% form_theme form 'MuzichCoreBundle:Form:errors.html.twig' %}
6
+
7
+{{ form_errors(form) }}
8
+
9
+{% if registration_errors_pers|length > 0 %}
10
+<ul class="error_list">
11
+  {% for error in registration_errors_pers %}
12
+    <li>{{ error }}</li>
13
+  {% endfor %}
14
+</ul>
15
+{% endif %}
16
+
17
+<div class="field">
18
+  {{ form_errors(form.username) }}
19
+  {{ form_label(form.username, 'username'|trans({}, 'userform')) }}
20
+  {{ form_widget(form.username, {'attr':{'class':'niceinput'}}) }}
21
+</div>   
22
+    
23
+<div class="field">
24
+  {{ form_errors(form.email) }}
25
+  {{ form_label(form.email, 'email'|trans({}, 'userform')) }}
26
+  {{ form_widget(form.email, {'attr':{'class':'niceinput'}}) }}
27
+</div> 
28
+
29
+<div class="field">
30
+  {{ form_errors(form.plainPassword.first) }}
31
+  {{ form_label(form.plainPassword.first, 'password.first'|trans({}, 'userform')) }}
32
+  {{ form_widget(form.plainPassword.first, {'attr':{'class':'niceinput'}}) }}
33
+</div> 
34
+
35
+<div class="field">
36
+  {{ form_errors(form.plainPassword.second) }}
37
+  {{ form_label(form.plainPassword.second, 'password.second'|trans({}, 'userform')) }}
38
+  {{ form_widget(form.plainPassword.second, {'attr':{'class':'niceinput'}}) }}
39
+</div> 
40
+
41
+<span class="help">{{ 'help.token'|trans({}, 'userform') }}</span>
42
+
43
+<div class="field">
44
+  {{ form_errors(form.token) }}
45
+  {{ form_label(form.token, 'token'|trans({}, 'userform')) }}
46
+  {{ form_widget(form.token, {'attr':{'class':'niceinput'}}) }}
47
+</div>
48
+
49
+<div class="field">
50
+  {{ form_errors(form.cgu_accepted) }}
51
+  {{ form_widget(form.cgu_accepted, {'attr':{}}) }}
52
+  {% autoescape false %}
53
+  {{ 'cgu_accepted'|trans({'%url%':path('info_cgu')}, 'userform') }}
54
+  {% endautoescape %}
55
+</div>
56
+
57
+<div class="field">
58
+  {{ form_errors(form.mail_newsletter) }}
59
+  {{ form_widget(form.mail_newsletter, {'attr':{}}) }}
60
+  {{ 'mail_newsletter'|trans({}, 'userform') }}
61
+</div>
62
+
63
+<div class="field">
64
+  {{ form_errors(form.mail_partner) }}
65
+  {{ form_widget(form.mail_partner, {'attr':{}}) }}
66
+  {{ 'mail_partner'|trans({}, 'userform') }}
67
+</div> 
68
+
69
+{{ form_rest(form) }}
70
+
71
+<div class="alignright">
72
+  <img class="loader" style="display: none;" src="{{ asset('/bundles/muzichcore/img/ajax-loader.gif') }}" alt="loading" />
73
+  <input type="submit" class="button" value="{{ 'registration.submit'|trans({}, 'userui') }}" />
74
+</div>