MT5でサイト構築中に見つけたバグがあったのでsixapartの「不具合、バグ、機能に関するリクエスト送信フォーム」から報告したところ、sixapartの中の人がFogBugz に 「104147 FB: "Change Settings" permission without "Set Publishing Paths" remove URL setting 」の登録をしていただいたようです。(自分で登録しても良かったのですが、英語に自身がなくて)
で、その後MTのPerlソースを読んでみたところ、直せそうだったので、パッチを作り、とりあえず対応しました。
以下がバグ報告した内容です。
管理画面のユーザのロールで「公開パスの設定」の権限がないが「設定の変更」が出来るユーザにてブログの設定を変更すると、公開パスの設定(ブログURL)がNULLで設定されるのか、システム管理者で設定した値が消えてしまう。
※ 再現方法
- システム管理者権限のあるユーザで システム→ロール→「編集者」に「設定の変更」の権限を付与(または同等の権限を新規作成)
- テスト用ウェブサイトを用意(ブログURL 例 http://www.example/blog/)
- 一般ユーザを作成するために、ユーザーを追加。
- その時「システム権限」の各項目にはチェックを入れない、オプション「個人用のブログを作成する」にチェックを入れる
- 個別ブログが作成される(ブログURL 例 http://www.example/blog/demo/)
- システム→権限にて、先ほど作成されたユーザの権限「ブログ管理者」を削除、「設定の変更」の権限を付与「編集者」(または新規作成した同等の権限)を割り当てる
- この作成した一般ユーザでログイン後、ブログの設定→全般で設定を変更して保存後、ログアウト
- システム管理者でログイン後、ブログの設定→全般で設定を見ると ブログURLが 例の場合だとhttp://www.example/blog/demo/ から http://www.example/blog/ に変更されている
MT 5.02 / MT::CMS::Blog
( lib/MT/CMS/Blog.pm )
2107c2107
< if ( $blog->class eq 'blog' ) {
---
> if ( $blog->class eq 'blog' && !$app->can_do('set_publish_paths')) {
やってることは、site_urlを保存時に画面の値をそのまま使って保存してたところを、「公開パスの設定」の権限を見て、権限がない場合はセットしないようにしてみました。
とりあえず、自分の開発案件用途では大丈夫そうです。かなりレアな状況で発生するバグですが、取り急ぎ同様の内容でお困りの方(いるのか?)、いかがでしょうか。
コメントする