ユーザー権限の実装についての提案

こんな機能をつけて欲しい、こんなマニュアル(又はサンプル)が欲しい、CMSDのサイトにこの説明が欲しい、などなど、今後のご要望についてなんなりとお寄せください。
すぐに対応できるとは限りませんが、極力検討させて頂きます。
返信
akays
記事: 2
登録日時: 2007年4月05日(木) 09:02
お住まい: 兵庫県
連絡を取る:

ユーザー権限の実装についての提案

投稿記事 by akays » 2007年4月05日(木) 09:57

いつもお世話になってます。

過去にも何度か話題になっているユーザー権限についてですが、
XoopsやWiki、モールといったもののような多人数管理を前提にせず、
デザイナーがクライアントにサイト管理を任せることが出来るという
CMS Designer本来の良さを活かすのに有効かと思われる
シンプルな方法を思いついたので提案させて頂きます♪

当社で扱ってる案件などでは、クライアントに上書きされたくないものに
管理画面上で(特定の項目やコンテンツのタイトル説明部分) 操作不可 などと
注意書きを行っています。
CMS Designer上でSEO対策などを継続的にサポートしているための処置なのですが、
今のところトラブルは起こっていません。

で、逆の発想で、
お客様が自身のサイトに不利益が生じるような行為を進んでされるわけはないと思いますので、
間違って記事を削除しない程度の配慮で十分ではないかと思います。

書き込み時などに厳密な権限チェックをするのではなく、
単純に管理画面上に表示されなければいいという視点から考えて見たのですが、
「サイト更新者には管理画面に表示しないコンテンツをsite.config.xml内で指定する」というのはいかがでしょう?

記事毎に指定するとなると複雑化すると思いますし、
サイト更新者の使用するコンテンツとシステム管理者の使用するコンテンツを分ければいいだけですから設置も難しくないと思います。

もし本格的なユーザー権限実装までの対策としてでも可能であれば、ご検討くださいませ。^^

※長い上に、改行が見難くてすいません(^^;)
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
「Like A Honey Project」
CMS Designer + Schema + CSS + etc
http://like-a-honey.com/

webmaster
Site Admin
記事: 1447
登録日時: 2004年12月10日(金) 10:09

Re: ユーザー権限の実装についての提案

投稿記事 by webmaster » 2007年4月06日(金) 16:00

 akaysさん、ご要望ありがとうございます。

 これはとてもよいアイデアだと思います!
 まさに逆転の発想だと思います。おそらく、うまく機能すると思います。

 ただ、諸所の事情から、編集権限については現在非常に慎重になっており、
単純に適用可能かどうか充分に検討したいと思います。

 一番恐れているのは、将来もう少ししっかりした権限機能を追加しようと
いう時に、この仕様が足かせになったり、混乱を招いたりする可能性に
ついてです。

 このアイデアにつきましては今後の参考として活用させて頂こうと思います。
 素晴らしいご意見、ありがとうございました。m(__)m

mijukumono
記事: 6
登録日時: 2007年11月06日(火) 15:13

投稿記事 by mijukumono » 2007年12月11日(火) 13:16

webmasterは諸所の事情はあるが本件が実装可能だと解答されています。
CMS Designerの予め実装するカタチではなく、単独でカスタマイズする方法を
教えていただく事はできますか?

現在クライアントからの要望に対応可能かどうか、ローカル環境で実装テストを
行っているのですが、本件のような処理を求められています。

webmaster
Site Admin
記事: 1447
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年12月13日(木) 16:39

 mijukumonoさん、ご要望ありがとうございます。
 権限関係につきましては長らくお待たせしており(他にもたくさんお待たせ
しているのですが・・・)、申し訳なく思っております。

 本体のカスタマイズにつきましては基本的に回答をお断りさせて頂いているのですが、
 今回はさほど難しくない改造であると思われる点と、長くお待たせしており
申し訳ないという点から、回答させて頂きたいと思います。m(__)m

 本体カスタマイズの回答を避けているのは、それが公式に認められた方法だと
受け取られてしまいますと、今後その方法を永久にサポートしつづけるかのような
誤解を与えかねない為です。実際には、ある時突然使えなくなる可能性が充分あります。

 弊社としては、本体のカスタマイズはあくまでも「可能だ」というだけであり、
推奨している訳ではございません。むしろ、本体のカスタマイズをしなくても
良いようなつくりを目指しております。

 この方法は、あくまでもユーザー様の責任の範囲内でお試し下さい。


 手順としては次のようになるかと思います。

(1) site.config.xmlの「管理者にしか表示したくない」各entry要素に、
 authority="admin"と追加する。

(2) manager.php.inc内EntryNamesForEditorクラスのrenderHTMLXMLメソッドで、
 authority="admin"のエントリの表示は管理者ログインしている場合のみに変更する。
 具体的には次のようにする。

 このメソッドでは、site.config.xmlから取得した全エントリフォルダ一覧を
出力しています。
 foreachを使ってsite.config.xmlの各エントリフォルダ情報を取り出しています。

 この中で、「今、管理者ログインしていなくて、authority="admin"ならば、
そのエントリフォルダ情報は表示しない」という処理を行えばOKです。

 具体的には、foreach内の処理を、以下のようなif文で囲ってやればOKかと思います。

コード: 全て選択

$user = LoginManager::GetAuthedUser();
if ( 
	( $user->isAdminitrator() === false ) && 
	( $xmlEntryConfig->get_attribute('authority') == 'admin') )
{
	// ここにこれまでのforeach内の処理を記述。
}
 以上です。

 但し、上記の方法は特に試しておりませんし、間違いなくこれでいけるという
保証もございません。
 また、重要な点として、ご自分で改造された場合、今後のバージョンアップの
度に修正を入れる必要がございますし、今後もこの方法がずっと有効である保証
もございません。

 修正の際にはその点、充分ご留意下さい。

 この方法に関して、PHP自体のご質問については大変申し訳ありませんが
ご遠慮下さい。m(__)m

返信