新年
快乐

垃圾堆中的精品

垃圾堆中的精品

新版人人商城多商户无法上传图片解决办法

解决更新人人商城和微擎后,新版人人商城的多商户无法上传图片的问题

最近更新到最新版本后,用户反馈人人商城的多商户无法上传图片,经过对比发现是微擎的权限设置做出了更改。将file设置成为了需要用户登录后才能上传。

但是人人商城的多商户并不是使用的微擎的授权,所以多商户后台上传时候会301重定向到登录页面,导致无法上传。
所以只要恢复回去就行。
具体文件 /web/common/permission.inc.php,然后将utility的direct添加file权限即可


2020年4月14日 更新:

突然发现还有一些模块因为这个问题无法打开上传图片、或者新建应用,所以大家都可以试下。下面是一个子账号添加应用的时候会报没有权限,按照上面操作即可解决。


2020年4月18日 更新:

重新梳理了下,上面修改是修改的微擎框架,暂不建议这么修改。正确的操作方式应该是建立一个账户,分配给用户上传权限,然后在人人多商户里面会自动调用其权限即可上传。

当然,如果弄不清楚还是直接修改微擎模块来的方便,但是这样也将上传文件的接口暴漏在外。属于风险项目,如果这样的话是不是可以直接上传小马,然后转大马直接拿下这个微擎站点呢?(哈哈哈….)


2020年6月10日 更新

更新到比较新的人人商城后,直接使用人人商城自带的功能即可解决多商户上传图片问题。解决办法如下:

1.在系统右上角角色管理中添加一个无权限的角色,记住要什么权限都不给

2.然后在下方的操作员中添加一个操作员,选择刚才创建的角色,并启用

3.在多商户设置里,将2中添加的无权限的用户帐号密码输入到设置项中,保存即可。

写在最后:

  1. 人人商城实现原理,微擎更新策略,上传文件必须有角色,所以人人就是新建一个操作员,然后让多商户借用这个没有人人商城管理权限的操作员去上传文件。但是,这个操作员没有删除文件的权限,所以会导致多商户无法删除上传的图片。
  2. 然后查询发现,微擎删除图片的话只有三个角色,就是系统管理员、公众号管理员、公众号主管理员可以删除。
/framework/model/user.mod.php
  1. 所以只要将刚才那个帐号转成管理员或主管理员就可以。如果相关修改文件,让操作员也可以删除图片,修改文件/web/source/utility/file.ctrl.php,将delete,del_group添加操作员即可。
if (empty($_W['isfounder']) && ACCOUNT_MANAGE_NAME_MANAGER != $_W['role'] && ACCOUNT_MANAGE_NAME_OWNER != $_W['role']) {
	iajax(1, '您没有权限删除文件');
}
if (empty($_W['isfounder']) && ACCOUNT_MANAGE_NAME_MANAGER != $_W['role'] && ACCOUNT_MANAGE_NAME_OWNER != $_W['role'] && ACCOUNT_MANAGE_NAME_OPERATOR != $_W['role']) {
	iajax(1, '您没有权限删除文件');
}
  1. 如果按照上面的操作后发现还无法上传,那就是多商户在登录的时候没有借用操作员权限成功,具体可以检查下文件/addons/ewei_shopv2/plugin/merch/core/web/manage/login.php中的main方法中有无借用。没有的话添加如下代码即可。
$data = m('common')->getPluginset('merch');
$member = array('username' => $data['temporaryusername'], 'password' => $data['temporarypassword']);
load()->model('user');
$record = user_single($member);
$cookie = array();
$cookie['uid'] = $record['uid'];
$cookie['lastvisit'] = $record['lastvisit'];
$cookie['lastip'] = $record['lastip'];
$cookie['hash'] = !empty($record['hash']) ? $record['hash'] : md5($record['password'] . $record['salt']);
$cookie['rember'] = safe_gpc_int($_GPC['rember']);
$session = authcode(json_encode($cookie), 'encode');
$autosignout = 0 < (int) $_W['setting']['copyright']['autosignout'] ? (int) $_W['setting']['copyright']['autosignout'] * 60 : 0;
isetcookie('__session', $session, !empty($_GPC['rember']) ? 7 * 86400 : $autosignout, true);
  1. 多人反馈有的版本(3.19~3.20.1)有问题,无法添加操作员,追踪代码发现,是因为微擎更新了用户注册的函数user_register(),除了要传帐号密码,还多了一个参数,但人人暂未更新(后续版本应该会更新),故可以将/addons/ewei_shopv2/core/web/perm/user.php中的user_register方法增加第二个空值参数就行。

评论回复

  1. 回复 人人求指导

    求指导 qq931710683人人商城多商户

  2. 回复 新手

    二师兄,第二个空值参数如何增加 Q47201318

回到顶部