Created
January 15, 2018 22:54
-
-
Save IngoWinter/d6afbf5ee0bab6273b71c2637bf9e467 to your computer and use it in GitHub Desktop.
auth media für ycom
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RewriteRule ^/?media/(.*)$ /index.php?ycom_file=$1 [L] | |
# RewriteRule ^/?media/(.*\.(pdf|doc|zip))$ /index.php?ycom_file=$1 [L] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function ycom_check_fileperm($filename, $do_ycom_login = false) | |
{ | |
// zu schuetzende mediacats, bitte nach bedarf anpassen | |
$mediacats2protect = [14, 15]; | |
// eltern mediacat der datei holen | |
$media = rex_media::get($filename); | |
$mediacat2check = $media->getCategoryId(); | |
$mediacat = $media->getCategory(); | |
if (is_object($mediacat) && count($mediacat->getPathAsArray())) | |
{ | |
$mediacat2check = $mediacat->getPathAsArray()[0]; | |
} | |
// datei ist nicht zu schuetzen | |
if (!in_array($mediacat2check, $mediacats2protect)) | |
{ | |
return true; | |
} | |
// bei aufruf ueber media manager ycom nutzer einloggen | |
if ($do_ycom_login) | |
{ | |
rex_ycom::addTable('rex_ycom_user'); | |
rex_yform_manager_dataset::setModelClass('rex_ycom_user', rex_ycom_user::class); | |
$auth = rex_ycom_auth::login([]); | |
} | |
$ycom_user = rex_ycom_auth::getUser(); | |
if ($ycom_user) | |
{ | |
// hier ggfs weitere abfragen | |
return true; | |
} | |
return false; | |
} | |
// check fileperm fuer direkte dateiaufrufe | |
rex_extension::register('FE_OUTPUT', function () { | |
$filename = rex_get('ycom_file', 'string'); | |
if ($filename && file_exists(rex_path::media($filename))) | |
{ | |
if (!ycom_check_fileperm($filename)) | |
{ | |
rex_redirect(rex_plugin::get('ycom', 'auth')->getConfig('article_id_jump_denied')); | |
} | |
$managed_media = new rex_managed_media(rex_path::media($filename)); | |
(new rex_media_manager($managed_media))->sendMedia(); | |
} | |
}); | |
// check fileperm fuer media manager dateiaufrufe | |
$filename = rex_get('rex_media_file', 'string'); | |
if ($filename && file_exists(rex_path::media($filename))) | |
{ | |
if (!ycom_check_fileperm($filename, true)) | |
{ | |
header('HTTP/1.1 403 Forbidden'); | |
exit; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment