Skip to content

Commit cee23db

Browse files
authored
Merge pull request nerdapplabs#14 from aksinha-nerdapplabs/fix_broken
Sign in/Sign up fixed. A few refactoring done.
2 parents fe6ec12 + 7818d03 commit cee23db

File tree

7 files changed

+85
-31
lines changed

7 files changed

+85
-31
lines changed

src/ApiBundle/Controller/Admin/UserController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@ public function indexAction()
4848
*/
4949
public function newAction(Request $request)
5050
{
51-
$user = new User();
51+
$userManager = $this->container->get('fos_user.user_manager');
52+
$user = $userManager->createUser();
5253
$user->setRoles(['ROLE_USER', 'ROLE_API']);
54+
5355
$form = $this->createForm(UserType::class, $user);
56+
5457
$locale = $request->getLocale();
5558

5659
$form->handleRequest($request);
5760

5861
if ($form->isSubmitted() && $form->isValid()) {
59-
$userManager = $this->container->get('fos_user.user_manager');
60-
$user = $userManager->createUser();
61-
6262
$this->setUserData($user, $form);
6363

6464
$userManager->updateUser($user);
@@ -163,7 +163,7 @@ private function setUserData(User $user, \Symfony\Component\Form\Form $form)
163163
$user->setDob($form['dob']->getData());
164164
$user->setEmail($form['email']->getData());
165165
$user->setUsername($form['username']->getData());
166-
$user->setPlainPassword($form['password']->getData());
166+
$user->setPlainPassword($form['plainPassword']->getData());
167167
$user->setRoles($form['roles']->getData());
168168
$user->setConfirmationToken(null);
169169
$user->setEnabled(true);

src/ApiBundle/Controller/AuthController.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ public function postRegisterAction()
232232
$request = $this->container->get('request');
233233
$userManager = $this->get('fos_user.user_manager');
234234

235+
// TODO: Why this validation is not working in Validation.yml for dob
236+
$timestamp = strtotime($request->request->get('dob'));
237+
if (!$timestamp) {
238+
$this->logAndThrowError(400, 'Date of Birth should be in MM/DD/YYYY format.', $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $request->getLocale()), $request->getLocale());
239+
}
240+
235241
$user = $userManager->createUser();
236242

237243
$user->setUsername($request->request->get('username'));
@@ -245,7 +251,7 @@ public function postRegisterAction()
245251

246252
// Validate user data
247253
$validator = $this->get('validator');
248-
$errors = $validator->validate($user);
254+
$errors = $validator->validate($user, null, array('Registration', 'profile_edit'));
249255

250256
if (count($errors) > 0) {
251257
return $this->reportValidationErrors($errors, $request->getLocale());
@@ -341,9 +347,17 @@ public function editPasswordAction()
341347
}
342348

343349
$user->setPlainPassword($password);
344-
$msg = 'Password changed successfully';
350+
351+
// Validate user data
352+
$validator = $this->get('validator');
353+
$errors = $validator->validate($user, null, array('profile_edit_password'));
354+
355+
if (count($errors) > 0) {
356+
return $this->reportValidationErrors($errors, $request->getLocale());
357+
}
345358

346359
$userManager->updateUser($user);
360+
$msg = 'Password changed successfully';
347361

348362
$this->logMessage(200, $msg.' for '.$user->getUsername());
349363

@@ -436,6 +450,12 @@ public function editProfileAction()
436450
$dob = array_key_exists('dob', $data) ? $data['dob'] : $user->getDob();
437451
$user->setDob($dob);
438452

453+
// TODO: Why this validation is not working in Validation.yml for dob
454+
$timestamp = strtotime($dob);
455+
if ($dob && !$timestamp) {
456+
$this->logAndThrowError(400, 'Date of Birth should be in MM/DD/YYYY format.', $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $request->getLocale()), $request->getLocale());
457+
}
458+
439459
// Validate user data
440460
$validator = $this->get('validator');
441461
$errors = $validator->validate($user, null, array('profile_edit'));

src/ApiBundle/Form/UserType.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
2828
->add('email', EmailType::class)
2929
->add('dob', DateType::class, array('widget' => 'single_text', 'format' => 'M/d/y'))
3030
->add('username', TextType::class)
31-
->add('password', PasswordType::class, array('data' => ''))
31+
->add('plainPassword', PasswordType::class, array('data' => ''))
3232
->add('roles', CollectionType::class, array(
3333
'entry_type' => ChoiceType::class,
3434
'entry_options' => array(
@@ -48,7 +48,8 @@ public function configureOptions(OptionsResolver $resolver)
4848
{
4949
$resolver->setDefaults(array(
5050
'data_class' => 'ApiBundle\Entity\User',
51-
'csrf_protection' => true
51+
'csrf_protection' => true,
52+
'validation_groups' => array('Registration', 'profile_edit')
5253
));
5354
}
5455

src/ApiBundle/Resources/config/config.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ fos_rest:
4141

4242
fos_user:
4343
db_driver: orm
44-
firewall_name: main # Seems to be used when registering user/reseting password,
45-
# but since there is no "login", as so it seems to be useless in
46-
# our particular context, but still required by "FOSUserBundle"
44+
firewall_name: main
4745
user_class: ApiBundle\Entity\User
4846

4947
fos_oauth_server:

src/ApiBundle/Resources/config/validation.yml

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,69 @@ ApiBundle\Entity\User:
1818
message: "user.show_error_firstname"
1919
payload:
2020
api_error: 'api.show_error_firstname'
21+
dob:
22+
- Date:
23+
groups: [profile_edit]
24+
message: "user.show_error_dob"
25+
payload:
26+
api_error: 'api.show_error_dob'
2127
username:
22-
- Regex:
23-
pattern: '/^[a-z0-9_-]{3,16}$/'
24-
match: true
28+
- NotBlank:
29+
groups: [Registration, Profile]
2530
message: "user.show_error_username_policy"
2631
payload:
2732
api_error: 'api.show_error_username_policy'
28-
password:
2933
- Regex:
30-
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
34+
groups: [Registration, Profile]
35+
pattern: '/^[a-z0-9_-]{3,16}$/'
3136
match: true
32-
message: "user.show_error_password_policy"
37+
message: "user.show_error_username_policy"
3338
payload:
34-
api_error: 'api.show_error_password_policy'
39+
api_error: 'api.show_error_username_policy'
3540
email:
36-
- Email:
41+
- NotBlank:
42+
groups: [Registration, Profile]
3743
message: "user.show_error_email"
44+
payload:
45+
api_error: 'api.show_error_email'
46+
- Email:
47+
groups: [Registration, Profile]
3848
checkMX: false
49+
message: "user.show_error_email"
3950
payload:
4051
api_error: 'api.show_error_email'
41-
dob:
42-
- Date:
43-
groups: [profile_edit]
44-
message: "user.show_error_dob"
52+
plainPassword:
53+
- NotBlank:
54+
groups: [profile_edit_password, Registration]
55+
message: "user.show_error_password_policy"
4556
payload:
46-
api_error: 'api.show_error_dob'
57+
api_error: 'api.show_error_password_policy'
58+
- Regex:
59+
groups: [profile_edit_password, Registration, Profile]
60+
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
61+
match: true
62+
message: "user.show_error_password_policy"
63+
payload:
64+
api_error: 'api.show_error_password_policy'
4765
roles:
4866
- Choice:
67+
groups: [profile_roles]
4968
choices: ['ROLE_USER', 'ROLE_API']
5069
multiple: true
5170
message: "user.show_error_role"
5271
payload:
5372
api_error: 'api.show_error_role'
73+
74+
FOS\UserBundle\Form\Model\ChangePassword:
75+
properties:
76+
new:
77+
- NotBlank:
78+
message: "user.show_error_password_policy"
79+
payload:
80+
api_error: 'api.show_error_password_policy'
81+
- Regex:
82+
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
83+
match: true
84+
message: "user.show_error_password_policy"
85+
payload:
86+
api_error: 'api.show_error_password_policy'

src/ApiBundle/Resources/views/admin/user/edit.html.twig

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<h1>{{ 'title.edit_user'|trans({'%id%': user.id}) }}</h1>
77

88
{{ form_start(edit_form, { attr: attr|default({}) }) }}
9+
{{ form_errors(edit_form) }}
910
<table class="table">
1011
<tbody>
1112
<tr>
@@ -33,21 +34,21 @@
3334
<th scope="row">{{ 'label.user_email'|trans }}</th>
3435
<td>
3536
{{ form_errors(edit_form.email) }}
36-
{{ form_widget(edit_form.email) }}
37+
{{ form_widget(edit_form.email, { 'attr':{'readonly':'readonly'} }) }}
3738
</td>
3839
</tr>
3940
<tr>
4041
<th scope="row">{{ 'label.user_username'|trans }}</th>
4142
<td>
4243
{{ form_errors(edit_form.username) }}
43-
{{ form_widget(edit_form.username) }}
44+
{{ form_widget(edit_form.username, { 'attr':{'readonly':'readonly'} }) }}
4445
</td>
4546
</tr>
4647
<tr>
4748
<th scope="row">{{ 'label.user_password'|trans }}</th>
4849
<td>
49-
{{ form_errors(edit_form.password) }}
50-
{{ form_widget(edit_form.password) }}
50+
{{ form_errors(edit_form.plainPassword) }}
51+
{{ form_widget(edit_form.plainPassword) }}
5152
</td>
5253
</tr>
5354
<tr>

src/ApiBundle/Resources/views/admin/user/new.html.twig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<h1>{{ 'title.user_new'|trans }}</h1>
77

88
{{ form_start(form, { attr: attr|default({}) }) }}
9+
{{ form_errors(form) }}
910
<table class="table">
1011
<tbody>
1112
<tr>
@@ -46,8 +47,8 @@
4647
<tr>
4748
<th scope="row">{{ 'label.user_password'|trans }}</th>
4849
<td>
49-
{{ form_errors(form.password) }}
50-
{{ form_widget(form.password) }}
50+
{{ form_errors(form.plainPassword) }}
51+
{{ form_widget(form.plainPassword) }}
5152
</td>
5253
</tr>
5354
<tr>

0 commit comments

Comments
 (0)