img_auth: handle files in the transcoded zone

img_auth.php does not currently handle filepaths for transcoded videos
at all, and instead falls back attempting to open files out of the
public zone, which obviously fails as these files do not exist there.

Add a branch that handles transcoded containers in the same manner as
thumbs and thus allowing access to those files from private wiki.

Bug: 65007
Change-Id: I7182206ba09dd2466fc51aa1d51116dd13db980c
This commit is contained in:
Faidon Liambotis 2014-05-07 20:01:16 +03:00 committed by Ori.livneh
parent 40b569aa38
commit d1c62a372a

View file

@ -106,14 +106,15 @@ function wfImageAuthMain() {
// Get the local file repository
$repo = RepoGroup::singleton()->getRepo( 'local' );
$zone = strstr( ltrim( $path, '/' ), '/', true );
// Get the full file storage path and extract the source file name.
// (e.g. 120px-Foo.png => Foo.png or page2-120px-Foo.png => Foo.png).
// This only applies to thumbnails, and all thumbnails should
// This only applies to thumbnails/transcoded, and each of them should
// be under a folder that has the source file name.
if ( strpos( $path, '/thumb/' ) === 0 ) {
$name = wfBaseName( dirname( $path ) ); // file is a thumbnail
$filename = $repo->getZonePath( 'thumb' ) . substr( $path, 6 ); // strip "/thumb"
if ( $zone === 'thumb' || $zone === 'transcoded' ) {
$name = wfBaseName( dirname( $path ) );
$filename = $repo->getZonePath( $zone ) . substr( $path, strlen( "/".$zone ) );
// Check to see if the file exists
if ( !$repo->fileExists( $filename ) ) {
wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $filename );