Indeed I have _setPassword in the Entity.
protected function _setPassword($password) {
if (!empty($password)) {
return (new DefaultPasswordHasher)->hash($password);
}
return $password;
}
El miércoles, 12 de noviembre de 2014 09:56:57 UTC-2, José Lorenzo escribió:
>
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.