summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjason westover <jwestover@nvidia.com>2024-09-08 01:07:55 +0300
committerjason westover <jwestover@nvidia.com>2024-12-04 06:36:15 +0300
commitc15672993166fd670ed832eb8da83c36537530c4 (patch)
treef5d0b0ab7d06f3934ba92b1ee53e6192009c6c94
parentb44986729febcefc75a669d16dda5d081473b3aa (diff)
downloadwebui-vue-c15672993166fd670ed832eb8da83c36537530c4.tar.xz
Update to api function for MessageID
Update to api function for MessageIDs - PaswordChangeRequired This patch is just a small tweak while still assuming the current X.Y.Z version format. When searching for a standard Registry string from @Message.ExtendedInfo -which is an array of Message objects-, we should stick to the default namespace. For example, if someone added OpenBMC.0.5.0.PaswordChangeRequired it could be erroneous to assume that it has the same meaning, since semantically it is a different message. For our use, trying to do something useful with version portion seems problematic, so I am fine with ignoring them as already done with code being updated here. The search function has been made generic to allow reuse, and some IntelliSense sugar was added. Tested, as Paul documented: Tested: logging in, navigating, logging out with non-expired password. Logging in, navigating, then running `passwd -e <accountname>` via ssh leads to functional password change page on the next request and then navigating proceeds normally, and logging out too. If password is expired before logging in the user gets redirected to the password change page automatically after logging in. Change-Id: I306ace2024efea13f25e24528a048d0955b2f95b Signed-off-by: j-westover <jwestover@nvidia.com>
-rw-r--r--src/store/api.js23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/store/api.js b/src/store/api.js
index 0e119c287..3ea17b981 100644
--- a/src/store/api.js
+++ b/src/store/api.js
@@ -93,11 +93,28 @@ export const getResponseCount = (responses) => {
};
export const isPasswordExpired = (data) => {
+ return !!findMessageId(data, 'PasswordChangeRequired');
+};
+
+/**
+ * Returns the first ExtendedInfo.Message to start with the
+ * Registry Name (Default: "Base") and end with the given key
+ * Ignore versions (.<X>.<Y>) --or-- (.<X>.<Y>.<Z>.),
+ * but adhere to Registry namespace
+ * @param {object} data - AxiosResponse.data
+ * @param { {MessageKey: string}} key - key into the message registry
+ * @param { {MessageRegistryPrefix: string}} [registry=Base] - the name of the
+ * message registry, undefined param defaults to "Base"
+ * @returns {ExtendedInfo.Message} ExtendedInfo.Message | undefined
+ */
+export const findMessageId = (data, key, registry = 'Base') => {
let extInfoMsgs = data?.['@Message.ExtendedInfo'];
+
return (
extInfoMsgs &&
- extInfoMsgs.find(
- (i) => i.MessageId.split('.')[4] === 'PasswordChangeRequired',
- )
+ extInfoMsgs.find((i) => {
+ const words = i.MessageId.split('.');
+ return words[words.length - 1] === key && words[0] === registry;
+ })
);
};