Comparison

plugins/mod_auth_internal_hashed.lua @ 12646:3f38f4735c7a

usermanager, mod_auth_*: Add get_account_info() returning creation/update time This is useful for a number of things. For example, listing users that need to rotate their passwords after some event. It also provides a safer way for code to determine that a user password has changed without needing to set a handler for the password change event (which is a more fragile approach).
author Matthew Wild <mwild1@gmail.com>
date Tue, 12 Jul 2022 13:14:47 +0100
parent 12355:a0ff5c438e9d
child 12669:aed38948791f
comparison
equal deleted inserted replaced
12645:a741183eec97 12646:3f38f4735c7a
84 84
85 account.stored_key = stored_key_hex 85 account.stored_key = stored_key_hex
86 account.server_key = server_key_hex 86 account.server_key = server_key_hex
87 87
88 account.password = nil; 88 account.password = nil;
89 account.updated = os.time();
89 return accounts:set(username, account); 90 return accounts:set(username, account);
90 end 91 end
91 return nil, "Account not available."; 92 return nil, "Account not available.";
93 end
94
95 function provider.get_account_info(username)
96 local account = accounts:get(username);
97 if not account then return nil, "Account not available"; end
98 return {
99 created = account.created;
100 password_updated = account.updated;
101 };
92 end 102 end
93 103
94 function provider.user_exists(username) 104 function provider.user_exists(username)
95 local account = accounts:get(username); 105 local account = accounts:get(username);
96 if not account then 106 if not account then
113 if not valid then 123 if not valid then
114 return valid, stored_key; 124 return valid, stored_key;
115 end 125 end
116 local stored_key_hex = to_hex(stored_key); 126 local stored_key_hex = to_hex(stored_key);
117 local server_key_hex = to_hex(server_key); 127 local server_key_hex = to_hex(server_key);
128 local now = os.time();
118 return accounts:set(username, { 129 return accounts:set(username, {
119 stored_key = stored_key_hex, server_key = server_key_hex, 130 stored_key = stored_key_hex, server_key = server_key_hex,
120 salt = salt, iteration_count = default_iteration_count 131 salt = salt, iteration_count = default_iteration_count,
132 created = now, updated = now;
121 }); 133 });
122 end 134 end
123 135
124 function provider.delete_user(username) 136 function provider.delete_user(username)
125 return accounts:set(username, nil); 137 return accounts:set(username, nil);