Tank Auth - получение информации о пользователе из базы данных - PullRequest
2 голосов
/ 02 марта 2012

Я создал функцию, которая выводит пользовательские данные из базы данных:

function user()
{
    $user_id = $this->ci->session->userdata('user_id');

    if (!is_null($user = $this->ci->users->get_user_by_id($user_id, TRUE))) {
        return $this->ci->users->get_user($user_id); //model
    }
    return FALSE;
}

Я использую это так в любом контроллере:

$this->tank_auth->user()->field.

Это не удобно для меня, так что мне нужно сделать, чтобы получить такие данные пользователя?

$this->user->field или $this->tank_auth->user->field.

Мой второй вопрос, касающийсявышеупомянутая функция - это функция:

function is_admin()
{
    if ( $this->user()->who )
    {
        return $this->user()->who === "ADMIN";
    }
    return FALSE;
}

Она выдает ошибку:

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: libraries/Tank_auth.php

Line Number: 335

(строка 335 - if ( $this->user()->who )).

Почему это происходит?Обе функции находятся в библиотеке tank_auth, поэтому она должна работать нормально, но это не так.

Буду признателен за любую попытку помощи.

1 Ответ

0 голосов
/ 09 декабря 2013

Если вы добавите этот метод в модель users.php:

function get_user_profile_by_id($user_id){
    $this->db->where('user_id', $user_id);

    $query = $this->db->get($this->profile_table_name);
    if ($query->num_rows() == 1) return $query->row();
    return NULL;
}

, вы можете, например, добавить поле userclass поля varchar в таблицу userprofile и проверить, принадлежит ли пользователь определенному классу с помощью:

$profile = $this->users->get_user_profile_by_id($this->tank_auth->get_user_id());
if ($profile->userclass = "ADMIN") {
...
}

Надеюсь, это поможет.

...