非公開リソースが閲覧可能になる
非公開リソースが閲覧可能になる
さくらのレンタルサーバー
php 7.1.11
MySQL 5.5
MODX 1.0.20J
ブラウザ Chrome
非公開リソースが閲覧可能
リソースを非公開にしているにもかかわらず、ログインしていないブラウザからリソースが閲覧可能になっています。
ManagerManagerのddMultipleFieldのエラー
アップデート当初はエラーが出ていませんでしたが、しばらく使用していたら下記のエラーがリソース編集画面で毎回生じるようになりました。
ManagerManager: An error has occurred: TypeError - $ddMultipleField.sortable is not a function
よろしくお願いいたします。
php 7.1.11
MySQL 5.5
MODX 1.0.20J
ブラウザ Chrome
非公開リソースが閲覧可能
リソースを非公開にしているにもかかわらず、ログインしていないブラウザからリソースが閲覧可能になっています。
ManagerManagerのddMultipleFieldのエラー
アップデート当初はエラーが出ていませんでしたが、しばらく使用していたら下記のエラーがリソース編集画面で毎回生じるようになりました。
ManagerManager: An error has occurred: TypeError - $ddMultipleField.sortable is not a function
よろしくお願いいたします。
非公開リソースが閲覧可能になる
非公開リソースが閲覧可能な件は、$modx->prepareResponse()内でのドキュメントオブジェクトの
マージの順序の問題ではないかと推測しています。
/manager/includes/document.parser.class.inc.php
if(isset($_)) $this->documentObject = array_merge($this->documentObject,$_);
↓
if(isset($_)) $this->documentObject = array_merge($_,$this->documentObject);
sendForwardで$modx->documentIdentifierがエラーページのidに上書きされて再びprepareResponse
が呼ばれる際、後から来た内容を$_の内容でマージしているようなので、元idの情報が表示されてしまう
のではないかと。
マージの順序の問題ではないかと推測しています。
/manager/includes/document.parser.class.inc.php
if(isset($_)) $this->documentObject = array_merge($this->documentObject,$_);
↓
if(isset($_)) $this->documentObject = array_merge($_,$this->documentObject);
sendForwardで$modx->documentIdentifierがエラーページのidに上書きされて再びprepareResponse
が呼ばれる際、後から来た内容を$_の内容でマージしているようなので、元idの情報が表示されてしまう
のではないかと。
非公開リソースが閲覧可能になる
ManagerManagerのddMultipleFieldのエラーの件ですが、発生し得る条件として以下をチェックしてみてください。
1. グローバル設定内「サイトのURL」がhttp://で始まる非セキュアURLになっている
2. サーバータイプが「http」になっている(これはあまり関係ないかも)
3. サーバ設定自体はSSL対応になっていて管理画面はhttps://からのセキュアURLでアクセスしている
つまるところmodx上の設定でサイトURLが非セキュアURLになっていて、なおかつ管理画面にセキュアURLでアクセス
した場合に発生するということです。
ddmultiplefields.phpでは、ページ内でjQuery.uiオブジェクトが存在しない場合に、自身のディレクトリからjQuery UI
を読み込ませようとする記述があるのですが、ファイルまでのパスをなぜかbase_urlではなくsite_urlで生成しているため
絶対パス記述になります。この時、グローバル設定内「サイトのURL」をhttp://で設定していて、https://でアクセスする
とブラウザのセキュリティポリシーに引っかかり読み込みをブロックしてしまうため、依存ファイルが読み込めずエラーが出ます。
$site = $modx->config['site_url'];
↓
$site = $modx->config['base_url'];
一応、対策としては上記のようにすることで回避できるのですが、あまり良い方法ではないので「サイトのURL」などの
設定を変えるのが良いと思います。
最近ではLet's EncryptやCloudFlareなどで手軽にSSL証明書を発行できて利用できるので、SEO強化も兼ねて以前から
運用しているサイトをセキュア運用に切り替えるケースも少なくないと思いますが、一度設定を確認してみてはいかが
でしょうか。
1. グローバル設定内「サイトのURL」がhttp://で始まる非セキュアURLになっている
2. サーバータイプが「http」になっている(これはあまり関係ないかも)
3. サーバ設定自体はSSL対応になっていて管理画面はhttps://からのセキュアURLでアクセスしている
つまるところmodx上の設定でサイトURLが非セキュアURLになっていて、なおかつ管理画面にセキュアURLでアクセス
した場合に発生するということです。
ddmultiplefields.phpでは、ページ内でjQuery.uiオブジェクトが存在しない場合に、自身のディレクトリからjQuery UI
を読み込ませようとする記述があるのですが、ファイルまでのパスをなぜかbase_urlではなくsite_urlで生成しているため
絶対パス記述になります。この時、グローバル設定内「サイトのURL」をhttp://で設定していて、https://でアクセスする
とブラウザのセキュリティポリシーに引っかかり読み込みをブロックしてしまうため、依存ファイルが読み込めずエラーが出ます。
$site = $modx->config['site_url'];
↓
$site = $modx->config['base_url'];
一応、対策としては上記のようにすることで回避できるのですが、あまり良い方法ではないので「サイトのURL」などの
設定を変えるのが良いと思います。
最近ではLet's EncryptやCloudFlareなどで手軽にSSL証明書を発行できて利用できるので、SEO強化も兼ねて以前から
運用しているサイトをセキュア運用に切り替えるケースも少なくないと思いますが、一度設定を確認してみてはいかが
でしょうか。
非公開リソースが閲覧可能になる
https://github.com/modxcms-jp/evolution ... evelop.zip
修正しました。managerフォルダ・assets/pluigins/managermanager/フォルダを上書きしていただいてよいでしょうか?
修正しました。managerフォルダ・assets/pluigins/managermanager/フォルダを上書きしていただいてよいでしょうか?
非公開リソースが閲覧可能になる
mod_kksさま、yamaさま
ありがとうございます。
両方とも問題は解決されました。
ありがとうございます。
両方とも問題は解決されました。
非公開リソースが閲覧可能になる
私も同じ症状になっていまして、早速
https://github.com/modxcms-jp/evolution ... evelop.zip
を上書きしてみたのですが、リソースの中でテンプレート変数をimageにして「挿入」→「参照」ボタンを押すと
Error, "Failed to upload file, internal error."
というウィンドーが出てアップロードが出来なくなります。
デモサイトで試そうと思ったのですが、再現できなく自分の環境で試してみました。
https://github.com/modxcms-jp/evolution ... evelop.zip
を上書きしてみたのですが、リソースの中でテンプレート変数をimageにして「挿入」→「参照」ボタンを押すと
Error, "Failed to upload file, internal error."
というウィンドーが出てアップロードが出来なくなります。
デモサイトで試そうと思ったのですが、再現できなく自分の環境で試してみました。
非公開リソースが閲覧可能になる
画像のアップロードに関してはおそらく以下の内容が影響しているのではないでしょうか。
http://forum.modx.jp/viewtopic.php?f=32&t=1822
/manager/media/browser/mcpuk/connectors/Commands/FileUpload.php
上記ファイルの以下の部分を修正することでアップロード自体はできるようになる
のではないかと思いますがいかがでしょうか。
if($modx->modx_move_uploaded_file($tmp_name,$target))
↓
if($modx->manager->modx_move_uploaded_file($tmp_name,$target))
http://forum.modx.jp/viewtopic.php?f=32&t=1822
/manager/media/browser/mcpuk/connectors/Commands/FileUpload.php
上記ファイルの以下の部分を修正することでアップロード自体はできるようになる
のではないかと思いますがいかがでしょうか。
if($modx->modx_move_uploaded_file($tmp_name,$target))
↓
if($modx->manager->modx_move_uploaded_file($tmp_name,$target))
非公開リソースが閲覧可能になる
mod_kks様
早速、ありがとうございます!
見事治りました!
早速、ありがとうございます!
見事治りました!
非公開リソースが閲覧可能になる
管理画面以外でも使用頻度が増えてきたので$modx->modx_move_uploaded_file() で動作するように改めたはずですが、もしかするとちゃんとできてないのかも?後ほど確認してみます。
非公開リソースが閲覧可能になる
Yamaさま
いつもありがとうございます!
よろしくお願いします。
いつもありがとうございます!
よろしくお願いします。