Skip to content

Commit 81aec8a

Browse files
committed
Fix clearing up Door Lock users and credentials
Properly clear user/credential by setting status to Available and clearing other attributes when removing user/credential during `OnFabricRemoved`. Signed-off-by: Adrian Gielniewski <adrian.gielniewski@nordicsemi.no>
1 parent ee95bd2 commit 81aec8a

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/app/clusters/door-lock-server/door-lock-server.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -2173,6 +2173,16 @@ bool DoorLockServer::clearFabricFromUsers(chip::EndpointId endpointId, chip::Fab
21732173
user.lastModifiedBy = kUndefinedFabricIndex;
21742174
}
21752175

2176+
if (user.createdBy == kUndefinedFabricIndex && user.lastModifiedBy == kUndefinedFabricIndex)
2177+
{
2178+
user.userName = ""_span;
2179+
user.userUniqueId = 0;
2180+
user.userStatus = UserStatusEnum::kAvailable;
2181+
user.userType = UserTypeEnum::kUnrestrictedUser;
2182+
user.credentialRule = CredentialRuleEnum::kSingle;
2183+
user.credentials = {};
2184+
}
2185+
21762186
if (!emberAfPluginDoorLockSetUser(endpointId, userIndex, user.createdBy, user.lastModifiedBy, user.userName,
21772187
user.userUniqueId, user.userStatus, user.userType, user.credentialRule,
21782188
user.credentials.data(), user.credentials.size()))
@@ -3309,6 +3319,12 @@ bool DoorLockServer::clearFabricFromCredentials(chip::EndpointId endpointId, Cre
33093319
credential.lastModifiedBy = kUndefinedFabricIndex;
33103320
}
33113321

3322+
if (credential.createdBy == kUndefinedFabricIndex && credential.lastModifiedBy == kUndefinedFabricIndex)
3323+
{
3324+
credential.status = DlCredentialStatus::kAvailable;
3325+
credential.credentialData = {};
3326+
}
3327+
33123328
if (!emberAfPluginDoorLockSetCredential(endpointId, credentialIndex, credential.createdBy, credential.lastModifiedBy,
33133329
credential.status, credential.credentialType, credential.credentialData))
33143330
{

0 commit comments

Comments
 (0)