diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index 6ec0ef91d0f1c56ebf4d29bb121078a02c13585c..184c02f2b4c34a80a651316e204d864c8dd05095 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;