/* * Copyright (C) 2024 Red Hat, Inc. * SPDX-License-Identifier: LGPL-2.1-or-later */ import { getCanChangeRootPassword, getCheckAdminUserExists, getIsRootAccountLocked, getIsRootPasswordSet, getUsers, } from "../apis/users.js"; import { parseAnacondaConfBool } from "../helpers/conf.js"; import { canModifyRootConfiguration, canModifyUserConfiguration } from "../helpers/users.js"; export const setUsersAction = (payload) => ({ payload, type: "SET_USERS", }); /** * Patch users slice from the Accounts UI (draft first user, root passwords, etc.). */ export const applyUsersPatch = (patch = {}) => (dispatch) => { const { firstUser, ...rest } = patch; const payload = { ...rest }; if (firstUser !== undefined) { payload.firstUser = firstUser; } if (Object.keys(payload).length > 0) { dispatch(setUsersAction(payload)); } }; export const setUserConfigurationPolicyAction = (policy) => ({ payload: policy, type: "SET_USER_CONFIGURATION_POLICY", }); export const getUserConfigurationPolicyAction = (args = {}) => async (dispatch) => { const { automatedInstall, conf } = args; const canChangeRoot = parseAnacondaConfBool(conf?.["User Interface"]?.can_change_root); const canChangeUsers = parseAnacondaConfBool(conf?.["User Interface"]?.can_change_users); const [users, canChangeRootPassword] = await Promise.all([ getUsers(), getCanChangeRootPassword(), ]); const userList = users ?? []; const usersSpecifiedByKickstart = userList.length > 0; dispatch(setUserConfigurationPolicyAction({ canModifyRootConfiguration: canModifyRootConfiguration({ automatedInstall: !!automatedInstall, canChangeRoot, canChangeRootPassword: !!canChangeRootPassword, }), canModifyUserConfiguration: canModifyUserConfiguration({ canChangeUsers, usersSpecifiedByKickstart, }), })); }; export const getAdminUserExistsAction = () => async (dispatch) => { const adminUserExists = await getCheckAdminUserExists(); dispatch(setUsersAction({ adminUserExists: !!adminUserExists })); }; export const getUsersAction = () => async (dispatch) => { const [users, isRootAccountLocked, isRootPasswordSet] = await Promise.all([ getUsers(), getIsRootAccountLocked(), getIsRootPasswordSet(), ]); const userList = users ?? []; dispatch(setUsersAction({ isRootEnabled: !isRootAccountLocked, isRootPasswordSet: !!isRootPasswordSet, users: userList, })); };