From ae9d5f78fdd039e0ab3f8e1eca63f0ef5da127d8 Mon Sep 17 00:00:00 2001 From: liuzhongming Date: Thu, 20 Mar 2025 11:20:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9B=B4=E6=96=B0=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E7=94=A8=E6=88=B7acl=E9=80=BB=E8=BE=91=20Signed-off-b?= =?UTF-8?q?y:=20liuzhongming=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/deviceprofile_connector.cpp | 46 ++++++++++--------- .../service/src/device_manager_service.cpp | 2 +- .../src/relationshipsyncmgr/dm_comm_tool.cpp | 2 +- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index 66a809a34..2d7890f66 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -1621,19 +1621,23 @@ void DeviceProfileConnector::HandleSyncBackgroundUserIdEvent(const std::vector profiles = GetAllAccessControlProfile(); std::vector activeProfiles; std::vector inActiveProfiles; + std::vector delActiveProfiles; for (auto &item : profiles) { if (std::find(deviceVec.begin(), deviceVec.end(), item.GetTrustDeviceId()) == deviceVec.end()) { continue; } if ((item.GetAccesser().GetAccesserDeviceId() == localUdid && (find(backgroundUserIds.begin(), backgroundUserIds.end(), - item.GetAccesser().GetAccesserUserId()) != backgroundUserIds.end()) && item.GetStatus() == ACTIVE) || + item.GetAccesser().GetAccesserUserId()) != backgroundUserIds.end())) || (item.GetAccessee().GetAccesseeDeviceId() == localUdid && (find(backgroundUserIds.begin(), backgroundUserIds.end(), - item.GetAccessee().GetAccesseeUserId()) != backgroundUserIds.end()) && item.GetStatus() == ACTIVE)) { - item.SetStatus(INACTIVE); - inActiveProfiles.push_back(item); + item.GetAccessee().GetAccesseeUserId()) != backgroundUserIds.end()))) { + if (item.GetStatus() == ACTIVE) { + item.SetStatus(INACTIVE); + inActiveProfiles.push_back(item); + } + if (item.GetBindType() != DM_IDENTICAL_ACCOUNT) { + delActiveProfiles.push_back(item); + } continue; } if ((item.GetAccesser().GetAccesserDeviceId() == localUdid && @@ -1893,15 +1905,7 @@ int32_t DeviceProfileConnector::HandleUserSwitched(const std::string &localUdid, continue; } } - for (auto &item : inActiveProfiles) { - DistributedDeviceProfileClient::GetInstance().UpdateAccessControlProfile(item); - if (item.GetBindType() != DM_IDENTICAL_ACCOUNT) { - DistributedDeviceProfileClient::GetInstance().DeleteAccessControlProfile(item.GetAccessControlId()); - } - } - for (auto &item : activeProfiles) { - DistributedDeviceProfileClient::GetInstance().UpdateAccessControlProfile(item); - } + HandleUserSwitched(activeProfiles, inActiveProfiles, delActiveProfiles); return DM_OK; } diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index 493f45f55..7c9108569 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -2209,7 +2209,7 @@ void DeviceManagerService::HandleUserIdsBroadCast(const std::vector int32_t retFront = MultipleUserConnector::GetForegroundUserIds(foregroundUserVec); int32_t retBack = MultipleUserConnector::GetBackgroundUserIds(backgroundUserVec); if (IsPC()) { - MultipleUserConnector::ClearLockedUser(foregroundUserVec, backgroundUserVec); + MultipleUserConnector::ClearLockedUser(foregroundUserVec); } if (retFront != DM_OK || retBack!= DM_OK) { LOGE("Get userid failed, retFront: %{public}d, retBack: %{public}d, frontUserNum:%{public}d," diff --git a/services/service/src/relationshipsyncmgr/dm_comm_tool.cpp b/services/service/src/relationshipsyncmgr/dm_comm_tool.cpp index 01a64b672..5fb82c255 100644 --- a/services/service/src/relationshipsyncmgr/dm_comm_tool.cpp +++ b/services/service/src/relationshipsyncmgr/dm_comm_tool.cpp @@ -213,7 +213,7 @@ void DMCommTool::ProcessReceiveUserIdsEvent(const std::shared_ptr MultipleUserConnector::GetForegroundUserIds(foregroundUserIds); MultipleUserConnector::GetBackgroundUserIds(backgroundUserIds); if (DeviceManagerService::GetInstance().IsPC()) { - MultipleUserConnector::ClearLockedUser(foregroundUserIds, backgroundUserIds); + MultipleUserConnector::ClearLockedUser(foregroundUserIds); } std::vector foregroundUserIdsU32; std::vector backgroundUserIdsU32; -- Gitee