647
647
---- ------------
648
648
-- User Table --
649
649
---- ------------
650
- local function add_user_to_table (device , userIdx , usrType )
650
+ local function add_user_to_table (device , userIdx , userName , userType )
651
651
-- Get latest user table
652
652
local user_table = utils .deep_copy (device :get_latest_state (
653
653
" main" ,
@@ -657,11 +657,11 @@ local function add_user_to_table(device, userIdx, usrType)
657
657
))
658
658
659
659
-- Add new entry to table
660
- table.insert (user_table , {userIndex = userIdx , userType = usrType })
660
+ table.insert (user_table , {userIndex = userIdx , userName = userName , userType = userType })
661
661
device :emit_event (capabilities .lockUsers .users (user_table , {visibility = {displayed = false }}))
662
662
end
663
663
664
- local function update_user_in_table (device , userIdx , usrType )
664
+ local function update_user_in_table (device , userIdx , userName , userType )
665
665
-- Get latest user table
666
666
local user_table = utils .deep_copy (device :get_latest_state (
667
667
" main" ,
@@ -681,7 +681,8 @@ local function update_user_in_table(device, userIdx, usrType)
681
681
682
682
-- Update user entry
683
683
if i ~= 0 then
684
- user_table [i ].userType = usrType
684
+ user_table [i ].userType = userType
685
+ user_table [i ].userName = userName
685
686
device :emit_event (capabilities .lockUsers .users (user_table , {visibility = {displayed = false }}))
686
687
end
687
688
end
@@ -1188,7 +1189,7 @@ local function handle_update_user(driver, device, command)
1188
1189
local cmdName = " updateUser"
1189
1190
local userIdx = command .args .userIndex
1190
1191
local userName = command .args .userName
1191
- local userType = command .args .lockUserType
1192
+ local userType = command .args .userType
1192
1193
local userTypeMatter = DoorLock .types .UserTypeEnum .UNRESTRICTED_USER
1193
1194
if userType == " guest" then
1194
1195
userTypeMatter = DoorLock .types .UserTypeEnum .SCHEDULE_RESTRICTED_USER
@@ -1215,6 +1216,7 @@ local function handle_update_user(driver, device, command)
1215
1216
-- Save values to field
1216
1217
device :set_field (lock_utils .COMMAND_NAME , cmdName , {persist = true })
1217
1218
device :set_field (lock_utils .USER_INDEX , userIdx , {persist = true })
1219
+ device :set_field (lock_utils .USER_NAME , userName , {persist = true })
1218
1220
device :set_field (lock_utils .USER_TYPE , userType , {persist = true })
1219
1221
1220
1222
-- Send command
@@ -1325,6 +1327,7 @@ local function set_user_response_handler(driver, device, ib, response)
1325
1327
-- Get result
1326
1328
local cmdName = device :get_field (lock_utils .COMMAND_NAME )
1327
1329
local userIdx = device :get_field (lock_utils .USER_INDEX )
1330
+ local userName = device :get_field (lock_utils .USER_NAME )
1328
1331
local userType = device :get_field (lock_utils .USER_TYPE )
1329
1332
local status = " success"
1330
1333
if ib .status == DoorLock .types .DlStatus .FAILURE then
@@ -1338,9 +1341,9 @@ local function set_user_response_handler(driver, device, ib, response)
1338
1341
-- Update User in table
1339
1342
if status == " success" then
1340
1343
if cmdName == " addUser" then
1341
- add_user_to_table (device , userIdx , userType )
1344
+ add_user_to_table (device , userIdx , userName , userType )
1342
1345
elseif cmdName == " updateUser" then
1343
- update_user_in_table (device , userIdx , userType )
1346
+ update_user_in_table (device , userIdx , userName , userType )
1344
1347
end
1345
1348
else
1346
1349
device .log .warn (string.format (" Failed to set user: %s" , status ))
@@ -1614,7 +1617,7 @@ local function set_pin_response_handler(driver, device, ib, response)
1614
1617
1615
1618
-- If user is added also, update User table
1616
1619
if userIdx == nil then
1617
- add_user_to_table (device , elements .user_index .value , userType )
1620
+ add_user_to_table (device , elements .user_index .value , nil , userType )
1618
1621
end
1619
1622
1620
1623
-- Update Credential table
@@ -1762,7 +1765,7 @@ local function set_issuer_key_response_handler(driver, device, ib, response)
1762
1765
-- If user is added also, update User table
1763
1766
if userIdx == nil then
1764
1767
userIdx = elements .user_index .value
1765
- add_user_to_table (device , userIdx , " adminMember" )
1768
+ add_user_to_table (device , userIdx , nil , " adminMember" )
1766
1769
end
1767
1770
1768
1771
-- Update Aliro table
@@ -1885,7 +1888,7 @@ local function set_endpoint_key_response_handler(driver, device, ib, response)
1885
1888
-- If user is added also, update User table
1886
1889
if userIdx == nil then
1887
1890
userIdx = elements .user_index .value
1888
- add_user_to_table (device , userIdx , " adminMember" )
1891
+ add_user_to_table (device , userIdx , nil , " adminMember" )
1889
1892
end
1890
1893
1891
1894
-- Update Aliro table
@@ -2103,8 +2106,10 @@ local function delete_pin_response_handler(driver, device, ib, response)
2103
2106
local userIdx = 0
2104
2107
if status == " success" then
2105
2108
userIdx = delete_credential_from_table (device , credIdx )
2106
- if userIdx == 0 then
2107
- userIdx = nil
2109
+ if userIdx ~= 0 and has_credentials (device , userIdx ) == false then
2110
+ delete_user_from_table (device , userIdx )
2111
+ delete_week_schedule_from_table_as_user (device , userIdx )
2112
+ delete_year_schedule_from_table_as_user (device , userIdx )
2108
2113
end
2109
2114
else
2110
2115
device .log .warn (string.format (" Failed to clear credential: %s" , status ))
@@ -2147,12 +2152,11 @@ local function clear_issuer_key_response_handler(driver, device, ib, response)
2147
2152
-- if status is success, delete entry from table
2148
2153
if status == " success" then
2149
2154
delete_aliro_from_table (device , userIdx , " issuerKey" , nil )
2150
- end
2151
-
2152
- if has_credentials (device , userIdx ) == false then
2153
- delete_user_from_table (device , userIdx )
2154
- delete_week_schedule_from_table_as_user (device , userIdx )
2155
- delete_year_schedule_from_table_as_user (device , userIdx )
2155
+ if has_credentials (device , userIdx ) == false then
2156
+ delete_user_from_table (device , userIdx )
2157
+ delete_week_schedule_from_table_as_user (device , userIdx )
2158
+ delete_year_schedule_from_table_as_user (device , userIdx )
2159
+ end
2156
2160
end
2157
2161
2158
2162
-- Update commandResult
@@ -2191,6 +2195,11 @@ local function clear_endpoint_key_response_handler(driver, device, ib, response)
2191
2195
-- if status is success, delete entry from table
2192
2196
if status == " success" then
2193
2197
delete_aliro_from_table (device , userIdx , keyType , deviceKeyId )
2198
+ if has_credentials (device , userIdx ) == false then
2199
+ delete_user_from_table (device , userIdx )
2200
+ delete_week_schedule_from_table_as_user (device , userIdx )
2201
+ delete_year_schedule_from_table_as_user (device , userIdx )
2202
+ end
2194
2203
end
2195
2204
2196
2205
-- Update commandResult
0 commit comments