7

私は codeigniter アプリケーションに Ion Auth を使用していますが、1 つのことを除いてすべて問題ないようです。

ユーザーのリストとそのユーザーのグループを表示する必要があります。独自のモデルを作成してクエリを実行せずに、特定のユーザーのグループ ID を取得するにはどうすればよいですか。

$this->ion_auth->user($id)->row();グループ ID を取得しません。

4

5 に答える 5

9

Ion Auth は、最新バージョンのget_user関数を更新して削除しました。この結果、以下はログインしているユーザーの現在のグループ ID を返す必要があります。

$this->ion_auth->get_users_groups()->row()->id

特定のユーザーのグループ ID を取得したい場合は、ユーザー ID をget_users_groupsメソッドに渡すことができます。

于 2012-05-24T11:34:28.010 に答える
4

オブジェクトを取得します。

$user_groups = $this->ion_auth->get_users_groups($user->id)->result();

グループの名前を取得します。

$this->ion_auth->get_users_groups($data['id'])->row()->name;

私の場合:

$data['groups'] = $this->ion_auth->get_users_groups($data['id'])->row()

ユーザーグループの取得に関する公式ドキュメントを確認できます。

http://benedmunds.com/ion_auth/#get_users_groups

于 2012-07-03T11:25:54.423 に答える
3

ログインに成功したときにユーザーのgroup_idをセッションに追加したかったので、これに遭遇しました。誰かが興味を持っている場合のために、これが私がそれをした方法です(私がすべてがどこで行われていたかを理解することができたら)。

ion_auth_model.phpで、set_session関数を使用しました。

    public function set_session($user)
{

    $this->trigger_events('pre_set_session');

    $session_data = array(
        'identity'             => $user->{$this->identity_column},
        'username'             => $user->username,
        'email'                => $user->email,
        'user_id'              => $user->id, //everyone likes to overwrite id so we'll use user_id
        'old_last_login'       => $user->last_login
    );

    $this->session->set_userdata($session_data);

    $this->trigger_events('post_set_session');

    return TRUE;
}

そしてそれをこれに変更しました:

    public function set_session($user)
{

    $this->trigger_events('pre_set_session');

    $session_data = array(
        'identity'             => $user->{$this->identity_column},
        'username'             => $user->username,
        'email'                => $user->email,
        'user_id'              => $user->id, //everyone likes to overwrite id so we'll use user_id
        'old_last_login'       => $user->last_login
    );

    //get user group ids for user and pass to session
    $groups = $this->ion_auth->get_users_groups($user->id)->result();

    foreach ($groups as $row){
        $session_data['groups'][] = $row->id;
    }

    $this->session->set_userdata($session_data);

    $this->trigger_events('post_set_session');

    return TRUE;
}

これで、ユーザーが属するすべてのグループのリストである、groupsというセッションに配列が書き込まれます。

私がしなければならなかった他の唯一のことは、Ion_auth.php(アプリケーション/ライブラリ内)のログアウト関数を変更して、追加することによってグループセッション変数が設定されていないことを確認することでした

$this->session->unset_userdata('groups');

他のunset_userdata()ステートメントのリストに追加します。

コアをそのままにしておくためにライブラリ/モデルを拡張する必要があったと思いますが、私が行ったことを簡単に実行できます。

これが誰かに役立つことを願っています。

ロブ

于 2013-03-06T16:36:36.163 に答える
0

これをion_auth_model.phpに追加してみてください(またはクエリを別の場所に配置してください)

/**
 * get_all_users_with_group
 *
 * @return array
 **/
public function get_all_users_with_group()
{
    $this->trigger_events('get_all_users_with_groups');

    return $this->db->select(
        $this->tables['users'].'.*, '.
        $this->tables['users_groups'].'.'.$this->join['groups'].' as group_id, '.
        $this->tables['groups'].'.name as group_name, '.
        $this->tables['groups'].'.description as group_desc'
        )
    ->join($this->tables['users_groups'], $this->tables['users_groups'].'.'.$this->join['users'].'='.$this->tables['users'].'.id')
    ->join($this->tables['groups'], $this->tables['users_groups'].'.'.$this->join['groups'].'='.$this->tables['groups'].'.id')
    ->get($this->tables['users']);
}
于 2012-06-08T12:31:23.510 に答える
0

コントローラーで使用します。

$groups = array(1,2,3,4);
            $this->data['list_staff'] = $this->ion_auth->users($groups)->result(); // выбираем всех teachers из зарегистрированных пользователей
            foreach ($this->data['list_staff'] as $k => $one_staff)
            {
                $this->data['list_staff'][$k]->groups = $this->ion_auth->get_users_groups($one_staff->id)->result();
            } 

およびビューでの使用:

<?php foreach($list_staff as $one):?> 
    <?php foreach ($one->groups as $group):?>
                                    <?php echo $group->description;?>,
                                <?php endforeach?> 
<?endforeach;?> 

しかし、現在ログインしているユーザーのグループを取得するためのクエリはどうですか (たとえば、私のプロファイルで)、次の決定を見つけます。コントローラー: $this->data['this_user_groups'] = $this->ion_auth->get_users_groups()->result(); およびビューのみ:

<?php foreach ($this_user_groups as $group):?>
                                <?php echo $group->description;?>,
                            <?php endforeach?>
于 2012-06-13T18:18:38.320 に答える