Skip to main content

AppsUser Component

Overview​

The AppsUser component is a user settings dialog in Liberty Core. It allows users to manage personal settings such as themes, notifications, UI display mode, and authentication. This component is integrated within the AppProvider and can be overridden by defining a custom getUser function.

It supports:

  • Authentication & User Roles
  • Personalization (theme, language, dashboard)
  • Dark Mode & UI Preferences
  • Notification Settings
  • Overridable API for custom user data

Props​

PropTypeDescription
openDialogbooleanControls whether the settings dialog is open.
setOpenDialog(state: boolean) => voidFunction to toggle the settings dialog.
onToggleDarkMode() => voidToggles between light and dark modes.

Example Usage​

import React, { useState } from "react";
import { AppsUser } from "@nomana-it/liberty-core"
import { Button } from "@ly_common/Button";

export const UserSettingsDialogExample = () => {
const [isUserDialogOpen, setUserDialogOpen] = useState(false);

return (
<>
<Button onClick={() => setUserDialogOpen(true)}>Open User Settings</Button>
<AppsUser
openDialog={isUserDialogOpen}
setOpenDialog={setUserDialogOpen}
onToggleDarkMode={() => console.log("Dark mode toggled")}
/>
</>
);
};

How It Works​

  1. Clicking the "Open User Settings" button opens the AppsUser dialog.
  2. The user can modify their preferences inside the modal.
  3. The changes persist, and dark mode updates dynamically when toggled.

Overriding User Data​

By default, AppsUser retrieves user settings internally. However, you can override the user retrieval logic with a custom getUser function.

Example User Data​

import { EUsers, IUsersProps, UIDisplayMode } from "@nomana-it/liberty-core"

export const user = [
{
"USR_ID": "admin",
"USR_PASSWORD": "admin",
"USR_NAME": "Administrator",
"USR_EMAIL": "admin@liberty.fr",
"USR_STATUS": "Y",
"USR_ADMIN": "Y",
"USR_LANGUAGE": "en",
"USR_MODE": "dark",
"USR_READONLY": "N",
"USR_DASHBOARD": 1,
"USR_THEME": "liberty"
},
{
"USR_ID": "demo",
"USR_PASSWORD": "demo",
"USR_NAME": "Demo User",
"USR_EMAIL": "demo@liberty.fr",
"USR_STATUS": "Y",
"USR_ADMIN": "Y",
"USR_LANGUAGE": "en",
"USR_MODE": "dark",
"USR_READONLY": "N",
"USR_DASHBOARD": 1,
"USR_THEME": "liberty"
}
];

export const getUser = async (user_id: string) => {
const current_user = user.find((user: any) => user.USR_ID === user_id);
if (!current_user) {
return {
"items": [],
"status": "failed",
};
}
return {
"items": [current_user],
"status": "success",
};
};

export const currentUser: IUsersProps = {
[EUsers.status]: true,
[EUsers.id]: "demo",
[EUsers.name]: "Demo User",
[EUsers.email]: "demo@liberty.fr",
[EUsers.password]: "",
[EUsers.admin]: "Y",
[EUsers.language]: "en",
[EUsers.displayMode]: UIDisplayMode.dark,
[EUsers.darkMode]: true,
[EUsers.readonly]: "N",
[EUsers.dashboard]: undefined,
[EUsers.theme]: "liberty"
};

How to Override in AppProvider​

To override the default user data, pass the function when setting up AppProvider:

<AppProvider
getModules={getModules}
getApplications={getApplications}
getToken={getToken}
getUser={async () => getUser} // Override default user retrieval
getMenus={getMenus}
getDashboard={getDashboard}
>
<AppsContent />
</AppProvider>

By overriding getUser, you can:

  • Customize authentication logic (e.g., external APIs, LDAP, etc.).
  • Implement different role-based configurations.
  • Dynamically fetch user preferences from external services.

🔗 GitHub Repository (Core): Liberty Core
🔗 GitHub Repository (Test Project): Liberty Test
📖 Live Documentation: Liberty Core Docs
💖 Sponsor & Support: Sponsor Liberty Core