2015年5月20日水曜日

ECCUBE メンバーによって管理画面のアクセスを制限する。

EC-CUBE 2.12にてログインするメンバーによって管理画面のアクセスを制限したいという事になった。
例)Aさんに商品管理だけアクセス出来るようにしたい。

早速ググってみると、システム設定>マスターデータ管理>mtb_authorityでメンバーを追加し、admin_contents.cssにて非表示にするというもの。
でも直接/admin/...を叩くとアクセス出来てしまうという。。。

mtb_permissionを使うとページ毎にアクセスできるメンバーを制限できるというのを発見。

システム設定>マスターデータ管理>mtb_authorityにて
店舗スタッフ ID:2を作成

システム設定>マスターデータ管理>mtb_permissionにアクセス。
基本情報管理にはアクセスできなくていいので、
ID:/admin/basis/index.php 値:1を設定
IDにアクセスできるか否か設定したページを入力し、値には店舗スタッフ以上の権限のあるメンバーがアクセス出来るように今回は1を設定(数字が小さい方が偉い)。
なので、メンバーのIDが0と1の人はアクセス可能で、2以上の人はアクセス出来ないよということ。

商品管理以外も設定しこれでOKかとおもいきや。

基本情報管理>特定商取引法へアクセス出来る。。。URLは下記。
/admin/basis/tradelaw.php
基本情報管理>配送方法設定もアクセス出来る。。。
/admin/basis/delivery.php

どうやら全てのファイルを指定する必要があるらしい。。。
どんだけのファイルをちまちま管理画面から設定する必要があるんだ。。。

なので、フォルダ以下の全てのファイルをアクセス出来ないように設定。
システム設定>マスターデータ管理>mtb_permissionで設定したやつを変更。
/admin/basis/index.php

/admin/basis/
basis以下のファイルが全て対象となるように。

data/class/SC_Session.phpを開く
70行目あたり
$admin_path = preg_replace('/\/+/', '/', $_SERVER['SCRIPT_NAME']);
を下記に変更
$admin_path = preg_replace('!/[^/]*$!', '/', $_SERVER['SCRIPT_NAME']);
ファイルの指定からフォルダの指定へ変更してます。

これでめでたく
/admin/basis/以下のファイルは全てアクセス不可になりました。

他のページも同様にシステム設定>マスターデータ管理>mtb_permissionで指定してOK。

0 コメント:

コメントを投稿