From 4028dbbad4acda55d63b117841315b9ddcc03aa9 Mon Sep 17 00:00:00 2001 From: BrainL Date: Mon, 26 May 2025 17:44:39 +0800 Subject: [PATCH 1/2] add Signed-off-by: BrainL --- .../include/device_manager_service_impl.h | 9 ++-- .../src/device_manager_service_impl.cpp | 53 +++++++++++-------- .../relationshipsyncmgr/dm_transport_msg.h | 4 +- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/services/implementation/include/device_manager_service_impl.h b/services/implementation/include/device_manager_service_impl.h index c69db3f78..9fb44f256 100644 --- a/services/implementation/include/device_manager_service_impl.h +++ b/services/implementation/include/device_manager_service_impl.h @@ -269,11 +269,14 @@ private: std::map &delProfileMap, std::vector> &delACLInfoVec, std::vector &userIdVec); - void DeleteAclByTokenId(const int32_t &accessTokenId, + void GetDelACLInfoVec(const int32_t &accessTokenId, std::vector &profiles, - std::map &delProfileMap, std::vector> &delACLInfoVec, std::vector &userIdVec, - const uint32_t &userId, const std::string &localUdid); + const uint32_t &userId); + + void DeleteAclByDelProfileMap( + const std::map &delProfileMap, + std::vector &profiles, const std::string &localUdid); bool CheckLnnAcl(DistributedDeviceProfile::AccessControlProfile delProfile, DistributedDeviceProfile::AccessControlProfile lastprofile); diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index 314cdf47b..7035cd163 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -2245,18 +2245,7 @@ int32_t DeviceManagerServiceImpl::ProcessAppUninstall(int32_t userId, int32_t ac std::string localUdid = std::string(localDeviceId); std::vector> delACLInfoVec; std::vector userIdVec; - std::map delProfileMap; - DeleteAclByTokenId(accessTokenId, profiles, delProfileMap, delACLInfoVec, userIdVec, userId, localUdid); - for (auto item : delProfileMap) { - DmOfflineParam lnnAclParam; - bool isLastLnnAcl = false; - for (auto it : profiles) { - CheckIsLastLnnAcl(it, item.second, lnnAclParam, isLastLnnAcl, localUdid); - } - if (!isLastLnnAcl) { - DeleteSkCredAndAcl(lnnAclParam.needDelAclInfos); - } - } + GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, userId); if (delACLInfoVec.size() == 0 || userIdVec.size() == 0) { return DM_OK; @@ -2352,12 +2341,15 @@ void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t accessTokenId, } } -void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t &accessTokenId, +void DeviceManagerServiceImpl::GetDelACLInfoVec(const int32_t &accessTokenId, std::vector &profiles, - std::map &delProfileMap, std::vector> &delACLInfoVec, std::vector &userIdVec, - const uint32_t &userId, const std::string &localUdid) + const uint32_t &userId) { + std::map delProfileMap; + char localDeviceId[DEVICE_UUID_LENGTH] = {0}; + GetDevUdid(localDeviceId, DEVICE_UUID_LENGTH); + std::string localUdid = std::string(localDeviceId); for (auto &item : profiles) { int64_t accesssertokenId = item.GetAccesser().GetAccesserTokenId(); int64_t accessseetokenId = item.GetAccessee().GetAccesseeTokenId(); @@ -2372,11 +2364,10 @@ void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t &accessTokenId, delProfileMap[item.GetAccessControlId()] = item; DeviceProfileConnector::GetInstance().CacheAcerAclId(item, offlineParam.needDelAclInfos); DeleteSkCredAndAcl(offlineParam.needDelAclInfos); - listener_->OnAppUnintall(item.GetAccesser().GetAccesserBundleName()); if (item.GetBindLevel() == USER) { - userIdVec.push_back(item.GetAccesser().GetAccesserUserId()); - delACLInfoVec.push_back(std::pair(item.GetAccesser().GetAccesserUserId(), - item.GetAccessee().GetAccesseeDeviceId())); + userIdVec.push_back(item.GetAccessee().GetAccesseeUserId()); + delACLInfoVec.push_back(std::pair(item.GetAccessee().GetAccesseeUserId(), + item.GetAccesser().GetAccesserDeviceId())); } } if (accessTokenId == static_cast(accessseetokenId) && @@ -2386,14 +2377,20 @@ void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t &accessTokenId, DeviceProfileConnector::GetInstance().CacheAceeAclId(item, offlineParam.needDelAclInfos); delProfileMap[item.GetAccessControlId()] = item; DeleteSkCredAndAcl(offlineParam.needDelAclInfos); - listener_->OnAppUnintall(item.GetAccessee().GetAccesseeBundleName()); if (item.GetBindLevel() == USER) { - userIdVec.push_back(item.GetAccessee().GetAccesseeUserId()); - delACLInfoVec.push_back(std::pair(item.GetAccessee().GetAccesseeUserId(), - item.GetAccesser().GetAccesserDeviceId())); + userIdVec.push_back(item.GetAccesser().GetAccesserUserId()); + delACLInfoVec.push_back(std::pair(item.GetAccesser().GetAccesserUserId(), + item.GetAccessee().GetAccesseeDeviceId())); } } } + DeleteAclByDelProfileMap(delProfileMap, profiles, localUdid); +} + +void DeviceManagerServiceImpl::DeleteAclByDelProfileMap( + const std::map &delProfileMap, + std::vector &profiles, const std::string &localUdid) +{ for (auto item : delProfileMap) { for (auto it = profiles.begin(); it != profiles.end();) { if (item.first == it->GetAccessControlId()) { @@ -2403,6 +2400,16 @@ void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t &accessTokenId, } } } + for (auto item : delProfileMap) { + DmOfflineParam lnnAclParam; + bool isLastLnnAcl = false; + for (auto it : profiles) { + CheckIsLastLnnAcl(it, item.second, lnnAclParam, isLastLnnAcl, localUdid); + } + if (!isLastLnnAcl) { + DeleteSkCredAndAcl(lnnAclParam.needDelAclInfos); + } + } } bool DeviceManagerServiceImpl::CheckLnnAcl(DistributedDeviceProfile::AccessControlProfile delProfile, diff --git a/services/service/include/relationshipsyncmgr/dm_transport_msg.h b/services/service/include/relationshipsyncmgr/dm_transport_msg.h index c53abee8b..755c3a9e2 100644 --- a/services/service/include/relationshipsyncmgr/dm_transport_msg.h +++ b/services/service/include/relationshipsyncmgr/dm_transport_msg.h @@ -81,7 +81,7 @@ struct UninstAppMsg { int32_t userId_; int32_t tokenId_; UninstAppMsg() : userId_(-1), tokenId_(-1) {} - UninstAppMsg(const int32_t &userId, const int32_t &tokenId) + UninstAppMsg(int32_t userId, int32_t tokenId) : userId_(userId), tokenId_(tokenId) {} }; @@ -94,7 +94,7 @@ struct UnBindAppMsg { std::string extra_; std::string udid_; UnBindAppMsg() : userId_(-1), tokenId_(-1), extra_(""), udid_("") {} - UnBindAppMsg(const int32_t &userId, const int32_t &tokenId, const std::string &extra, const std::string &udid) + UnBindAppMsg(int32_t userId, int32_t tokenId, const std::string &extra, const std::string &udid) : userId_(userId), tokenId_(tokenId), extra_(extra), udid_(udid) {} }; -- Gitee From fbaebe808a8bfa26135f15693184feca270c044d Mon Sep 17 00:00:00 2001 From: BrainL Date: Thu, 29 May 2025 09:36:41 +0800 Subject: [PATCH 2/2] modify Signed-off-by: BrainL --- services/service/src/device_manager_service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index 9daf9e13f..3060aefd0 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -3472,7 +3472,7 @@ void DeviceManagerService::NotifyRemoteUninstallApp(int32_t userId, int32_t toke } } if (!bleUdids.empty()) { - SendAppUnInstallBroadCast(peerUdids, userId, tokenId); + SendAppUnInstallBroadCast(bleUdids, userId, tokenId); } if (!wifiDevices.empty()) { NotifyRemoteUninstallAppByWifi(userId, tokenId, wifiDevices); -- Gitee