If you have a _setPassword() function in your entity, that function will be 
called before validating the data. That means that the length of the 
password will be much larger than the original passed password. In those 
cases it is better to not validate using the table, but create a validator 
in the controller and validate the data that way.

On Wednesday, November 12, 2014 12:27:22 PM UTC+1, cesar calvo wrote:
>
> The login form is very similar to that used in the blog tutorial. 
> I can see that there is no link to the LOGIN form with associated model.
> ADD and EDIT actions perform validation over username but not over 
> password field.
> With "ignore" I mean that the model validation rules do not apply. 
>
> public function login() {
>         if ($this->request->is('post')) {
>             $user = $this->Auth->identify();
>             if ($user) {
>                 $this->Auth->setUser($user);
>                 return $this->redirect($this->Auth->redirectUrl());
>             }
>             $this->Flash->error(__('Invalid username or password.'));
>         }
>     }
>
> public function add() {
>         $user = $this->Users->newEntity($this->request->data);
>         if ($this->request->is('post')) {
>             if ($this->Users->save($user)) {
>                 //mail connection...
>                 $this->Flash->success(__('A message has been sent to your 
> email address.'));
>                 return $this->redirect(['action' => 'login']);
>             }
>             $this->Flash->error(__('Unable to save your data.'));
>         }
>         $this->set(compact('user'));
>     }
>
> public function edit() {
>         $user = $this->Users->get($this->Auth->user('id'));
>         if ($this->request->is(['post', 'put'])) {
>             $this->Users->patchEntity($user, ['password' => 
> $this->request->data('password')]);
>             if ($this->Users->save($user)) {
>                 $this->Flash->success(__('Your data has been updated.'));
>                 return $this->redirect(['action' => 'index']);
>             }
>             $this->Flash->error(__('Unable to update your data.'));
>         }
>         $this->set(compact('user'));
>     }
>
> //login.ctp
> <?=
>     $this->Form->create(),
>     $this->Form->input('username', ['label' => __('Username'), 'required' 
> => true, 'placeholder' => __('E-mail address'),]),
>     $this->Form->input('password', ['label' => __('Password'), 'required' 
> => true, 'value' => false]),
>     $this->Form->button(__('Submit')),
>     $this->Form->end()
> ?>
>
> //add.ctp
> <?=
>     $this->Form->create($user),
>     $this->Form->input('username', ['label' => __('Username'), 
> 'placeholder' => __('E-mail address')]),
>     $this->Form->input('password', ['label' => __('Password'), 'value' => 
> false]),
>     $this->Form->button(__('Submit')),
>     $this->Form->end()
> ?>
>
> //edit.ctp
> <?=
>     $this->Form->create($user),
>     $this->Form->input('username', ['label' => __('Username'), 'disabled' 
> => true]),
>     $this->Form->input('password', ['label' => __('Password'), 'value' => 
> false]),
>     $this->Form->button(__('Submit')),
>     $this->Form->end();
> ?>
>
> El miércoles, 12 de noviembre de 2014 07:30:41 UTC-2, José Lorenzo 
> escribió:
>>
>> What do you mean with "the validator ignores?" What is the data that you 
>> are trying to validate and what is the result?
>>
>> On Tuesday, November 11, 2014 5:03:19 PM UTC+1, cesar calvo wrote:
>>>
>>> Hi people, I have this validation rules in UsersTable.
>>> The validator ignores the ->add(password, lenght) sentence.
>>> The issue is when I try to create or update a record.
>>>
>>> Best regards --cesar
>>>
>>> public function validationDefault(Validator $validator) {
>>>         return $validator
>>>             ->validatePresence('username', 'create')
>>>             ->notEmpty('username', __('This field is required.'))
>>>             ->add('username', [
>>>                 'valid' => [
>>>                     'rule' => 'email', 
>>>                     'message' => __('This field requires a valid email 
>>> address.')
>>>                 ],
>>>                 'unique' => [
>>>                     'rule' => 'validateUnique', 
>>>                     'provider' => 'table', 
>>>                     'message' => __('This field must be unique.')
>>>                 ]
>>>             ])
>>>             ->validatePresence('password', 'create')
>>>             ->notEmpty('password', __('This field is required.'))
>>>             ->add('password', [
>>>                 'length' => [
>>>                     'rule' => ['minLength', 8],
>>>                     'message' => __('Password must be at least {0} 
>>> characters long.', 8),
>>>                 ]
>>>             ])
>>>         ;
>>>     }
>>>
>>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to