【下書き】 concrete5 権限・承認ワークフロー攻略ガイド

concrete5 トリック集

concrete5 は、1ライセンス数百〜数千万するエンタープライズ向け CMS に引けをとらないほどの権限設定が可能です。大企業でも使われている権限の設定は、奥が深く、一歩間違えばドツボにはまってしまいます。

そのため、権限を設定する上で、気を使えなければいけないことを完全保存版としてまとめました。

【お断り】簡単なものを書いて公開しようと思ったら、結構分量が多くなってきて時間がかかりそうだったので、中途半端な状態かもしれないので「下書き」として公開しました。各自、自己責任で使ってください。一部のセクションで書きかけの場合があります。

初稿: 2016/5/1
更新: 2016/5/5

見積もり編 & 企画設計

権限設定の工数計算の目安

  • 基本
    • 「管理者」グループ以外のユーザーやグループに編集権限を与えたい場合、めちゃくちゃ面倒くさいので、最低、1人日分の時間の予算をとったほうが良い。
    • 設定の工数: 10ページタイプまで、3グループ/人日 (ゲスト、管理者、編集者) が目安。その後は、追加パターン x 追加ページタイプ数/5 x 1時間
  • 追加
    • 承認ワークフロー設定: 最低限の設定や説明で 1フロー / 0.5人日
    • ファイルマネジャーの権限をグループごとに別にしたい場合: 追加で 1フロー/0.5時間
    • ファイルマネジャーの権限をファイルセットごとに別にしたい場合: 追加で 1フロー/0.5時間
    • サイトマップの権限をグループごとに別にしたい場合: 追加で フロー数 x (ページ数/100) x 0.5 = 時間が目安。
  • ドキュメントや操作支援
    • 仕様ドキュメントの整備: 設定人日 x 0.3 が目安。
    • マニュアル作成: [通常のマニュアル作成時間] + [マニュアル作成時間] x (パターン x 0.3) が目安。
      • 複雑であれば、権限グループ別にマニュアルを用意しないと操作者が混乱する。操作マニュアルを見出しごとにページ分割し、マニュアルを分割しやすくする。権限者に応じて分けやすくする。ということで、その分の工数を見積もる。マニュアルのパターンにもいろいろあるので、その時の条件で時間を想定して考えるしか無いかも。
    • 操作講習をするのであれば、全員いっしょにするのではなく、権限グループ個別でレクチャーをしたほうが良い。じゃないとメニューが変わってくるので、受講者が混乱する。権限パターン x 2~3時間。

アドバイス

  • ファイルのスケジュール公開機能は、実装されていないが、concrete5 のファイルマネージャーは、乱数のフォルダ3階層の中にファイルが格納される (例: /application/files/1111/1111/1111/file.jpg ) ため、ユーザーの推測は不可能。事実上、ページを公開して、ファイルの物理URLが公開されないかぎり、判別不可能なので、ページ公開のタイミングをきちんと行うという運用フローで対応してもらう。
  • ワークフローを設定すると、つまらないミスや修正をした場合でも上司の承認が必要になるので、導入をする際は、上司の人とのコミュニケーションが大切。結局、ワークフローを使わないほうが良いという場合も。
  • 権限設定は、サイト運営者、設定作業者ともにすごく負担がかかる部分なので、パターン数が多くなると、より複雑で時間がかかるということを必ず説明する。正直、シンプルな権限が一番!

設定編

はじめに

  • グループの作成は、concrete5 サイト制作の一番最初に行う!
  • グループを登録する
    • 「管理者 (Administrators)」は、もろもろ編集の設定が事前にしてあるので楽。
    • 表示だけのグループを追加するときはちょっと楽
    • 編集できるグループを追加するときは大変。
  • ユーザーを登録する
    • 登録した時に、グループを割り当てる。
    • ユーザー個別の権限を付与するのは考えないほうが良い。

おすすめの権限設定手順

  • サンプルコンテンツ無しの空白サイトから始める
  • 上級権限モードを使う場合、この時点で [管理画面] – [システムと設定] – [タスクと権限] – [上級権限モード] を有効化する
  • [管理画面] – [メンバー] – [ユーザーグループ] で設計したグループを追加する。
  • [管理画面] – [メンバー] – [ユーザーグループ] でグループの権限を追加する。
  • [管理画面] – [システムと設定] – [権限とアクセス]- [タスク権限] の [サイトマップへアクセス] を許可するユーザーを設定する。
  • その他のタスク権限の許可グループも設定する。
  • [管理画面] – [システムと設定] – [権限とアクセス] – [ファイルマネージャー権限] のファイルマネージャーから[ファイルを検索]など様々な許可するするグループを追加する。
  • ファイルセットごとに権限を付ける場合はそのファイルセットを追加し、ファイルセットのカスタム権限を加える。
  • 承認フローを使用する場合は、承認フローの作成を [管理画面] – [ワークフロー] – [ワークフロー一覧] より行う。
  • [ホーム] の権限の [サブページ権限] を [ページタイプのデフォルトの権限設定を継承する] を選ぶ
  • [管理画面] – [ページとテーマ] – [ページタイプ] より、ページタイプを作成する (テーマやテーマテンプレート、カスタムテンプレート作成などの説明は割愛)
  • [管理画面] – [ページとテーマ] – [ページタイプ] – [権限] にてデフォルトの権限を設定する。承認フローの設定も忘れずに。
    • また、後日、新規でページタイプを作成する際、既存のページタイプをコピーしたとしても権限がコピーされない (5.7.5.6 時点) ので、新規作成した時は、権限の設定を必ず見直すこと。
  • [管理画面] – [サイトマップ] で [サイトマップにシステムページを含める] をチェックする。
  • [管理画面] ページ閲覧を許可するグループを設定する。編集権限を与えたユーザーが一般的に表示権限を許可すべきページは下記の通り
    • [管理画面] – [サイトマップ] – [*]
    • [管理画面] – [ファイル] – [ファイルマネージャー]
    • [管理画面] – [ファイル] – [ファイルファイルセット] (*権限の変更もできるので注意)
    • [管理画面] – [メンバー] – [ファイルファイルセット] (*権限の変更もできるので注意)
  • [管理画面] – [スタックとブロック] – [ブロックとスタック権限] より、ブロック・スタックを追加できるグループを指定する。(この前に、カスタムブロックやパッケージの追加を終えておく)

各セクションの権限設定で気をつけるポイント

ページタイプ

  • ページタイプの権限設定は、concrete5 インストール、グループ作成のあと、ページタイプ作成の際に必ずする。つまり権限の設定はこの時点で終えていること。
  • [管理画面] – [ページとテーマ] – [ページタイプ] – [権限] にてデフォルトの権限を設定する。

サイトマップ

  • [管理画面] – [システムと設定] – [権限とアクセス]- [タスク権限] の サイトマップへアクセスを許可する
  • [管理画面] – [フルサイトマップ] で [システムページを表示] をオンにして、[管理画面] – [サイトマップ]への表示権限を許可する。訪問できる管理画面ページを限定させたい場合、「手動」設定をたくさんしなくてはいけないので注意。
  • [管理画面] – [下書き] の権限設定で追加・表示できるユーザーを確認する

ページ権限

  • グループ個別の詳細設定をする場合、ページタイプが多い場合は、サイトマップで行わずに、ページタイプ中心で行ったほうが良い。
  • どの権限を設定しているかわからなくなる。する場合は、必ず、手動権限設定先ページ一覧などのリストを管理しておいたほうが良い。

早見リスト

  • グループ個別の詳細設定ができる権限
    • プロパティを編集
    • テーマを変更
    • サブページを追加
  • ワークフローを設定できる権限
    • 権限を編集
    • 削除
    • バージョンを削除
    • 変更を承認
    • ページの移動またはコピー

ワークフロー

  • 承認フローは、現在、ページのみに実装されている。ファイルやユーザーには実装されていない。
  • 注意事項
    • ワークフローを主に使っているユーザーは日本人。
    • 見えないバグが潜んでいる可能性あり。
    • ワークフローを使っているユーザーは少ないので、バグを発見したら、必ず日本語フォーラムに報告してください。
    • 5.7.5.6 既知のバグ (2017/5/1 時点の最新バージョンは 5.7.5.7)
      • ワークフローを1個以上設定していると
        • ワークフロー一覧で、id=1 の admin ユーザー以外でエラーが出る
    • 「フルサイトマップ」で、サイトマップ上での並び替え自身もワークフローとして送りたい場合は、サイトマップでの操作をすぐに許可する config 設定を /application/config/concrete.php で指定し、対象ページの「ページの移動またはコピー」権限のワークフローを設定する必要がある。
  • アドバイス
    • ワークフローを設定すると、つまらないミスや修正をした場合でも上司の承認が必要になるので、導入をする際は、上司の人とのコミュニケーションが大切。結局、ワークフローを使わないほうが良いという場合も。
    • 多段階認証アドオンは、数千万円するエンタープライズ向け、CMS に対抗する機能として作成されたアドオンなので、それなりの値段がします。
    • 多段階ワークフロー導入ではなく、編集者には「変更を承認」権限を与えず、最初の申請は責任者が行い、上長が承認ワークフローを許可するという方法も可能。
    • また複数の基本承認フローを有効化すると、2回承認が必要になるので、その方法でも可能。(ただ、concrete5.7.5.6 、2016年1月の時点でバグあり)

ファイルマネージャー

  • [管理画面] – [システムと設定] – [ファイル] – [ファイルマネージャー権限] のファイルマネージャーから[ファイルを検索]など様々な許可するするグループを追加する。
    • グループ個別でアップロードできるファイルの拡張子を限定できる
    • ファイルマネージャーから検索できるファイルをファイルセットの権限と併用したら、グループごとに限定できる。ただし運用上、かならずファイルをアップロードしたらファイルセットに追加してもらうというフローを確立する必要がある。
    • [ファイルアップローダー] の理解をして、うまく使いこなせるようにする。
    • ファイルセットの権限は、[管理画面] – [ファイル] – [ファイルセット] より個別のファイルセットの権限設定が可能。
    • 「ファイルを追加」権限は、ファイルを追加できるグループ全員を追加する。他の権限を「ファイルアップローダ」にすることによって、自分がアップロードしたファイルだけがファイルマネージャーで検索できるようになる。ファイルセットの権限を上書き設定することで、権限をアレンジすることが可能。
  • フルサイトマップでシステムページを表示をオンにして、管理画面 – ファイルマネージャー各ページへの表示権限を「手動」にして許可する

グループ検索の権限

  • 表示権限のスケジュール設定をして、ページの期間限定公開を行いたい場合、グループの検索権限が必要。
  • 手順: [管理画面] – [権限とアクセス] – [ユーザー権限] に訪問
  • [グループ検索へのアクセス] に権限設定ができるユーザーを追加する。

グループの権限

  • 管理画面 – メンバー – ユーザー検索 で管理者以外のユーザーは真っ白になる。これはグループの閲覧編集権限が与えられていないから。
  • 管理画面 – メンバー – グループ より、グループの権限を設定する。

シングルページ (管理画面のページ) 関連について

  • 基本的に「表示」権限しか有効でない
  • 編集とかの権限設定は無視される。プログラム側で調整が必要。
  • 管理者・編集者向けの管理画面系ページの、権限設定の一部は下記で行える。
    • 管理画面 – システムと設定 – 権限とアクセス – タスク権限
    • 管理画面 – システムと設定 – 権限とアクセス – ユーザー権限
    • 管理画面 – システムと設定 – ファイル – ファイルマネージャー権限

 

プログラム編

使えるプログラム TIPS

グループに所属しているか判別

<?php
use User;
use Group;

$u = new User(); // ログイン中のユーザーを取得
$group = Group::getByName('Administrators'); // 管理者グループを $group に代入。'Administrator' の部分を希望のグループ名に変える。日本語でグループ名を登録していたら、日本語を入れる。(ちなみに翻訳インターフェースを使って英語で名前をつけて日本語で翻訳することも可能。)
$inGroup = $u->inGroup($group); // 管理者グループにユーザーが所属していたら、True を返す。
if ($u->isRegstered() && $inGroup)
{
    // ログインして、ユーザーがそのグループに所属していたら、ここが実行される
}
?>

グループに入れる処理

<?php
use User;
use Group;

$u = new User(); // ログイン中であれば、自分のユーザー情報。
$group = Group::getByName('Administrators'); // 管理者グループを $group に代入。
if (!$u->inGroup($group)) // ユーザーが、$group に代入されたグループにまだ所属していなかったら
{
    $u->enterGroup($group); // グループに所属させる。
}
?>

フォームの結果を見ることができるユーザーを限定する

  • シングルページを /application/ 以下に controller & single_page View のファイルを複製。URL を追加できるようにする。
  • controller は extends してリソースを減らす。
  • フォーム一覧を表示せず、すぐにフォームの結果ページを表示するようにカスタマイズ。controller をオーバーライドして qsid を $_GET[‘qsid’]に代入してやると良いかも。
  • 作成したいフォームの数だけ、シングルページを複製する。
  • 作成したシングルページに表示権限設定を行う。