Я пишу проверку администратора, чтобы убедиться, что адрес электронной почты, который входит в область администрирования:
- Пользователь администратора
- Активен
До сих пор я написал следующий код:
Контроллер:
$this->form_validation->set_rules('userName','userName', 'required|trim|max_length[99]|callback_admin_check|xss_clean');
function _admin_check($adminUsername, $adminEmail)
{
if($this->users_model->admin_check($adminUsername) || $this->users_model->admin_check($adminEmail))
{
$this->form_validation->set_message('admin_check', 'Sorry you have an %s error!');
return FALSE;
}else{
return TRUE;
}
Что меня смущает, так это то, что я хотел бы, чтобы он принял обаимя администратора или адрес электронной почты, если userGroup == admin
или если учетная запись userActive == yes
, но я не уверен, как мне построить модель или какие данные отправить в модель.
Обновление-> Джо:
Джо,
Просто пара вопросов:
- Я все еще устанавливаю свои сообщения об ошибках валидации, где оно
return false
? - Могу ли я в любом случае проверить, является ли учетная запись учетной записью администратора и активна ?
- Модель в порядке?
Контроллер:
function _admin_check($adminUsername = null, $adminEmail = null)
{
$adminUser = $this->user_model->admin_check($adminUsername,$adminEmail);
//if the UN || PW are not correct
if(! $adminUser)
{
$this->session->set_flashdata('login_error', TRUE); // Does not bother adding incorrect data into the session for the Admin Login
$this->form_validation->set_message('admin_check', 'Sorry you have a %s error!');
return FALSE;
}else{
//Set the session data
$this->session->set_userdata('logged_in', TRUE);
$this->session->set_userdata('userId',$adminUser->id);
$this->session->set_userdata('userFirstName',$adminUser->userFirstName);
$this->session->set_userdata('userLastName',$adminUser->userLastName);
$this->session->set_userdata('userEmail',$adminUser->userEmail);
$this->session->set_userdata('userGroup',$adminUser->userGroup);
$this->session->set_userdata('userActive',$adminUser->userActive);
return TRUE;
}
Модель:
function admin_check($adminUsername, $adminEmail)
{
if(is_null($adminUsername && is_null($adminEmail)))
{
return FALSE;
}
if(is_null($adminUsername))
{
$login_field = 'userEmail';
$login_name = '$adminEmail';
}else{
$login_field = 'userName';
$login_name = '$adminUsername'
}
$this->db->select($login_field,$login_name);
$this->db->from('users');
$this->db->where('userName', $adminUsername , 'userEmail' , $adminEmail );
$query = $this->db-get();
if($query->num_rows() > 0)
{
return TRUE;
}else{
return FALSE;
}
}