Return to Snippet

Revision: 26901
at May 15, 2010 02:04 by sevennbsp


Initial Code
<?php
class UsersController extends AppController {
    var $name = 'Users';

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

    function index() {
        $users = $this->User->find('all');
        if (empty($users)) {
            $this->Session->setFlash('There are no users defined', 'default', array('class'=>'bad'));
        } else {
            $this->set('users', $users);
        }
    }

    function view($id) {
        $user = $this->User->findById($id);
        if (!empty($user)) {
            $this->set('user', $user);
        } else {
            $this->Session->setFlash('Invalid User ID', 'default', array('class'=>'bad'));
            $this->redirect('index');
        }
    }

    function add() {
        if (!empty($this->data)) {
            $this->User->set($this->data);
            if ($this->User->validates()) {
                $this->data['User']['password'] = $this->data['User']['clear_password'];
                $this->User->save($this->Auth->hashPasswords($this->data), false);
                $this->Session->setFlash($this->data['User']['name'].' Added', 'default', array('class'=>'good'));
                $this->redirect('index');
            } else {
                $this->Session->setFlash('Please correct the errors below', 'default', array('class'=>'bad'));
            }
        }
    }

    function edit($id = null) {
        if (!empty($this->data)) {
            foreach ($this->data['User'] as $field => $data) {
                if (!in_array($field, array('clear_password', 'confirm_password'))) {
                    $fields[] = $field;
                }
            }
            if (!empty($this->data['User']['clear_password']) || !empty($this->data['User']['confirm_password'])) {
                $fields[] = 'password';
                $fields[] = 'clear_password';
                $fields[] = 'confirm_password';
            }
            $this->User->set($this->data);
            if ($this->User->validates()) {
                if (!empty($this->data['User']['clear_password'])) {
                    $this->data['User']['password'] = $this->data['User']['confirm_password'];
                }
                $this->User->save($this->Auth->hashPasswords($this->data), false, $fields);
                $this->Session->setFlash($this->data['User']['name'].' Updated', 'default', array('class'=>'good'));
                $this->redirect('index');
            }
        } else {
            $user = $this->User->findById($id);
            if (empty($user)) {
                $this->Session->setFlash('Invalid User ID', 'default', array('class'=>'bad'));
                $this->redirect('index');
            } else {
                unset($user['User']['password']);
                $this->data = $user;
            }
        }
    }

    function delete($id) {
        $user = $this->User->findById($id);
        if (empty($user)) {
            $this->Session->setFlash('Invalid User ID', 'default', array('class'=>'bad'));
        } else {
            if ($user['User']['id'] == $this->Session->read('Auth.User.id')) {
                $this->Session->setFlash('Sorry, you can not delete yourself', 'default', array('class'=>'bad'));
            } else {
                if ($this->User->del($id)) {
                    $this->Session->setFlash($user['User']['name'].' Deleted', 'default', array('class'=>'good'));
                } else {
                    $this->Session->setFlash('Failed to delete '.$user['User']['name'], 'default', array('class'=>'bad'));
                }
            }
        }
        $this->redirect('index');
    }

    function login() {
        // Auth Magic
    }

    function logout() {
        $this->Session->del('Auth.User');
        $this->Session->setFlash('You are now logged out', 'default', array('class'=>'good'));
        $this->redirect('login');
    }
}
?>

Initial URL
http://www.jbcrawford.net/archives/45

Initial Description
this is all the actions needed for auth and the users login/register system

Initial Title
users_controller auth

Initial Tags
login, cakephp

Initial Language
PHP