Monday, May 20, 2013

Re: Bug in edit user

$this->request->data['User']['id'] = $this->Auth->user('id');   

You are assigning the administrator's id to the record. Unless your administrator is trying to edit its own record, this is not what you want.


On Fri, May 17, 2013 at 2:23 PM, Guilherme Magno <routmagno@gmail.com> wrote:
Hello people,
I'm having a big problem on the editing a User,
I use the following code:

 class UsersController extends AppController {

    public function beforeFilter() {
       parent::beforeFilter();
    }

...........


public function edit($id = null) {
       $this->request->data['User']['id'] = $this->Auth->user('id'); 
       if (!( $this->User->exists($id) ) || !( $id == $this->Auth->user('id') )) {
          $this->Session->setFlash(__('Invalid user'));
          $this->redirect('index');
       }
       if ($this->request->is('post') || $this->request->is('put')) {
            
/*           if ($this->request->data['User']['is_banned'] == true) {
            $this->Session->setFlash(__('Conta permanentemente banida, para reculperá-la mande um e-mail para a adminstração.'), 'default', array('class' => 'success'));
            $this->redirect(array('controller' => 'users', 'action' => 'logout', 'admin' => false));
            } */
          if ($this->User->save($this->request->data)) {
             $this->Session->setFlash(__('Salvo com sucesso.'), 'default', array('class' => 'success'));
             //$this->redirect(array('action' => 'index'));
          } else {
             $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
          }
       } else {
          
          $options = array('conditions' => array('User.' . $this->User->primaryKey => $id));
          $this->request->data = $this->User->find('first', $options);
       }
    }
}
VIEW 
<div class="users form">
<?php echo $this->Form->create('User'); ?>
<fieldset>
<legend><?php echo __('Editar Usuário'); ?></legend>
<?php
echo $this->Form->input('username');
echo $this->Form->input('password', array(
                         'value' => ''
          ));
echo $this->Form->input('is_banned', array(
                         'label' => __('Desabilitar permanentemente')
          ));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>

 

and this error I get the following error
AclNode :: node () - Could not find Aro node problem identified by "Array ([Aro0.model] => User [Aro0.foreign_key] => 1)"

I am logged in as administrator, I have the following in permições allowedActions:
  (int) 1 => 'index',  	(int) 2 => 'add',  	(int) 3 => 'login',  	(int) 4 => 'view',  	(int) 5 => 'logout',  	(int) 6 => 'edit',  	(int) 7 => 'admin_delete',  	(int) 8 => 'admin_logout',  	(int) 9 => 'admin_login',  	(int) 10 => 'admin_index',

I do not know the cause of this error, however I know that if I remove this line:
$this->request->data['User']['id'] = $this->Auth->user('id');   

the error no longer occurs



helppp mee plzz

--
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+unsubscribe@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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
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+unsubscribe@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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments: