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を保存時に画面の値をそのまま使って保存してたところを、「公開パスの設定」の権限を見て、権限がない場合はセットしないようにしてみました。

とりあえず、自分の開発案件用途では大丈夫そうです。かなりレアな状況で発生するバグですが、取り急ぎ同様の内容でお困りの方(いるのか?)、いかがでしょうか。

window.onload = function(){window.parent.CKEDITOR._["contentDomReadyeditor-content-textarea"]( window );}window.onload = function(){window.parent.CKEDITOR._["contentDomReadyeditor-content-textarea"]( window );}