OSDN Git Service

システム運用者のアクセス制御画面追加。
authornaoki hirata <naoki@magic3.org>
Mon, 6 Aug 2018 02:50:13 +0000 (11:50 +0900)
committernaoki hirata <naoki@magic3.org>
Mon, 6 Aug 2018 02:50:13 +0000 (11:50 +0900)
include/manager/envManager.php
widgets/admin_main/include/container/admin_mainBaseWidgetContainer.php
widgets/admin_main/include/container/admin_mainTaskaccessWidgetContainer.php [new file with mode: 0644]
widgets/admin_main/include/container/admin_mainWidgetContainer.php
widgets/admin_main/include/template/taskaccess.tmpl.html [new file with mode: 0644]

index b466e0e..04fb5f6 100644 (file)
@@ -2062,6 +2062,25 @@ class EnvManager extends Core
                return $isAdmin;
        }
        /**
+        * 現在アクセス中のユーザにシステム運用者かどうかを返す
+        *
+        * @param string $optionType    ユーザオプションタイプ
+        * @return bool                                 true=システム運用者、false=システム運用者ではない
+        */
+       public function isSystemManager(&$optionType)
+       {
+               $isManager = false;
+               $userInfo = $this->getCurrentUserInfo();
+               if (is_null($userInfo)){                // ログインしていない場合
+               } else {
+                       if ($userInfo->userType == UserInfo::USER_TYPE_MANAGER){        // システム運用者の場合
+                               $optionType = $userInfo->optionType;
+                               $isManager = true;
+                       }
+               }
+               return $isManager;
+       }
+       /**
         * 現在アクセス中のユーザにシステム運用権限があるかどうかを返す
         *
         * @return bool         true=システム運用可、false=システム運用不可
index cdac334..28071ca 100644 (file)
@@ -36,6 +36,7 @@ class admin_mainBaseWidgetContainer extends BaseAdminWidgetContainer
        const TASK_DB_ACCESSLOG         = 'dbaccesslog';                        // DB管理アクセスログ
        const TASK_LANDINGPAGE                  = 'landingpage';                        // ランディングページ管理
        const TASK_LANDINGPAGE_DETAIL   = 'landingpage_detail';         // ランディングページ管理(詳細)
+       const TASK_TASKACCESS                           = 'taskaccess';                                         // 管理画面アクセス制御
        const TASK_TEST                                         = 'test';                                               // テスト画面
        
        /**
diff --git a/widgets/admin_main/include/container/admin_mainTaskaccessWidgetContainer.php b/widgets/admin_main/include/container/admin_mainTaskaccessWidgetContainer.php
new file mode 100644 (file)
index 0000000..f42dd35
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/**
+ * コンテナクラス
+ *
+ * PHP versions 5
+ *
+ * LICENSE: This source file is licensed under the terms of the GNU General Public License.
+ *
+ * @package    Magic3 Framework
+ * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
+ * @copyright  Copyright 2006-2018 Magic3 Project.
+ * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+ * @version    SVN: $Id$
+ * @link       http://www.magic3.org
+ */
+require_once($gEnvManager->getCurrentWidgetContainerPath() . '/admin_mainBaseWidgetContainer.php');
+
+class admin_mainTaskaccessWidgetContainer extends admin_mainBaseWidgetContainer
+{
+       /**
+        * コンストラクタ
+        */
+       function __construct()
+       {
+               // 親クラスを呼び出す
+               parent::__construct();
+       }
+       /**
+        * テンプレートファイルを設定
+        *
+        * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
+        * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
+        *
+        * @param RequestManager $request               HTTPリクエスト処理クラス
+        * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
+        * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
+        */
+       function _setTemplate($request, &$param)
+       {
+               return 'taskaccess.tmpl.html';
+       }
+       /**
+        * テンプレートにデータ埋め込む
+        *
+        * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
+        *
+        * @param RequestManager $request               HTTPリクエスト処理クラス
+        * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
+        * @param                                                               なし
+        */
+       function _assign($request, &$param)
+       {
+               // 管理用URL設定
+               $this->tmpl->addVar("_widget", "admin_url", $this->gEnv->getDefaultAdminUrl());
+       }
+}
+?>
index 2061978..7c9f1c4 100644 (file)
@@ -21,6 +21,8 @@ class admin_mainWidgetContainer extends admin_mainBaseWidgetContainer
        private $redirectUrl;           // リダイレクト先URL
        private $content;                       // メッセージ用コンテンツ
        private $permitTask;            // 実行許可タスク
+       private $permitTask_manager;            // 実行許可タスク(システム運用者用)
+       private $permitTask_page_manager;               // 実行許可タスク(ページ運用者用)
        const CF_USE_CONTENT_MAINTENANCE = 'use_content_maintenance';           // メンテナンス画面に汎用コンテンツを使用するかどうか
        const CF_USE_CONTENT_ACCESS_DENY = 'use_content_access_deny';           // アクセス不可画面に汎用コンテンツを使用するかどうか
        const CF_USE_CONTENT_PAGE_NOT_FOUND = 'use_content_page_not_found';             // 存在しないページ画面に汎用コンテンツを使用するかどうか
@@ -34,7 +36,11 @@ class admin_mainWidgetContainer extends admin_mainBaseWidgetContainer
                // 親クラスを呼び出す
                parent::__construct();
                
-               $this->permitTask = array('test', 'initwizard');                // 実行許可タスク
+               // 実行許可タスク
+               $this->permitTask = array('test', 'initwizard');
+               $this->permitTask_page_manager = array('top');;         // 実行許可タスク(ページ運用者用)
+               // システム運用者用の実行許可タスクは設定から読み込む
+               $this->permitTask_manager = array('top');;              // 実行許可タスク(システム運用者用)
        }
        /**
         * ディスパッチ処理(メインコンテナのみ実行)
@@ -151,8 +157,13 @@ class admin_mainWidgetContainer extends admin_mainBaseWidgetContainer
                                // #############################################################################################
                                // ##### 管理画面ダッシュボードへのアクセス制御はここで行う                                #####
                                // #############################################################################################
-//                             if ($this->gEnv->isSystemAdmin()){      // システム管理者の場合
-                               if ($this->gEnv->isSystemManageUser()){ // システム運用可能の場合(2018/8/5変更)
+                               // システム管理者か、システム運用者でアクセス可能なタスクかどうかをチェック
+                               $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
+                               if (empty($task)) $task = 'top';                // トップメニュー
+
+                               if ($this->gEnv->isSystemAdmin() || 
+                                       ($this->gEnv->isSystemManageUser() && in_array($task, $this->permitTask_manager))){     // システム運用可能の場合(2018/8/5変更)
+
                                        // ##### ポップアップメッセージ表示状態を取得 #####
                                        $popupStatus = intval($this->getWidgetSession(self::SK_SHOW_POPUP_STATUS));
                                        if (empty($popupStatus)){                       // 1度もメッセージが表示されていない場合
@@ -165,9 +176,8 @@ class admin_mainWidgetContainer extends admin_mainBaseWidgetContainer
                                        }
                                
                                        // 表示画面を決定
-                                       $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
                                        $taskSrc = $task;
-                                       if (empty($task) || $task == 'menuhelp'){       // デフォルト値
+                                       if ($task == 'menuhelp'){       // デフォルト値
                                                $task = 'top';          // トップメニュー
 //                                     } else if ($task == 'menu'){            // マスター管理
 //                                             $task = 'pageinfo';                     // ページ情報をデフォルトにする
@@ -302,6 +312,7 @@ class admin_mainWidgetContainer extends admin_mainBaseWidgetContainer
                                                case 'tenantserver':                    // テナントサーバ管理
                                                case 'analyzecalc':             // アクセス解析集計
                                                case 'analyzegraph':            // アクセス解析グラフ表示
+                                               case self::TASK_TASKACCESS:                     // 管理画面アクセス制御
                                                
                                                // 管理画面の設定用
                                                case 'menu':                    // 管理画面設定メニュー
diff --git a/widgets/admin_main/include/template/taskaccess.tmpl.html b/widgets/admin_main/include/template/taskaccess.tmpl.html
new file mode 100644 (file)
index 0000000..9445fdc
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * 表示データ作成用テンプレート(patTemplate)
+ *
+ * LICENSE: This source file is licensed under the terms of the GNU General Public License.
+ *
+ * @package    Magic3 Framework
+ * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
+ * @copyright  Copyright 2006-2018 Magic3 Project.
+ * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+ * @version    SVN: $Id$
+ * @link       http://www.magic3.org
+ */
+<patTemplate:tmpl name="_widget">
+<script type="text/javascript">
+//<![CDATA[
+function update(){
+       if (!window.confirm('設定を更新しますか?')) return false;
+       
+       document.main.act.value = 'update';
+       document.main.submit();
+       return true;
+}
+$(function(){
+       // テーブル作成
+       m3SetConfigTable('config_table');
+});
+//]]>
+</script>
+<div class="m3config_container">
+<!-- m3:ErrorMessage -->
+<form method="post" name="main">
+<input type="hidden" name="task" value="taskaccess" />
+<input type="hidden" name="act" />
+<h3><span {_HELP_TASKACCESS}>システム運用者アクセス制御</span></h3>
+<table id="config_table">
+    <tbody>
+    <tr>
+           <th>使用可能タスク</th>
+           <td>
+<patTemplate:tmpl name="content_type_list">
+<div class="checkbox"><label><input type="checkbox" name="item{INDEX}_selected" {CHECKED}>{NAME}</label></div>
+</patTemplate:tmpl>
+               </td>
+       </tr>
+    </tbody>
+</table>
+<div class="well m3config_update_buttons"><input type="button" class="button" onclick="update();" value="更新" /></div>
+</form>
+</div>
+</patTemplate:tmpl>