Assembla home | Assembla project page
 

Changeset 219

Show
Ignore:
Timestamp:
02/27/09 21:35:34 (1 year ago)
Author:
aprice30
Message:

Updated the is_user() method so if sess_use_database is set to FALSE then it will query the database to check the user is real. Closes #80

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/modules/auth/libraries/Auth_form_processing.php

    r218 r219  
    142142 
    143143                // See if a user exists with the given credentials 
    144                 $query = $this->CI->user_model->validateLogin($values['login_field'],$values['password']); 
    145                 if ( $query->num_rows() == 1
     144                $result = $this->CI->user_model->validateLogin($values['login_field'],$values['password']); 
     145                if ( $result['valid']
    146146                { 
    147147                        // We we have a valid user 
    148                         $user = $query->row(); 
     148                        $user = $result['query']->row(); 
    149149 
    150150                        // Check if the users account hasn't been activated yet 
  • trunk/modules/auth/libraries/Userlib.php

    r203 r219  
    6767 
    6868                                // Check its valid 
    69                                 $query = $this->CI->user_model->validateLogin($autologin['login_field'],$autologin['password']); 
    70                                 if($query->num_rows() == 1
     69                                $result = $this->CI->user_model->validateLogin($autologin['login_field'],$autologin['password']); 
     70                                if($result['valid']
    7171                                { 
    7272                                        // Log user in 
     
    9494                if($CI->session) 
    9595                { 
    96                         $email = $CI->session->userdata('email'); 
    97                         $group = $CI->session->userdata('group'); 
    98  
    99                         if ($email !== FALSE && $group !== FALSE) 
     96                        $logedin = FALSE; 
     97 
     98                        // If the system is setup to store details in the database 
     99                        // only do a quick check since the user can't tamper with the values 
     100                        if(config_item('sess_use_database') === TRUE) 
     101                        { 
     102                                $email = $CI->session->userdata('email'); 
     103                                $username = $CI->session->userdata('username'); 
     104 
     105                                $loggedin = ($email !== FALSE && $username !== FALSE); 
     106 
     107                        } 
     108                        else 
     109                        { 
     110                                // Query the database to verify the details are correct 
     111                                switch($CI->preference->item('login_field')) 
     112                                { 
     113                                        case 'email': 
     114                                                $check = $CI->session->userdata('email'); 
     115                                                break; 
     116 
     117                                        default: 
     118                                                $check = $CI->session->userdata('username'); 
     119                                } 
     120                                $result = $CI->user_model->validateLogin($check,$CI->session->userdata('password')); 
     121                                $loggedin = $result['valid']; 
     122                        } 
     123 
     124                        if ($loggedin) 
    100125                        { 
    101126                                // Logged in 
  • trunk/modules/auth/models/user_model.php

    r203 r219  
    4646         * @param string $login_field Email/Username 
    4747         * @param string $password Users password 
    48          * @return Query 
     48         * @return array('valid'=>bool,'query'=>Query) 
    4949         */ 
    5050        function validateLogin($login_field, $password) 
    5151        { 
     52                if( !$password OR !$login_field) 
     53                { 
     54                        // If there is no password 
     55                        return array('valid'=>FALSE,'query'=>NULL); 
     56                } 
     57 
    5258                switch($this->preference->item('login_field')) 
    5359                { 
     
    6874                $this->db->where('password',$password); 
    6975 
    70                 return $this->fetch('Users','id,active'); 
     76                $query = $this->fetch('Users','id,active'); 
     77                $found = ($query->num_rows() == 1); 
     78                return array('valid'=>$found,'query'=>$query); 
    7179        } 
    7280 
     
    142150                } 
    143151 
    144                 $this->db->select('users.id, users.username, users.email, users.active, users.last_visit, users.created, users.modified, groups.name `group`, groups.id group_id'.$profile_columns); 
     152                $this->db->select('users.id, users.username, users.email, users.password, users.active, users.last_visit, users.created, users.modified, groups.name `group`, groups.id group_id'.$profile_columns); 
    145153                $this->db->from($this->_TABLES['Users'] . " users"); 
    146154                $this->db->join($this->_TABLES['UserProfiles'] . " profiles",'users.id=profiles.user_id'); 
  • trunk/user_guide/general/changelog.html

    r218 r219  
    6363<h3>Modifications</h3> 
    6464<ul> 
     65        <li>Improved the <dfn>is_user()</dfn> method so if <dfn>$config['sess_use_database']</dfn> is <var>FALSE</var> then extra user checks are performed. For this to work the value returned by validateLogin() has changed, See <a href="http://trac2.assembla.com/backendpro/ticket/80">Enhancement #80</a></li> 
    6566        <li>Removed PHP short tags from files, See <a href="http://trac2.assembla.com/backendpro/ticket/42">Task #42</a></li> 
    6667        <li>Added some extra language strings for the dropdown options inside <var>application/controllers/admin/settings.php</var>, See <a href="http://trac2.assembla.com/backendpro/ticket/73">Enhancement #73</a></li>