特定のページを表示する権限を持たないユーザーをブロックする方法を探しているだけです。codeigniterコアフォルダー内のバックエンドコントローラー内に関数をまとめて、すべてのバックエンドコントローラーに拡張させてみました。この関数をすべてのコントローラーの内部に配置するという DRY 原則を維持するために、関数を内部に配置したかったのです。
関数を書くための別の方法や、関数で何をすべきかについての別のアイデアを探しています。
public function view_allowed($user_data)
{
if ($user_data->role_id != 4)
{
return false;
}
return true;
}
これにより、他のコントローラーのコンストラクト内で関数を呼び出し、それが false を返す場合は、そのページを表示するための適切なクレジットがないことを示す他のページに直接移動する if ステートメントを実行します。
ご質問、コメント、懸念事項はありますか?
編集2:
これが何をするかを考えているので、編集しなければなりませんでした。これの目的は、通常のユーザーが表示できず、管理者のみが表示できる各コントローラー構成で関数を実行することです。したがって、次のようにすると、ユーザーがそのページを表示できない場合に別のページにリダイレクトすることをどのように知ることができますか。
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Recent_activities extends Backend_Controller
{
/**
* Load the parent construct and any additional models, helper, libraries available.
* @return void
*/
public function __construct()
{
parent::__construct();
$view_allowed = view_allowed($user_data);
}
public function index()
{
$this->breadcrumb->add_crumb('<li><a href="' . site_url() .
'control-panel/activities/recent-activities">Activities</a></li>');
$this->breadcrumb->add_crumb('Recent Activites');
$activities = $this->user->get_all();
$this->template
->title('Recent Activites')
->build('recent_activities_view');
}
}