Veno-File-Manager (VFM4)云盘游客文件分享按钮不显示解决办法
Veno-File-Manager (VFM4)云盘游客文件分享按钮不显示的原因及解决办法自定义配置文件:
'sendfiles_enable_guest' => true,
解决方法:
打开class.gatekeeper.php 文件,查找 isAllowed($action)对象方法,相关代码如下:
/**
* Check if target action is allowed
*
* @param string $action action to check
*
* @return true/false
*/
public function isAllowed($action)
{
global $setUp;
if ($action && $this->isAccessAllowed()) {
$role = $this->getUserInfo('role');
$role = $role == null ? 'guest' : $role;
// $role ='guest' ;
if ($role == 'superadmin') {
return true;
}
$base_actions = array(
'view_enable',
'viewdirs_enable',
'download_enable',
);
// Base actions true for all except Guest and User
if (in_array($action, $base_actions) && $role !== 'guest' && $role !== 'user') {
return true;
}
$role_ext = $role == 'admin' ? '' : '_'.$role;
return $setUp->getConfig($action.$role_ext);
}
return false;
}把其中的 $role = $role == null ? 'guest' : $role;三目运算符条件判断改动一下,修改后代码为:$role = !$this-> isUserLoggedIn() ? 'guest' : $role;如果使用if语句重写,代码为:
// $role = $role == null ? 'guest' : $role;
if (!$this-> isUserLoggedIn()) {
$role = 'guest';
} else {
$role = $role;
}
修改行整段代码如下: /**
* Check if target action is allowed
*
* @param string $action action to check
*
* @return true/false
*/
public function isAllowed($action)
{
global $setUp;
if ($action && $this->isAccessAllowed()) {
$role = $this->getUserInfo('role');
// $role = $role == null ? 'guest' : $role;
$role = !$this-> isUserLoggedIn() ? 'guest' : $role;
if ($role == 'superadmin') {
return true;
}
$base_actions = array(
'view_enable',
'viewdirs_enable',
'download_enable',
);
// Base actions true for all except Guest and User
if (in_array($action, $base_actions) && $role !== 'guest' && $role !== 'user') {
return true;
}
$role_ext = $role == 'admin' ? '' : '_'.$role;
return $setUp->getConfig($action.$role_ext);
}
return false;
}
同时,也要在 getUserInfo() 对象方法中,加入未登录用户(游客)可访问公共目录(public_dirs)内容,把游客访问目录限制在指定目录内,添加后代码如下: /**
* Get user info ('name', 'role', 'dir', 'email')
*
* @param int $info index of corresponding user info
*
* @return info requested
*/
public function getUserInfo($info)
{
global $setUp;
if ($this->isUserLoggedIn()
&& isset($_SESSION['vfm_user_name'])
&& strlen($_SESSION['vfm_user_name']) > 0
) {
$username = $_SESSION['vfm_user_name'];
$curruser = $this->getCurrentUser($username);
if (isset($curruser[$info]) && strlen($curruser[$info]) > 0) {
return $curruser[$info];
}
}
//游客可访问公共目录(public_dirs)内容
else{
$public_dirs = $setUp->getConfig('public_dirs');
$public_dirs = '["' . join('","', array_values($public_dirs) ) . '"]';
return $public_dirs;
}
return null;
}
相关文件:
根目录/vfm-admin/class/class.gatekeeper.php //控制认证(用户状态及相关权限)的类
根目录/vfm-admin/template/list-files.php //条件判断是否显示分享按钮模版文件
根目录/vfm-admin/template/modals.php //条件判断是否有分享权限功能模版文件
根目录/vfm-admin/config.php //自定义设置文件
页:
[1]