From 52a799912d7650bb8b67eb1acf3f9109d90d68c3 Mon Sep 17 00:00:00 2001 From: oh_ci Date: Mon, 17 Feb 2025 06:40:16 +0000 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=20'Pull=20Request=20!2380=20?= =?UTF-8?q?:=20=E6=A0=A1=E9=AA=8C=E5=8F=AF=E4=BF=A1=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=E9=87=8D=E6=9E=84'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/deviceprofile_connector.cpp | 112 ++++-------------- 1 file changed, 23 insertions(+), 89 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index 6ec0ef91d..184c02f2b 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -886,99 +886,33 @@ int32_t DeviceProfileConnector::IsSameAccount(const std::string &udid) return ERR_DM_FAILED; } -bool checkAccesserACL(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) -{ - // the device is accesser - if (profile.GetAccesser().GetAccesserUserId() != 0 && - profile.GetAccesser().GetAccesserUserId() != -1 && - (profile.GetAccessee().GetAccesseeUserId() == 0 || profile.GetAccessee().GetAccesseeUserId() == -1)) { - // caller is accesser, callee is accessee - if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && - profile.GetAccesser().GetAccesserUserId() == caller.userId && - profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { - LOGI("old version, the device is accesser, caller is accesser, callee is accessee"); - return true; - } - // caller is accessee, callee is accesser - if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && - profile.GetAccesser().GetAccesserUserId() == callee.userId && - profile.GetAccessee().GetAccesseeDeviceId() == srcUdid) { - LOGI("old version, the device is accesser, caller is accessee, callee is accesser"); - return true; - } - } - return false; -} - -bool checkAccesseeACL(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) -{ - // the device is accessee - if ((profile.GetAccesser().GetAccesserUserId() == 0 || profile.GetAccesser().GetAccesserUserId() == -1) && - profile.GetAccessee().GetAccesseeUserId() != 0 && - profile.GetAccessee().GetAccesseeUserId() != -1) { - // caller is accesser, callee is accessee - if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && - profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid && - profile.GetAccessee().GetAccesseeUserId() == callee.userId) { - LOGI("old version, the device is accessee, caller is accesser, callee is accessee"); - return true; - } - // caller is accessee, callee is accesser - if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && - profile.GetAccessee().GetAccesseeDeviceId() == srcUdid && - profile.GetAccessee().GetAccesseeUserId() == caller.userId) { - LOGI("old version, the device is accessee, caller is accessee, callee is accesser"); - return true; - } - } - return false; -} - -bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) -{ - // cannot consider multi-user for old version - if (checkAccesserACL(profile, caller, srcUdid, callee, sinkUdid) || - checkAccesseeACL(profile, caller, srcUdid, callee, sinkUdid)) { - return true; - } - return false; -} - -bool checkACLInNewVersion(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) -{ - // consider multi-user for new version - // caller is accesser, callee is accessee - if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && - profile.GetAccesser().GetAccesserUserId() == caller.userId && - profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid && - profile.GetAccessee().GetAccesseeUserId() == callee.userId) { - LOGI("new version, caller is accesser, callee is accessee"); - return true; - } - // caller is accessee, callee is accesser - if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && - profile.GetAccesser().GetAccesserUserId() == callee.userId && - profile.GetAccessee().GetAccesseeDeviceId() == srcUdid && - profile.GetAccessee().GetAccesseeUserId() == caller.userId) { - LOGI("new version, caller is accessee, callee is accesser"); - return true; - } - return false; -} - std::vector GetACLByDeviceIdAndUserId(std::vector profiles, const DmAccessCaller &caller, const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) { std::vector profilesFilter; - for (int32_t i = 0; i < profiles.size(); i++) { - AccessControlProfile profile = profiles[i]; - if (checkACLInOldVersion(profile, caller, srcUdid, callee, sinkUdid) || - checkACLInNewVersion(profile, caller, srcUdid, callee, sinkUdid)) { - profilesFilter.push_back(profile); + for (auto &item : profiles) { + if (item.GetAccesser().GetAccesserUserId() == caller.userId && + item.GetAccesser().GetAccesserDeviceId() == srcUdid && + item.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { + if (callee.userId != 0 && callee.userId == item.GetAccessee().GetAccesseeUserId()) { + profilesFilter.push_back(item); + continue; + } else if (callee.userId == 0 || item.GetAccessee().GetAccesseeUserId() == -1) { + profilesFilter.push_back(item); + continue; + } + } + if ((item.GetAccessee().GetAccesseeUserId() == caller.userId || + item.GetAccessee().GetAccesseeUserId() == -1) && + item.GetAccessee().GetAccesseeDeviceId() == srcUdid && + item.GetAccesser().GetAccesserDeviceId() == sinkUdid) { + if (callee.userId != 0 && callee.userId == item.GetAccesser().GetAccesserUserId()) { + profilesFilter.push_back(item); + continue; + } else if (callee.userId == 0 || item.GetAccesser().GetAccesserUserId() == -1) { + profilesFilter.push_back(item); + continue; + } } } return profilesFilter; -- Gitee