Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#51 2006-04-17 00:32:47

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

うまく動作していないときの変数の値とPHPのバージョンを教えてください。
もし,ここに書くのが適切でなかったら,プライベート・メッセージでお願いします。

オフライン

#52 2006-04-17 00:44:59

kosugiatkips
メンバー
From: 金沢区
登録日: 2006-01-15
投稿: 353

Re: NP_AccessControl

PHP Version 4.4.2
なので、一応現時点では最新だと思います。

状況を説明しますと、

ブログの保護機能を使う 保護しない
ログインフォーム表示用スキン   hoge
RSSへの認証付きアクセスを許可 いいえ
RSSで使うスキン  api/rsd,feeds/atom,feeds/rss20,xmlrss,xml/rsd
RSSの認証用ユーザー名   カラ
RSSの認証用パスワード  カラ
ログインの繰り返し最大回数  5
表示に使うスキンを限定 はい
許可するスキン(デフォルト以外)  feeds/atom,feeds/rss20,xmlrss,api/rsd

この状態で、RSSを確認したら、コンテンツを表示する許可がありませんという具合になってコンテンツ部分が読み込まれませんでした。
そこでデバッグ出力を入れて、$currentSkinNameも$allowedskinsを確認すると、正常になっていたので該当部分を書き換えたら、表示されるようになったというわけです。

オフライン

#53 2006-04-17 00:50:52

kosugiatkips
メンバー
From: 金沢区
登録日: 2006-01-15
投稿: 353

Re: NP_AccessControl

strposはbooleanじゃなくて数値で返すので===だとTRUEとの比較に失敗するのかもしれません。

単純に
return (strpos(','.$allowedskins.',' , ','.$currentSkinName.','));
で動作するような気がします。(未確認)

オフライン

#54 2006-04-17 00:58:08

kosugiatkips
メンバー
From: 金沢区
登録日: 2006-01-15
投稿: 353

Re: NP_AccessControl

あ~~だめですわ
strposだと最初にみつかった場所で0を返すので===を指定しないとだめなんですね。

すると
return ( ! (strpos(','.$allowedskins.',' , ','.$currentSkinName.',') === FALSE));
という感じでしょうか。
これなら良さそうな。

オフライン

#55 2006-04-17 01:43:42

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

kosugiatkips さんの発言:

return ( ! (strpos(','.$allowedskins.',' , ','.$currentSkinName.',') === FALSE));
という感じでしょうか。
これなら良さそうな。

それが正しそうです。それに変えたら正しく動きますか?

オフライン

#56 2006-04-17 13:00:15

kosugiatkips
メンバー
From: 金沢区
登録日: 2006-01-15
投稿: 353

Re: NP_AccessControl

Andy さんの発言:

それが正しそうです。それに変えたら正しく動きますか?

return ( ! (strpos(','.$allowedskins.',' , ','.$currentSkinName.',') === FALSE));
いまのところこれでOKのようです。
私が最初に提示したほうは、問題ありですけど :oops:

オフライン

#57 2007-04-28 04:01:17

Myu-ya
メンバー
登録日: 2007-02-24
投稿: 5

Re: NP_AccessControl

Nucleusを使用して、メンバーしか閲覧できないブログの運用を考えています。
ログインできるメンバーは何人もいるのですが、そのメンバーの種別を分けて、
特定のメンバーだけが閲覧できて、かつ一部のメンバーには記事を編集できないように実装するのは難しいでしょうか?

現在のレベルはチームメンバーのみ閲覧/ログインメンバー閲覧/保護しないの3つがありますが、
チームメンバーに入れてしまうとそのメンバーも記事の編集ができてしまいますがその部分を変更したいのです。
イメージとしては下のような感じです。

____|管理者/編集者(チームメンバ内)/チームメンバ/ログインメンバ/非ログイン
(ADMIN設定)|w/n/n/n/n
チーム|w/w/r/n/n
ログイン|w/w/w/r/n
保護しない|w/w/w/r/r

w=編集可能 r=閲覧可能 n=編集・閲覧不可

例:
管理者/A ログインメンバー/B,C,D

Blog1/[チームのみ]チーム所属・閲覧可能A,B,D/チーム所属・編集可能A,B
Blog2/[チームのみ]チーム所属・閲覧可能A,B,C/チーム所属・編集可能A,C
Blog3/[ログインのみ]閲覧可能A,B,C,D/チーム所属・編集可能A


例えば、「チームメンバーのみ」のブログでチームに入ったらそのブログを閲覧できますが、
記事の投稿・編集は
1.「チームの編集」の項目が/名前/本名/管理者権限/アクションとありますが、
そこに「編集権限」はい・いいえという設定項目があって、「はい」のメンバのみそのブログを編集できる(上の表の通り、仮に管理者がいいえになってもチームの編集の設定を変更できるため問題はない?)

もしくは
2.ブログの管理者権限があるメンバーしか編集できないようにする

みたいなことはできるのでしょうか。
元のNucleusの「チーム」に属するメンバーが編集できるという動作に反するとは思うのですが、ご教授お願いします。

オフライン

#58 2007-05-01 12:52:37

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

返事が遅くなってすみません。

AccessControlのプラグインでは閲覧側しか扱っていないため,そこではチーム・メンバーかどうかで閲覧指定をすることになると思います。その上でチームメンバーであっても編集できないという指定ができるかどうかというのが課題だと理解していいでしょうか。

Myu-ya さんの発言:

例えば、「チームメンバーのみ」のブログでチームに入ったらそのブログを閲覧できますが、
記事の投稿・編集は
1.「チームの編集」の項目が/名前/本名/管理者権限/アクションとありますが、
そこに「編集権限」はい・いいえという設定項目があって、「はい」のメンバのみそのブログを編集できる(上の表の通り、仮に管理者がいいえになってもチームの編集の設定を変更できるため問題はない?)

もしくは
2.ブログの管理者権限があるメンバーしか編集できないようにする

みたいなことはできるのでしょうか。

このあたりができるかどうかは,まみおさんが一番詳しいと思うのですが。

仮に,こういった指定ができないとすると,別途プラグインを作って,そこでチーム・メンバーの編集権限を指定できるようにし,アイテム編集フォームを作るときにその情報で制御するといった方法があり得ると思います。

あまりお役に立てなくてすみません。

オフライン

#59 2007-05-01 16:22:01

watabon
メンバー
登録日: 2007-02-04
投稿: 4

Re: NP_AccessControl

現在、他のプラグインで、NP_LatestWritebacks を使って最新コメントのリストを表示しているのですが、NP_AccessControl で保護されたアイテム・コメントでも、最新コメントリストには公開されてしまうのです。
ログインユーザーとしてコメントしても、公開されてしまいます。

公開されないためには、どのような処置が考えられますでしょうか?
他のプラグインがらみで申し訳ありませんが、何かヒントがありましたらよろしくお願いします。 :?  :?  :?

オフライン

#60 2007-05-01 16:33:54

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

AccessControlで制御できるのは,Nucleusのテンプレート機能を使用して表示する標準機能あるいはプラグインです。LatestWritebacksのように独自にDBをアクセスして展開するものは,原理上制限できません。

対応策としては,プラグインを,Nucleusのテンプレートを使って表示するように作り直すことが考えられます。一からプラグインを作るのと同じことなので,ちょっと大変ですが。

オフライン

#61 2007-05-01 17:12:06

watabon
メンバー
登録日: 2007-02-04
投稿: 4

Re: NP_AccessControl

早速のお返事、恐縮です。

プラグインの作り方であれば仕方ないですね。
まだプラグインを作れるレベルではないので、とりあえずサイトの構成の仕方で工夫してみます。

ありがとうございました。

オフライン

#62 2007-05-05 22:30:37

watabon
メンバー
登録日: 2007-02-04
投稿: 4

Re: NP_AccessControl

お世話になっております。今回は2点、ご報告&質問があります。

非公開アイテムを作って気が付いたのですが、

(1) アイテムを非公開にすると、アイテム自身のタイトルは改名されるのでいいのですが、

<%previtemtitle%>

などを使って表示している前のページ、あるいは次のページへのリンクタイトルは、オリジナルのタイトルがそのまま表示されてしまいます。
対策は可能でしょうか?

(2) 一旦ログインしてしまうと、どのアイテムが非公開で、どのアイテムが公開なのか、閲覧時に分かるような区別があるといいなあと思いました。
複数の投稿者でブログを書いていると、ログインしたまま他人の記事にコメントをつけるときに、「えーっと、どっちだったかな?」と確認したくなることがあるのです。

何かお考えいただけるとありがたく存じます。

オフライン

#63 2007-05-06 00:24:20

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

watabon さんの発言:

お世話になっております。今回は2点、ご報告&質問があります。

非公開アイテムを作って気が付いたのですが、

(1) アイテムを非公開にすると、アイテム自身のタイトルは改名されるのでいいのですが、

<%previtemtitle%>

などを使って表示している前のページ、あるいは次のページへのリンクタイトルは、オリジナルのタイトルがそのまま表示されてしまいます。
対策は可能でしょうか?

今の作りではこれは難しいです。DBへのアクセスを規制しているわけではないので。
ここまでやろうとするなら,一回タイトルを別の内容にしてしまって,「アクセス権がない場合に表示しない」のではなく「アクセス権がある場合だけ表示する」ような形にしないといけないですね。現状は,ここまで考えていませんが,リクエストが多いようなら対応してもいいかもしれません。

watabon さんの発言:

(2) 一旦ログインしてしまうと、どのアイテムが非公開で、どのアイテムが公開なのか、閲覧時に分かるような区別があるといいなあと思いました。
複数の投稿者でブログを書いていると、ログインしたまま他人の記事にコメントをつけるときに、「えーっと、どっちだったかな?」と確認したくなることがあるのです。

何かお考えいただけるとありがたく存じます。

これは何らかテンプレート変数を作ればいいので,簡単にできそうです。

オフライン

#64 2007-05-06 05:02:48

watabon
メンバー
登録日: 2007-02-04
投稿: 4

Re: NP_AccessControl

今の作りではこれは難しいです。DBへのアクセスを規制しているわけではないので。
ここまでやろうとするなら,一回タイトルを別の内容にしてしまって,「アクセス権がない場合に表示しない」のではなく「アクセス権がある場合だけ表示する」ような形にしないといけないですね。現状は,ここまで考えていませんが,リクエストが多いようなら対応してもいいかもしれません。

了解しました。
とりあえずリンクだけにして名称は「前へ」「次へ」などの固定値にしておきたいと思います。

これは何らかテンプレート変数を作ればいいので,簡単にできそうです。

ありがとうございます。助かります。よろしくお願いします。 wink

オフライン

#65 2007-06-14 14:43:09

seki
メンバー
登録日: 2007-06-08
投稿: 13

Re: NP_AccessControl

Andyさま
いつもお世話になっております。
NP_AccessControlを使用させて頂いておりますが、2点ほど、質問させてください。

1.ログイン制限をした記事は、ログインしていない状態で、
「このアイテムは表示できません」と表示されますが、
このタイトルそのものを表示しないようにすることは可能でしょうか?。
要は、ログインしていない場合、この記事の存在自体を隠したいのです。

2.1.のrss対応とか可能なのでしょうか?今(1.3)だと、
rss(xml-rss2.php)ではログインしていない状態でも、記事内容が取得可能です。

お忙しい中、申し訳ありませんが、回答だけでも貰えたら幸いです。
以上、よろしくお願いします。

オフライン

#66 2007-06-14 18:26:40

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

seki さんの発言:

1.ログイン制限をした記事は、ログインしていない状態で、
「このアイテムは表示できません」と表示されますが、
このタイトルそのものを表示しないようにすることは可能でしょうか?。
要は、ログインしていない場合、この記事の存在自体を隠したいのです。

プラグインの言語ファイルに該当する文字列を空にすればいいと思います。

seki さんの発言:

2.1.のrss対応とか可能なのでしょうか?今(1.3)だと、
rss(xml-rss2.php)ではログインしていない状態でも、記事内容が取得可能です。

お忙しい中、申し訳ありませんが、回答だけでも貰えたら幸いです。
以上、よろしくお願いします。

RSS用にBASIC認証する機能があります。通常のログイン用ユーザー名/パスワードとは別に設定します。

オフライン

#67 2007-06-14 19:37:13

seki
メンバー
登録日: 2007-06-08
投稿: 13

Re: NP_AccessControl

Andy さんの発言:
seki さんの発言:

1.ログイン制限をした記事は、ログインしていない状態で、
「このアイテムは表示できません」と表示されますが、
このタイトルそのものを表示しないようにすることは可能でしょうか?。
要は、ログインしていない場合、この記事の存在自体を隠したいのです。

プラグインの言語ファイルに該当する文字列を空にすればいいと思います。

seki さんの発言:

2.1.のrss対応とか可能なのでしょうか?今(1.3)だと、
rss(xml-rss2.php)ではログインしていない状態でも、記事内容が取得可能です。

お忙しい中、申し訳ありませんが、回答だけでも貰えたら幸いです。
以上、よろしくお願いします。

RSS用にBASIC認証する機能があります。通常のログイン用ユーザー名/パスワードとは別に設定します。

Andyさま
回答ありがとうございます。
1.は試しましたが、タイトルの表示が「This item is protected」となるだけで、
記事の存在はログインしていなくても分かってしまいます。
2. はBASIC認証にすると、RSSで取得する際に、常にユーザー名/パスワードが必要ではないでしょうか?。

実は、記事を書いてドラフトにすると、表示されないけど、確認(プレビュー)できないので、
このプラグインのログイン制限で実現できないかなぁっと思った次第です。
目的を書かずに投稿してしまってスイマセン。

オフライン

#68 2007-06-14 19:45:00

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

seki さんの発言:

1.は試しましたが、タイトルの表示が「This item is protected」となるだけで、
記事の存在はログインしていなくても分かってしまいます。

完全に空にするのではなく,スペースにしたらどうでしょう。多分完全に空の場合は英語の言語ファイルのデータが使われているのだと思います。

seki さんの発言:

2. はBASIC認証にすると、RSSで取得する際に、常にユーザー名/パスワードが必要ではないでしょうか?。

URLにユーザー名とパスワードを入れることで回避が可能です。逆にBASIC認証以外の認証だと,ブラウザのRSS機能を使うほかなくなってしまうのではないかと思います。

オフライン

#69 2007-06-14 22:00:59

seki
メンバー
登録日: 2007-06-08
投稿: 13

Re: NP_AccessControl

Andy さんの発言:
seki さんの発言:

1.は試しましたが、タイトルの表示が「This item is protected」となるだけで、
記事の存在はログインしていなくても分かってしまいます。

完全に空にするのではなく,スペースにしたらどうでしょう。多分完全に空の場合は英語の言語ファイルのデータが使われているのだと思います。

seki さんの発言:

2. はBASIC認証にすると、RSSで取得する際に、常にユーザー名/パスワードが必要ではないでしょうか?。

URLにユーザー名とパスワードを入れることで回避が可能です。逆にBASIC認証以外の認証だと,ブラウザのRSS機能を使うほかなくなってしまうのではないかと思います。

Andyさま

1.は色々試しましたが、英語の言語ファイルが使われてしまうようです。もう少し、こちらでいじってみます。
2.は1.が出来ても意図するようには困難な感じですね、了解しました。

返信して頂き助かりました。
ありがとうございました。

オフライン

#70 2007-07-18 12:07:40

zeppld
メンバー
登録日: 2007-04-26
投稿: 25

Re: NP_AccessControl

Andy様
はじめまして。
AccessControlを使用させて頂いております。1点質問があります。
保護されたアイテムを『http://www.xxx.jp/index.php?itemid=282』のようにURLを直接指定して開くと『このアイテムは表示できません』と表示されます。
その時に表示されるHTMLは下記のようになっています。

<div id="wrapper2">

<div id="header">
<!-- page header -->
</div>
<!-- page content -->
<div id="container">
<div class="content">
<div class="contenttitle">
<h2>
このアイテムは表示できません
</h2>
</div>
<div class="contentbody">
<br /><br />
<a name="more"></a>
</div>
</div>
</div>
<!-- page menu -->
<h2 class="hidden">Sidebar</h2>
<div id="sidebarcontainer">
</div>
<div id="footer">
<!-- page footer -->
</div>
</div>

保護されたアイテムを開く場合も保護されたブログを開く時と同様にログインフォームを表示させる事は可能でしょうか?
私の環境はNucleus 3.3・AccessControl 1.3・IE6.0です。
よろしくお願いいたします。

オフライン

#71 2007-07-18 17:07:54

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

loginformスキンに個別アイテム・ページをつくり,メインの目次ページと同じ内容を入れてみてください。

オフライン

#72 2007-07-18 18:08:03

zeppld
メンバー
登録日: 2007-04-26
投稿: 25

Re: NP_AccessControl

個別アイテムページを作成する事で解決しました。
大変お騒がせしました。
ありがとうございました。

オフライン

#73 2007-07-19 14:42:22

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

Ver 1.4をアップしました。上記のスキンの問題を標準対応したほか,テンプレート変数を使って,アイテム単位で保護しているときに,そのアイテムの表示を完全になくせるようになりました。詳しくはWikiをごらんください。
http://japan.nucleuscms.org/wiki/plugins:accesscontrol

オフライン

#74 2007-09-22 16:42:25

sucoshi
メンバー
登録日: 2007-04-09
投稿: 68

Re: NP_AccessControl

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?p=20490#20490">viewtopic.php?p=20490#20490</a><!-- l --> から引越してきました。

目的:
コメント許可の内部ブログからコメント不可の外部ブログへ記事を移動して、記事コメントを一切見せず辿れずとしたい。

現在の環境です:
Nucleus CMS v3.3
NP_Access Control 1.4改
NP_CustomURL 0.3.6d

現在各ブログの設定で、Options for NP_AccessControlの項目を以下の設定にしました。

ブログの保護機能を使う    保護しない
ログインフォーム表示用スキン    loginform
RSSへの認証付きアクセスを許可    はい
RSSで使うスキン    api/rsd,feeds/atom,feeds/rss20,xmlrss,xml/rsd
RSSの認証用ユーザー名    (null)
RSSの認証用パスワード    (null)
ログインの繰り返し最大回数    5
表示に使うスキンを限定    はい
許可するスキン(デフォルト以外)    (null)

この設定で、http://ほにゃらら/ブログ名?skinid=5 (この skinid は default スキンです)は「コンテンツを表示できません」で以下空白なんですが、 http://ほにゃらら/ブログ名/記事名?skinid=5 は「コンテンツを表示できません」の下に、すでについているコメントが表示されてしまいます。
なおかつ、上記の設定の場合なら、rss(たとえば http://ほにゃらら/ブログ名/xml-rss2.php)にアクセスした際、Basic認証のダイアログが出ると思うのですが、出ません。そのままスルーされて(http://ほにゃらら/ブログ名/rss20.xml)表示されてしまいます。
元の質問トピックで、Andyさんから「NP_AccessContorolの182行目を書き直してみて」という旨でお教えいただいたのですが、まだ思うような動作に至りません。
RSS関連の設定についても、基本的に理解できていないのかもしれませんし…。
Basic認証って、もしかして別にプラグインが必要だったりしますか?
あるいは「ブログの保護機能を使う→保護しない」の場合は最初からRSSはスルーだったりでしょうか。

どうかお助けください orz

オフライン

#75 2007-09-25 18:54:03

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: NP_AccessControl

sucoshi さんの発言:

この設定で、http://ほにゃらら/ブログ名?skinid=5 (この skinid は default スキンです)は「コンテンツを表示できません」で以下空白なんですが、 http://ほにゃらら/ブログ名/記事名?skinid=5 は「コンテンツを表示できません」の下に、すでについているコメントが表示されてしまいます。

Event_InitSkinParse関数を

	function event_InitSkinParse(&$data) {
		global $blogid;
		if (!$this->testlogin($data)) {
			if (intrequestvar('iteration') < $this->getBlogOption($blogid, 'login_iteration')) {
				$skinName = trim($this->getBlogOption($blogid, 'sub_skin'));
				if (SKIN::exists($skinName)) {
					$skin =& SKIN::createFromName($skinName);
					// copied from NP_SkinSwitcher.php
					$data['skin']->SKIN($skin->getID()); 
				}
			} else {
				$this->doError = TRUE;
				$this->errorMessage = _ACCSSCNTRL_INVALID_USERPASS;
				return;
			}
		}
		if (!$this->testblog($data)) {
			$this->doError = TRUE;
			$this->errorMessage = _ACCSSCNTRL_CONTENTS_PROHIBIT;
		}
	}

testblog関数を

	function testblog($data) {
		global $blogid;
		$blog = new BLOG($blogid);
		if ($this->getBlogOption($blog->blogid, 'skin_restriction') == "no")
			return TRUE;
		$defaultskin = $blog->getDefaultSkin();
		$skinname = SKIN::getNameFromID($defaultskin);
		$currentSkinName = $data['skin']->getName();
		if ($currentSkinName == $skinname) return TRUE;
		$allowedskins = $this->getBlogOption($blog->blogid, 'allowed_skins');
		return ( ! (strpos(','.$allowedskins.',' , ','.$currentSkinName.',') === FALSE));
	}

その下のevent_PreBlogContent,event_PostBlogContentを消してみてください。

sucoshi さんの発言:

なおかつ、上記の設定の場合なら、rss(たとえば http://ほにゃらら/ブログ名/xml-rss2.php)にアクセスした際、Basic認証のダイアログが出ると思うのですが、出ません。そのままスルーされて(http://ほにゃらら/ブログ名/rss20.xml)表示されてしまいます。

(中略)

あるいは「ブログの保護機能を使う→保護しない」の場合は最初からRSSはスルーだったりでしょうか。

現状は仕様です。function testloginの中でRSSのチェックをしているifのブロックを先頭に持ってくると,もしかすると動くかもしれません。

オフライン

Board footer