Bilder aufrufbar bei Verwendung von MediaAuth + Media Manager Effekt "Bild: In JPEG/PNG/GIF/WEBP/AVIF konvertieren"
media_manager | 2.17.0 ycom | 4.3.0 REDAXO | 5.18.1 PHP | 8.2.20 ImageMagick | 6.9.10-23
- Media Manager Profil "test" mit Effekt "Bild: In JPEG/PNG/GIF/WEBP/AVIF konvertieren" anlegen
- Bilddatei im Medienpool; Zugriffsrechte auf "Zugriff für eingeloggte User" einstellen
- Bild ist weiterhin via "/media/test/neues_entry_fallback_image.png" aufrufbar (Inkognito-Tab)
- Direkter Aufruf wird wie erwartet blockiert (/media/neues_entry_fallback_image.png)
- Aufruf mit anderen Media Manager Effekten wird ebenfalls wie erwartet blockiert
Kannst du prüfen, ob die Reihenfolge der Effekte etwas ändert? Bspw. Auth zuerst oder zuletzt? (Ich tippe auf "zuerst", dass dann abgebrochen wird)
ping @anveno
@alxndr-w Sorry, war ein paar Tage raus.
Ich verstehe nicht was Du meinst; der Medientyp hat nur den einen Effekt; da kann ich keine Reihenfolge ändern?
@alxndr-w ich hatte falsch im Kopf, wie das mit den Effekten und dem Schutz an der Stelle funktioniert...
Kommentiere Mal diese Zeile aus: https://github.com/redaxo/redaxo/blob/7bc8552a43850597d268eb128732e18aaa949c03/redaxo/src/addons/media_manager/lib/effects/effect_image_format.php#L100
Das Bild dürfte dann nicht mehr laden, aber wieder geschützt sein. Ich gehe davon aus, dass durch die Änderung der Parameter das Mapping nicht mehr funktioniert.
@alxndr-w Ja, wenn ich die Zeile auskommentiere und den Bild-Cache leere, ist es nicht mehr aufrufbar.
Greift der Schutz von YCom da irgendwie zu früh oder wie muss ich das verstehen?
Wenn ich das richtig überblicke: Dadurch, dass am Medium durch den Effekt intern der Dateiname geändert wird, aber der Dateiname als Vergleich für den Zugriff herangezogen wird, passt der Vergleich nicht mehr.
Das scheint ein konzeptionelles Problem zu sein, vielleicht haben @skerbis oder @gharlan da eine Idee, oder du sprichst das Mal in Slack an.
Ich kenne den YCom-Code nicht so gut. Aber ihr könnt mal testen, ob es wie erwartet funktioniert, wenn ihr die Methode hier:
https://github.com/yakamara/ycom/blob/096da177ef7b09fe70dc9c5912d31aaa92109f82/plugins/media_auth/lib/ycom_media_auth.php#L13-L33
ändert in:
public static function checkPerm(rex_media_manager $media_manager): bool
{
// check if original media_path
$media = $media_manager->getMedia();
$filename = rex_path::basename($media->getMediaPath());
if (rex_path::media($filename) != $media_manager->getMedia()->getMediaPath()) {
return true;
}
// is backend login
if (rex_backend_login::hasSession()) {
return true;
}
// is rex_media
$rex_media = rex_media::get($filename);
if (!$rex_media) {
return false;
}
return self::checkFrontendPerm($rex_media);
}