Monday, May 13, 2013

Re: odd results from auth redirect

Should the AuthComponent properties and options be declared in the targeted controller (UsersController in my case) or the AppController?
Or should it make no difference?
I have Auth configured in my AppController and the settings _seem_ to be ignored no matter how I alter them.

Also, I notice that the beforeSave function in the User model was defined differently in the ACL tutorial and Auth tutorial.
Which one is the prefered method?

Thanx again, McS

Server Software Apache/2.2.22 (Win32) PHP/5.4.14
CAKE_VERSION     2.3.4

    public function beforeSave($options = array()) { // from acl tutorial
        $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);
        return true;
    } // end beforeSave($options = array()) from acl tutorial

    public function beforeSave($options = array()) { // from auth tutorial
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
            return true;
    } // end beforeSave($options = array()) from auth tutorial


On Wednesday, May 8, 2013 12:27:14 PM UTC-4, McScreech wrote:

Been following the acl and auth tutorials and appear to be near working except for AuthComponent loginRedirect and logoutRedirect properties. Very bare-bones setup as listed below.

Watching the DebugKit.Toolbar output I note the following:
1) on the users/login page Session > Auth > redirect is /pages/home, no user defined
2) form accepts username and password provided and redirects to /pages/home, Session > Auth > user and activeUser are defined correctly
3) also clicking the users/logout link on that page redirects to /users/login page with same conditions as 1)

But I expected my setup below to assign the loginRedirect to /lots/index and logoutRedirect to /pages/home? What did I miss?

MTIA, McS

Server Software Apache/2.2.22 (Win32) PHP/5.4.14
CAKE_VERSION     2.3.4

<?php
Controller/AppController.php:
    public $components = array('DebugKit.Toolbar', 'Session', 'Acl',
        'Auth' => array(
            'authorize'            => array('Actions' => array('actionPath' => 'controllers'),
                                         'Controller' => array('actionPath' => 'controllers')),
            'loginAction'        => array('controller' => 'users', 'action' => 'login'),
            'loginRedirect'        => array('controller' => 'lots', 'action' => 'index'),
            'logoutRedirect'    => array('controller' => 'pages', 'action' => 'home')
        )
    );

    public $helpers = array('Html', 'Form', 'Session');

    public function beforeFilter() {
        // Configure AuthComponent
        $this->Auth->allow('login', 'logout', 'display', 'search');

        // Remember user who is logged in,
        $this->set('activeUser', $this->Auth->user());
    } // end beforeFilter()

Controller/UsersController.php:
    public function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash('Your username or password was incorrect.');
            }
        }
    } // end login()

    public function logout() {
        $this->Session->setFlash('Good-Bye');
        $this->redirect($this->Auth->logout());  // from auth tutorial
    } // end logout()

/View/Users/login.ctp:
    <div class="users form">
        <?php echo $this->Form->create('User', array('action' => 'login')); ?>
        <fieldset>
            <legend>Login</legend>
            <?php
                echo $this->Form->input('username', array( 'style' => 'width: 15em; padding: 2px;' ));
                echo $this->Form->input('password', array( 'style' => 'width: 15em; padding: 2px;' ));
            ?>
        </fieldset>
        <?php
            echo $this->Form->submit('Login');
            echo $this->Form->end();
        ?>
    </div> <!-- class="users form" -->

--
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: