■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい

n1215 > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/20 21:56
funi 様

ページネ―ションの都合もあるので、テンプレートだけで処理するのは無駄が多いです。

コントローラでビュー変数の$viewDblogsに設定されている配列をあらかじめフィルタリングするのが良いでしょう。

1. lib/Baser/Controller/DashboardController.phpをapp/Controller/DashboardController.phpにコピー
2. 下記2つのメソッドを上書きし、それら2つから共通で利用する1つのメソッドを追加
※ユーザーグループ名の設定は適宜調整してください。

/**
 * [ADMIN] 管理者ダッシュボードページにajaxでデータを取得する
 *
 * @return void
 * @access public
 */
	public function admin_ajax_dblog_index() {
		$default = array('named' => array('num' => $this->siteConfigs['admin_list_num']));
		$this->setViewConditions('Dblog', array('default' => $default, 'action' => 'admin_index'));
		$this->set('viewDblogs', $this->getAllowedDblogs());
	}

/**
 * [ADMIN] 管理者ダッシュボードページを表示する
 *
 * @return void
 * @access public
 */
	public function admin_index() {
		$this->pageTitle = '管理者ダッシュボード';
		$default = array('named' => array('num' => $this->siteConfigs['admin_list_num']));
		$this->setViewConditions('Dblog', array('default' => $default));
		$this->set('viewDblogs', $this->getAllowedDblogs());
		$publishedPages = $this->Page->find('count', array('conditions' => array('Page.status' => true)));
		$unpublishedPages = $this->Page->find('count', array('conditions' => array('Page.status' => false)));
		$totalPages = $publishedPages + $unpublishedPages;
		$this->set(compact('publishedPages', 'unpublishedPages', 'totalPages'));
		$this->help = 'dashboard_index';
	}

/**
 * ユーザーグループに応じて閲覧が許される最近の動きを取得
 *
 * @return array
 */
	protected function getAllowedDblogs() {
		//ユーザグループ同士の閲覧権限を設定
		$allowedGroups = array(
			'admins' => array('admins', 'operators', 'editors', 'users'),
			'operators' => array('operators', 'editors', 'users'),
			'editors' => array('editors', 'users'),
			'users' => array('users')
		);

		//ログインしているユーザのグループ名を取得
		$user = $this->BcAuth->user();
		$groupName = ($user['UserGroup']['name']);
		$this->paginate = array(
			'fields' => '*',
			'conditions' => array('UserGroup.name' => $allowedGroups[$groupName]),
			'joins' => array(
				array(
					'table' => 'user_groups',
					'alias' => 'UserGroup',
					'conditions' => 'UserGroup.id = User.user_group_id',
				)
			),
			'order' => array('Dblog.created '=> 'DESC', 'Dblog.id' => 'DESC'),
			'limit' => $this->passedArgs['num']
		);

		return $this->paginate('Dblog');
	}

Twitter: @n_1215

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
13 人のユーザが現在オンラインです。 (13 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13