以管理员用户身份查看所有图像

时间:2017-02-15 14:11:57

标签: laravel

目前,我已根据当前登录用户的身份设置显示图像的路径。用户可以看到他们上传的图像,因为它针对的是登录ID的用户。

路线

Route::get('/imgupload/{filename}', 'imguploadController@view');

控制器

public function view($filename, User $user) {
    $user = $user->where('id', auth()->id())->first();

    $path = public_path() . '/app/images/'. $user->id .'/' . $filename;

    if(!File::exists($path)) abort(404);

    $file = File::get($path);

    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
}

但是,我希望以管理员用户身份查看基于特定用户的所有图像。我知道问题在于它正在查看我的管理员帐户用户ID并将其放入路径中,显然没有。

我是否需要创建新函数或者是否可以动态地将新路径传递给此函数?

1 个答案:

答案 0 :(得分:0)

以管理员身份访问时,您必须提供图片所有者id,然后执行以下操作:

Route::get('/imgupload/{filename}', 'imguploadController@view');

public function view(Request $request, $filename, User $user) {

    $user = $user->where('id', auth()->id())->first();

    // Admin has to provide image owner's ID in request URL
    // like this "...imgupload/imageName?id=1234"

    if($user->isAdmin && $request->has("owner_id"))
        $path = public_path() . '/app/images/'. $request->owner_id .'/' . $filename;
    else
        $path = public_path() . '/app/images/'. $user->id .'/' . $filename;

    if(!File::exists($path)) abort(404);

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
}

如果您无法获得所有者id,则必须搜索该图片的所有用户文件夹。