优化应用权限检测逻辑

请注意,此次修改将影响OnlyOffice插件,确保OnlyOffice插件Dzz小胡版为X1.26.1版本。
优化后的应用权限检测逻辑如下:首先,判断用户是否为管理员以及访问的应用是否已设置权限。若用户为管理员且访问的应用未设置应用权限,则跳过权限检测。若用户为非管理员且访问的应用有权限设置,则获取用户UID。若用户已登录,则以登录用户的UID作为UID参数;若用户未登录,则检查是否带有加密的用户UID,若有,则以此作为UID参数。接下来,判断UID参数是否有值。若有,则根据UID检查该用户是否有权限访问该应用;若无UID,则判断访问的应用是否设置了全员可用或是否仅限游客访问。若应用设置为全员可用或仅限游客可用,则允许未登录用户访问应用;反之,跳转至登录界面。

Signed-off-by: 小胡 <3203164629@qq.com>
This commit is contained in:
小胡
2024-03-18 07:57:16 +00:00
committed by Gitee
Unverified
parent f41dae4675
commit 7b2a203999

View File

@@ -608,12 +608,16 @@ class dzz_app extends dzz_base{
}
}
}
if($appidxu=C::t('app_market')->fetch_by_identifier(CURMODULE)){
if($this->var['member']['adminid'] || $_GET['do']=='savefile'){
}elseif($appidxu['available']==0){
if(!$this->var['member']['adminid'] && $appidxu=C::t('app_market')->fetch_by_identifier(CURMODULE)){
if($this->var['member']['uid']){
$uid=$this->var['member']['uid'];
}elseif($_GET['uidtoken']){
$uid=intval(dzzdecode($_GET['uidtoken']));
}
if(!$appidxu['available']){
showmessage(lang('该应用已关闭,请联系管理员。'));
}elseif($this->var['member']['uid']){
$appuid= C::t('user_field')->fetch($this->var['member']['uid']);
}elseif($uid){
$appuid= C::t('user_field')->fetch($uid);
$appuidz=explode(',',$appuid['applist']);
if (in_array($appidxu['appid'],$appuidz)){
}elseif($config=dzz_userconfig_init()){
@@ -622,7 +626,7 @@ class dzz_app extends dzz_base{
}else{
$applist=array();
}
$appuid= C::t('user_field')->fetch($_G['uid']);
$appuid= C::t('user_field')->fetch($uid);
$appuidz=explode(',',$appuid['applist']);
if (in_array($appidxu['appid'],$appuidz)){
}else{