@firecms/user_management 3.1.0 → 3.2.0-canary.44dc65b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/utils/permissions.ts","../src/utils/local_storage.ts","../src/utils/colors.ts","../src/hooks/useBuildUserManagement.tsx","../src/UserManagementProvider.tsx","../src/hooks/useUserManagement.tsx","../src/components/roles/RoleChip.tsx","../src/components/roles/RolesDetailsForm.tsx","../src/components/roles/default_roles.tsx","../src/components/roles/RolesTable.tsx","../src/components/roles/RolesView.tsx","../src/components/users/UserDetailsForm.tsx","../src/components/users/UsersTable.tsx","../src/components/users/UsersView.tsx","../src/useUserManagementPlugin.tsx","../src/admin_views.tsx"],"sourcesContent":["import { EntityCollection, Permissions, Role, User } from \"@firecms/core\";\n\nexport const RESERVED_GROUPS = [\"Admin\"];\n\nconst DEFAULT_PERMISSIONS = {\n read: false,\n edit: false,\n create: false,\n delete: false\n};\n\nexport function resolveUserRolePermissions<USER extends User>\n({\n collection,\n user\n }: {\n collection: EntityCollection<any>,\n user: USER | null\n}): Permissions {\n\n const roles = user?.roles;\n if (!roles) {\n return DEFAULT_PERMISSIONS;\n } else if (collection.ownerId === user?.uid) {\n return {\n read: true,\n create: true,\n edit: true,\n delete: true\n };\n } else {\n const basePermissions = {\n read: false,\n create: false,\n edit: false,\n delete: false\n };\n\n return roles\n .map(role => resolveCollectionRole(role, collection.id))\n .reduce(mergePermissions, basePermissions);\n }\n}\n\nfunction resolveCollectionRole(role: Role, id: string): Permissions {\n\n const basePermissions = {\n read: (role.isAdmin || role.defaultPermissions?.read) ?? false,\n create: (role.isAdmin || role.defaultPermissions?.create) ?? false,\n edit: (role.isAdmin || role.defaultPermissions?.edit) ?? false,\n delete: (role.isAdmin || role.defaultPermissions?.delete) ?? false\n };\n const thisCollectionPermissions = role.collectionPermissions?.[id];\n if (thisCollectionPermissions) {\n return mergePermissions(thisCollectionPermissions, basePermissions);\n } else if (role.defaultPermissions) {\n return mergePermissions(role.defaultPermissions, basePermissions);\n } else {\n return basePermissions;\n }\n}\n\nconst mergePermissions = (permA: Permissions, permB: Permissions) => {\n return {\n read: permA.read || permB.read,\n create: permA.create || permB.create,\n edit: permA.edit || permB.edit,\n delete: permA.delete || permB.delete\n };\n}\n\nexport function getUserRoles(roles: Role[], fireCMSUser: User): Role[] | undefined {\n return !roles\n ? undefined\n : (fireCMSUser.roles\n ? fireCMSUser.roles\n .map(role => roles.find((r) => r.id === role.id))\n .filter(Boolean) as Role[]\n : []);\n}\n\nexport const areRolesEqual = (rolesA: Role[], rolesB: Role[]) => {\n const rolesAIds = rolesA.map(r => r.id);\n const rolesBIds = rolesB.map(r => r.id);\n return rolesAIds.length === rolesB.length && rolesAIds.every((role) => rolesBIds.includes(role));\n}\n","// const tokens = new Map<string, {\n// token: string,\n// expiry: Date\n// }>();\n\nexport function cacheDelegatedLoginToken(projectId: string, delegatedToken?: string) {\n if (!delegatedToken) {\n return;\n }\n\n const data = parseJwt(delegatedToken);\n // @ts-ignore\n const expiry = new Date(data.exp * 1000);\n localStorage.setItem(`auth_token::${projectId}`, JSON.stringify({\n token: delegatedToken,\n expiry\n }));\n\n}\n\nexport function getDelegatedLoginTokenFromCache(projectId: string) {\n const entry = localStorage.getItem(`auth_token::${projectId}`);\n if (entry) {\n const data = JSON.parse(entry);\n data.expiry = new Date(data.expiry);\n if (data.expiry > new Date()) {\n return data.token;\n }\n }\n return undefined;\n}\n\nexport function clearDelegatedLoginTokensCache() {\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(\"auth_token::\")) {\n localStorage.removeItem(key);\n }\n }\n}\n\nfunction parseJwt(token?: string): object {\n if (!token) {\n throw new Error(\"No JWT token\");\n }\n const base64Url = token.split(\".\")[1];\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const jsonPayload = decodeURIComponent(window.atob(base64).split(\"\").map(function (c) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(\"\"));\n\n return JSON.parse(jsonPayload);\n}\n","export function darkenColor(hexColor: string, darkenBy = 10): string {\n // Check input validity\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(hexColor)) {\n throw new Error(\"Invalid color format\");\n }\n\n // If shorthand form, convert to full form\n let color = hexColor.substring(1).split(\"\");\n if (color.length === 3) {\n color = [color[0], color[0], color[1], color[1], color[2], color[2]];\n }\n\n // Convert to RGB values\n let r = parseInt(color[0] + color[1], 16);\n let g = parseInt(color[2] + color[3], 16);\n let b = parseInt(color[4] + color[5], 16);\n\n // Reduce each color component by the specified percentage (darkenBy)\n r = Math.floor(r * (1 - darkenBy / 100));\n g = Math.floor(g * (1 - darkenBy / 100));\n b = Math.floor(b * (1 - darkenBy / 100));\n\n // Recombine into hex and return\n return \"#\" +\n (r < 16 ? \"0\" : \"\") + r.toString(16) +\n (g < 16 ? \"0\" : \"\") + g.toString(16) +\n (b < 16 ? \"0\" : \"\") + b.toString(16);\n}\n\nexport function hexToRgbaWithOpacity(hexColor: string, opacity = 10): string {\n // Check input validity\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(hexColor)) {\n throw new Error(\"Invalid color format\");\n }\n\n // If shorthand form, convert to full form\n let color = hexColor.substring(1).split(\"\");\n if (color.length === 3) {\n color = [color[0], color[0], color[1], color[1], color[2], color[2]];\n }\n\n // Convert to RGB values\n const r = parseInt(color[0] + color[1], 16);\n const g = parseInt(color[2] + color[3], 16);\n const b = parseInt(color[4] + color[5], 16);\n\n // Convert opacity to a decimal for CSS\n const alpha = opacity / 100;\n\n // Construct and return the RGBA color\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import React, { useCallback, useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { UserManagement } from \"../types\";\nimport {\n AuthController,\n Authenticator,\n DataSourceDelegate,\n Entity,\n PermissionsBuilder,\n removeUndefined,\n Role,\n User\n} from \"@firecms/core\";\nimport { resolveUserRolePermissions } from \"../utils\";\n\ntype UserWithRoleIds<USER extends User = any> = Omit<USER, \"roles\"> & { roles: string[] };\n\nexport interface UserManagementParams<CONTROLLER extends AuthController<any> = AuthController<any>> {\n\n authController: CONTROLLER;\n\n /**\n * The delegate in charge of persisting the data.\n */\n dataSourceDelegate?: DataSourceDelegate;\n\n /**\n * Path where the plugin users configuration is stored.\n * Default: __FIRECMS/config/users\n * You can specify a different path if you want to store the user management configuration in a different place.\n * Please keep in mind that the FireCMS users are not necessarily the same as the Firebase users (but they can be).\n * The path should be relative to the root of the database, and should always have an odd number of segments.\n */\n usersPath?: string;\n\n /**\n * Path where the plugin roles configuration is stored.\n * Default: __FIRECMS/config/roles\n */\n rolesPath?: string;\n\n /**\n * The roles that are available in the user management system.\n * If you provide this, the user management system will not fetch the roles from the database.\n */\n roles?: Role[];\n\n /**\n * If there are no roles in the database, provide a button to create the default roles.\n */\n allowDefaultRolesCreation?: boolean;\n\n /**\n * Include the collection config permissions in the user management system.\n */\n includeCollectionConfigPermissions?: boolean;\n\n}\n\n/**\n * This hook is used to build a user management object that can be used to\n * manage users and roles in a Firestore backend.\n * @param authController\n * @param dataSourceDelegate\n * @param usersPath\n * @param rolesPath\n * @param roles\n * @param allowDefaultRolesCreation\n * @param includeCollectionConfigPermissions\n */\nexport function useBuildUserManagement<CONTROLLER extends AuthController<any> = AuthController<any>,\n USER extends User = CONTROLLER extends AuthController<infer U> ? U : any>\n({\n authController,\n dataSourceDelegate,\n roles: rolesProp,\n usersPath = \"__FIRECMS/config/users\",\n rolesPath = \"__FIRECMS/config/roles\",\n allowDefaultRolesCreation,\n includeCollectionConfigPermissions\n }: UserManagementParams<CONTROLLER>): UserManagement<USER> & CONTROLLER {\n\n if (!authController) {\n throw Error(\"useBuildUserManagement: You need to provide an authController since version 3.0.0-beta.11. Check https://firecms.co/docs/pro/migrating_from_v3_beta\");\n }\n\n const rolesDefinedInCode = (rolesProp ?? [])?.length > 0;\n const [rolesLoading, setRolesLoading] = React.useState<boolean>(!rolesDefinedInCode);\n const [usersLoading, setUsersLoading] = React.useState<boolean>(true);\n const [roles, setRoles] = React.useState<Role[]>(rolesProp ?? []);\n const [usersWithRoleIds, setUsersWithRoleIds] = React.useState<UserWithRoleIds<USER>[]>([]);\n\n const users = usersWithRoleIds.map(u => ({\n ...u,\n roles: roles.filter(r => u.roles?.includes(r.id))\n }) as USER);\n\n const [rolesError, setRolesError] = React.useState<Error | undefined>();\n const [usersError, setUsersError] = React.useState<Error | undefined>();\n\n const _usersLoading = usersLoading;\n const _rolesLoading = rolesLoading;\n\n const loading = _rolesLoading || _usersLoading;\n\n useEffect(() => {\n if (rolesDefinedInCode) return;\n if (!dataSourceDelegate || !rolesPath) return;\n if (dataSourceDelegate.initialised !== undefined && !dataSourceDelegate.initialised) return;\n if (authController?.initialLoading) return;\n\n setRolesLoading(true);\n return dataSourceDelegate.listenCollection?.({\n path: rolesPath,\n onUpdate(entities: Entity<any>[]): void {\n setRolesError(undefined);\n console.debug(\"Updating roles\", entities);\n try {\n const newRoles = entityToRoles(entities);\n if (!equal(newRoles, roles)) {\n setRoles(newRoles);\n }\n } catch (e) {\n setRoles([]);\n console.error(\"Error loading roles\", e);\n setRolesError(e as Error);\n }\n setRolesLoading(false);\n },\n onError(e: any): void {\n setRoles([]);\n console.error(\"Error loading roles\", e);\n setRolesError(e);\n setRolesLoading(false);\n }\n });\n\n }, [rolesDefinedInCode, dataSourceDelegate?.initialised, authController?.initialLoading, authController?.user?.uid, rolesPath]);\n\n useEffect(() => {\n if (!dataSourceDelegate || !usersPath) return;\n if (dataSourceDelegate.initialised !== undefined && !dataSourceDelegate.initialised) {\n return;\n }\n if (authController?.initialLoading) {\n return;\n }\n\n setUsersLoading(true);\n return dataSourceDelegate.listenCollection?.({\n path: usersPath,\n onUpdate(entities: Entity<any>[]): void {\n console.debug(\"Updating users\", entities);\n setUsersError(undefined);\n try {\n const newUsers = entitiesToUsers(entities);\n // if (!equal(newUsers, usersWithRoleIds))\n setUsersWithRoleIds(newUsers);\n } catch (e) {\n setUsersWithRoleIds([]);\n console.error(\"Error loading users\", e);\n setUsersError(e as Error);\n }\n setUsersLoading(false);\n },\n onError(e: any): void {\n console.error(\"Error loading users\", e);\n setUsersWithRoleIds([]);\n setUsersError(e);\n setUsersLoading(false);\n }\n });\n\n }, [dataSourceDelegate?.initialised, authController?.initialLoading, authController?.user?.uid, usersPath]);\n\n const saveUser = useCallback(async (user: USER): Promise<USER> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!usersPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n\n console.debug(\"Persisting user\", user);\n\n const roleIds = user.roles?.map(r => r.id);\n const email = user.email?.toLowerCase().trim();\n if (!email) throw Error(\"Email is required\");\n\n const userExists = users.find(u => u.email?.toLowerCase() === email);\n const data = {\n ...user,\n roles: roleIds ?? []\n };\n if (!userExists) {\n // @ts-ignore\n data.created_on = new Date();\n }\n // delete the previous user entry if it exists and the uid has changed\n if (userExists && userExists.uid !== user.uid) {\n const entity: Entity<any> = {\n values: {},\n path: usersPath,\n id: userExists.uid\n }\n await dataSourceDelegate.deleteEntity({ entity })\n .then(() => {\n console.debug(\"Deleted previous user\", userExists);\n })\n .catch(e => {\n console.error(\"Error deleting user\", e);\n });\n\n }\n\n return dataSourceDelegate.saveEntity({\n status: \"existing\",\n path: usersPath,\n entityId: email,\n values: removeUndefined(data)\n }).then(() => user);\n }, [usersPath, dataSourceDelegate?.initialised]);\n\n const saveRole = useCallback((role: Role): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!rolesPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Persisting role\", role);\n const {\n id,\n ...roleData\n } = role;\n return dataSourceDelegate.saveEntity({\n status: \"existing\",\n path: rolesPath,\n entityId: id,\n values: removeUndefined(roleData)\n }).then(() => {\n return;\n });\n }, [rolesPath, dataSourceDelegate?.initialised]);\n\n const deleteUser = useCallback(async (user: User): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!usersPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Deleting\", user);\n const { uid } = user;\n const entity: Entity<any> = {\n path: usersPath,\n id: uid,\n values: {}\n };\n await dataSourceDelegate.deleteEntity({ entity })\n }, [usersPath, dataSourceDelegate?.initialised]);\n\n const deleteRole = useCallback(async (role: Role): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!rolesPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Deleting\", role);\n const { id } = role;\n const entity: Entity<any> = {\n path: rolesPath,\n id: id,\n values: {}\n };\n await dataSourceDelegate.deleteEntity({ entity })\n }, [rolesPath, dataSourceDelegate?.initialised]);\n\n const collectionPermissions: PermissionsBuilder = useCallback(({\n collection,\n user\n }) =>\n resolveUserRolePermissions({\n collection,\n user\n }), []);\n\n const defineRolesFor: ((user: User) => Role[] | undefined) = useCallback((user) => {\n if (!usersWithRoleIds) throw Error(\"Users not loaded\");\n const users = usersWithRoleIds.map(u => ({\n ...u,\n roles: roles.filter(r => u.roles?.includes(r.id))\n }) as User);\n const mgmtUser = users.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());\n return mgmtUser?.roles;\n }, [roles, usersWithRoleIds]);\n\n const authenticator: Authenticator<USER> = useCallback(({ user }) => {\n\n if (loading) {\n return false;\n }\n if (user === null) {\n console.warn(\"User is null, returning\");\n return false;\n }\n\n if (users.length === 0) {\n console.warn(\"No users created yet\");\n return true; // If there are no users created yet, we allow access to every user\n }\n\n const mgmtUser = users.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());\n if (mgmtUser) {\n // check if the uid or photoURL needs to be updated in the user management system\n const needsUidUpdate = mgmtUser.uid !== user.uid;\n const needsPhotoUpdate = user.photoURL && mgmtUser.photoURL !== user.photoURL;\n\n if (needsUidUpdate || needsPhotoUpdate) {\n const updateReason = needsUidUpdate ? \"uid\" : \"photoURL\";\n console.debug(`User ${updateReason} has changed, updating user in user management system`);\n saveUser({\n ...mgmtUser,\n uid: user.uid,\n ...(needsPhotoUpdate ? { photoURL: user.photoURL } : {})\n }).then(() => {\n console.debug(\"User updated in user management system\", mgmtUser);\n }).catch(e => {\n console.error(\"Error updating user in user management system\", e);\n });\n }\n console.debug(\"User found in user management system\", mgmtUser);\n return true;\n }\n\n throw Error(\"Could not find a user with the provided email in the user management system.\");\n }, [loading, users]);\n\n const userRoles = authController.user ? defineRolesFor(authController.user) : undefined;\n const isAdmin = (userRoles ?? []).some(r => r.id === \"admin\");\n\n const userRoleIds = userRoles?.map(r => r.id);\n useEffect(() => {\n console.debug(\"Setting user roles\", {\n userRoles,\n roles\n });\n authController.setUserRoles?.(userRoles ?? []);\n }, [userRoleIds]);\n\n const getUser = useCallback((uid: string): USER | null => {\n if (!users) return null;\n const user = users.find(u => u.uid === uid);\n return user ?? null;\n }, [users]);\n\n return {\n loading,\n roles,\n users,\n saveUser,\n saveRole,\n rolesError,\n deleteUser,\n deleteRole,\n usersError,\n isAdmin,\n allowDefaultRolesCreation: allowDefaultRolesCreation === undefined ? true : allowDefaultRolesCreation,\n includeCollectionConfigPermissions: Boolean(includeCollectionConfigPermissions),\n collectionPermissions,\n defineRolesFor,\n authenticator,\n ...authController,\n initialLoading: authController.initialLoading || loading,\n userRoles: userRoles,\n getUser,\n user: authController.user ? {\n ...authController.user,\n roles: userRoles\n } : null\n }\n}\n\nconst entitiesToUsers = (docs: Entity<Omit<UserWithRoleIds, \"id\">>[]): (UserWithRoleIds)[] => {\n return docs.map((doc) => {\n const data = doc.values as any;\n const newVar = {\n uid: doc.id,\n ...data,\n created_on: data?.created_on,\n updated_on: data?.updated_on\n };\n return newVar as (UserWithRoleIds);\n });\n}\n\nconst entityToRoles = (entities: Entity<Omit<Role, \"id\">>[]): Role[] => {\n return entities.map((doc) => ({\n id: doc.id,\n ...doc.values\n } as Role));\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { UserManagement } from \"./types\";\nimport { User } from \"@firecms/core\";\n\nexport const UserManagementContext = React.createContext<UserManagement<any>>({} as any);\n\nexport interface UserManagementProviderProps<U extends User = User> {\n userManagement: UserManagement<U>\n}\n\nexport function UserManagementProvider<U extends User = User>({\n children,\n userManagement\n }: PropsWithChildren<UserManagementProviderProps<U>>) {\n return (\n <UserManagementContext.Provider value={userManagement}>\n {children}\n </UserManagementContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { UserManagement } from \"../types\";\nimport { UserManagementContext } from \"../UserManagementProvider\";\nimport { User } from \"@firecms/core\";\nexport const useUserManagement = <USER extends User>() => useContext<UserManagement<USER>>(UserManagementContext);\n","import { Chip, getColorSchemeForSeed } from \"@firecms/ui\";\nimport { Role } from \"@firecms/core\";\n\nexport type RoleChipProps = {\n role: Role;\n}\n\nexport function RoleChip({ role }: RoleChipProps) {\n let colorScheme;\n if (role.isAdmin) {\n colorScheme = \"blueDarker\";\n } else if (role.id === \"editor\") {\n colorScheme = \"yellowLight\";\n } else if (role.id === \"viewer\") {\n colorScheme = \"grayLight\";\n } else {\n colorScheme = getColorSchemeForSeed(role.id);\n }\n\n return (\n <Chip\n colorScheme={colorScheme}\n key={role.id}>\n {role.name}\n </Chip>\n );\n\n}\n","import React, { useCallback, useState } from \"react\";\nimport * as Yup from \"yup\";\n\nimport { EntityCollection, FieldCaption, Role, toSnakeCase, useAuthController, User, } from \"@firecms/core\";\nimport {\n Button,\n Checkbox,\n CheckIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n LoadingButton,\n Paper,\n Select,\n SelectItem,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n TextField,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\nimport { useUserManagement } from \"../../hooks\";\nimport { Formex, getIn, useCreateFormex } from \"@firecms/formex\";\n\nexport const RoleYupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\")\n});\n\nfunction canRoleBeEdited(loggedUser: User) {\n const loggedUserIsAdmin = loggedUser.roles?.map(r => r.id).includes(\"admin\");\n if (!loggedUserIsAdmin) {\n throw new Error(\"Only admins can edit roles\");\n }\n\n return true;\n}\n\nexport function RolesDetailsForm({\n open,\n role,\n editable,\n handleClose,\n collections\n }: {\n open: boolean,\n editable?: boolean,\n role?: Role,\n handleClose: () => void,\n collections?: EntityCollection[]\n}) {\n\n const { saveRole } = useUserManagement();\n const isNewRole = !role;\n const {\n user: loggedInUser\n } = useAuthController();\n\n const [savingError, setSavingError] = useState<Error | undefined>();\n\n const onRoleUpdated = useCallback((role: Role) => {\n setSavingError(undefined);\n if (!loggedInUser) throw new Error(\"User not found\");\n canRoleBeEdited(loggedInUser);\n return saveRole(role);\n }, [saveRole, loggedInUser]);\n\n const formex = useCreateFormex({\n initialValues: role ?? {\n name: \"\"\n } as Role,\n onSubmit: (role: Role, formexController) => {\n try {\n return onRoleUpdated(role)\n .then(() => {\n formexController.resetForm({\n values: role\n });\n handleClose();\n })\n .catch(e => {\n setSavingError(e);\n });\n } catch (e: any) {\n setSavingError(e);\n return Promise.resolve();\n }\n },\n validation: (values) => {\n return RoleYupSchema.validate(values, { abortEarly: false })\n .then(() => ({}))\n .catch((e) => {\n const errors: Record<string, string> = {};\n e.inner.forEach((error: any) => {\n errors[error.path] = error.message;\n });\n return errors;\n });\n }\n\n });\n\n const {\n isSubmitting,\n touched,\n values,\n errors,\n handleChange,\n setFieldValue,\n dirty,\n setFieldTouched\n } = formex;\n\n const isAdmin = values.isAdmin ?? false;\n const defaultCreate = values.defaultPermissions?.create ?? false;\n const defaultRead = values.defaultPermissions?.read ?? false;\n const defaultEdit = values.defaultPermissions?.edit ?? false;\n const defaultDelete = values.defaultPermissions?.delete ?? false;\n\n React.useEffect(() => {\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && values.name) {\n setFieldValue(\"id\", toSnakeCase(values.name))\n }\n }, [touched, values.name]);\n\n return (\n <Dialog\n open={open}\n maxWidth={\"4xl\"}\n >\n <Formex value={formex}>\n <form noValidate\n autoComplete={\"off\"}\n onSubmit={formex.handleSubmit}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n height: \"100%\"\n }}>\n <DialogTitle variant={\"h4\"} gutterBottom={false}>\n Role\n </DialogTitle>\n <DialogContent className=\"flex-grow\">\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12 md:col-span-8\"}>\n <TextField\n name=\"name\"\n required\n error={touched.name && Boolean(errors.name)}\n value={values.name}\n disabled={isAdmin || !editable}\n onChange={handleChange}\n aria-describedby=\"name-helper-text\"\n label=\"Name\"\n />\n <FieldCaption>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this role\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <TextField\n name=\"id\"\n required\n error={touched.id && Boolean(errors.id)}\n value={values.id}\n disabled={!isNewRole || !editable}\n onChange={(e) => {\n handleChange(e);\n setFieldTouched(\"id\", true)\n }}\n aria-describedby=\"id-helper-text\"\n label=\"ID\"\n />\n <FieldCaption>\n {touched.id && Boolean(errors.id) ? errors.id : \"ID of this role\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Paper className=\"bg-inherit overflow-hidden\">\n <Table className={\"w-full rounded-md\"}>\n <TableHeader className={\"rounded-md\"}>\n <TableCell></TableCell>\n <TableCell\n align=\"center\">Create\n entities\n </TableCell>\n <TableCell\n align=\"center\">Read\n entities\n </TableCell>\n <TableCell\n align=\"center\">Update\n entities\n </TableCell>\n <TableCell\n align=\"center\">Delete\n entities\n </TableCell>\n <TableCell\n align=\"center\">\n </TableCell>\n </TableHeader>\n\n <TableBody>\n <TableRow>\n <TableCell\n scope=\"row\">\n <strong>All\n collections</strong>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title=\"Create entities in collections\">\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultCreate) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.create\", checked)}\n />\n </Tooltip>\n </TableCell>\n\n <TableCell\n align=\"center\">\n <Tooltip\n title=\"Access all data in every collection\">\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultRead) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.read\", checked)}\n />\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title=\"Update data in any collection\">\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultEdit) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.edit\", checked)}\n />\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title=\"Delete data in any collection\">\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultDelete) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.delete\", checked)}\n />\n\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n </TableCell>\n </TableRow>\n {collections && collections.map((col) => (\n <TableRow key={col.name}>\n <TableCell\n scope=\"row\">\n {col.name}\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultCreate || !editable}\n checked={(isAdmin || defaultCreate || getIn(values, `collectionPermissions.${col.id}.create`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.create`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultRead || !editable}\n checked={(isAdmin || defaultRead || getIn(values, `collectionPermissions.${col.id}.read`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.read`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultEdit || !editable}\n checked={(isAdmin || defaultEdit || getIn(values, `collectionPermissions.${col.id}.edit`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.edit`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultDelete || !editable}\n checked={(isAdmin || defaultDelete || getIn(values, `collectionPermissions.${col.id}.delete`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.delete`, checked)}/>\n </TableCell>\n\n <TableCell\n align=\"center\">\n <Tooltip\n title=\"Allow all permissions in this collections\">\n <Button\n className={\"color-inherit\"}\n onClick={() => {\n setFieldValue(`collectionPermissions.${col.id}.create`, true);\n setFieldValue(`collectionPermissions.${col.id}.read`, true);\n setFieldValue(`collectionPermissions.${col.id}.edit`, true);\n setFieldValue(`collectionPermissions.${col.id}.delete`, true);\n }}\n disabled={isAdmin || !editable}\n variant={\"text\"}>\n All\n </Button>\n\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Paper>\n <FieldCaption>\n You can customise the permissions\n that the users related to this\n role can perform in the entities\n of each collection\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n error={touched.config && Boolean(errors.config)}\n size={\"large\"}\n fullWidth={true}\n id=\"createCollections\"\n name=\"createCollections\"\n label=\"Create collections\"\n position={\"item-aligned\"}\n disabled={isAdmin || !editable}\n onChange={(event) => setFieldValue(\"config.createCollections\", event.target.value === \"true\")}\n value={isAdmin || values.config?.createCollections ? \"true\" : \"false\"}\n renderValue={(value: any) => value === \"true\" ? \"Yes\" : \"No\"}\n >\n <SelectItem\n value={\"true\"}> Yes </SelectItem>\n <SelectItem\n value={\"false\"}> No </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : \"Can the user create collections\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n size={\"large\"}\n fullWidth={true}\n error={touched.config && Boolean(errors.config)}\n id=\"editCollections\"\n name=\"editCollections\"\n label=\"Edit collections\"\n disabled={isAdmin || !editable}\n position={\"item-aligned\"}\n onChange={(event) => setFieldValue(\"config.editCollections\", event.target.value === \"own\" ? \"own\" : event.target.value === \"true\")}\n value={isAdmin ? \"true\" : (values.config?.editCollections === \"own\" ? \"own\" : (values.config?.editCollections ? \"true\" : \"false\"))}\n renderValue={(value: any) => value === \"own\" ? \"Own\" : (value === \"true\" ? \"Yes\" : \"No\")}\n >\n <SelectItem\n value={\"true\"}> Yes </SelectItem>\n <SelectItem\n value={\"false\"}> No </SelectItem>\n <SelectItem\n value={\"own\"}> Only\n his/her own </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : \"Can the user edit collections\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n size={\"large\"}\n fullWidth={true}\n error={touched.config && Boolean(errors.config)}\n id=\"deleteCollections\"\n name=\"deleteCollections\"\n label=\"Delete collections\"\n disabled={isAdmin || !editable}\n position={\"item-aligned\"}\n onChange={(event) => setFieldValue(\"config.deleteCollections\", event.target.value === \"own\" ? \"own\" : event.target.value === \"true\")}\n value={isAdmin ? \"true\" : (values.config?.deleteCollections === \"own\" ? \"own\" : (values.config?.deleteCollections ? \"true\" : \"false\"))}\n renderValue={(value: any) => value === \"own\" ? \"Own\" : (value === \"true\" ? \"Yes\" : \"No\")}\n >\n <SelectItem\n value={\"true\"}> Yes </SelectItem>\n <SelectItem\n value={\"false\"}> No </SelectItem>\n <SelectItem\n value={\"own\"}> Only\n his/her own </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : \"Can the user delete collections\"}\n </FieldCaption>\n\n </div>\n\n </div>\n </DialogContent>\n\n <DialogActions position={\"sticky\"}>\n {savingError && <Typography className={\"text-red-500 dark:text-red-500\"}>\n {savingError.message ?? \"There was an error saving this role\"}\n </Typography>}\n <Button variant={\"text\"}\n onClick={() => {\n handleClose();\n }}>\n Cancel\n </Button>\n <LoadingButton\n variant=\"filled\"\n type=\"submit\"\n disabled={!dirty}\n loading={isSubmitting}\n >\n {isNewRole ? \"Create role\" : \"Update\"}\n </LoadingButton>\n </DialogActions>\n </form>\n\n </Formex>\n </Dialog>\n );\n}\n","import { Role } from \"@firecms/core\";\n\nexport const DEFAULT_ROLES: Role[] = [\n {\n id: \"admin\",\n name: \"Admin\",\n isAdmin: true\n },\n {\n id: \"editor\",\n name: \"Editor\",\n isAdmin: false,\n defaultPermissions: {\n read: true,\n create: true,\n edit: true,\n delete: true\n },\n config: {\n createCollections: true,\n editCollections: \"own\",\n deleteCollections: \"own\"\n }\n },\n {\n id: \"viewer\",\n name: \"Viewer\",\n isAdmin: false,\n defaultPermissions: {\n read: true,\n create: false,\n edit: false,\n delete: false\n }\n }\n];\n","import { useState } from \"react\";\nimport {\n Button,\n CenteredView,\n Checkbox,\n DeleteIcon,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\nimport { ConfirmationDialog, Role } from \"@firecms/core\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"./RoleChip\";\nimport { DEFAULT_ROLES } from \"./default_roles\";\n\nexport function RolesTable({\n onRoleClicked,\n editable\n }: {\n onRoleClicked: (role: Role) => void;\n editable: boolean;\n}) {\n\n const {\n roles,\n saveRole,\n deleteRole,\n allowDefaultRolesCreation\n } = useUserManagement();\n\n const [roleToBeDeleted, setRoleToBeDeleted] = useState<Role | undefined>(undefined);\n const [deleteInProgress, setDeleteInProgress] = useState<boolean>(false);\n\n return <div\n className=\"w-full overflow-auto\">\n <Table className={\"w-full\"}>\n <TableHeader>\n <TableCell header={true} className=\"w-16\"></TableCell>\n <TableCell header={true}>Role</TableCell>\n <TableCell header={true} className={\"items-center\"}>Is Admin</TableCell>\n <TableCell header={true}>Default permissions</TableCell>\n </TableHeader>\n\n <TableBody>\n {roles && roles.map((role) => {\n const canCreateAll = role.isAdmin || role.defaultPermissions?.create;\n const canReadAll = role.isAdmin || role.defaultPermissions?.read;\n const canUpdateAll = role.isAdmin || role.defaultPermissions?.edit;\n const canDeleteAll = role.isAdmin || role.defaultPermissions?.delete;\n return (\n <TableRow\n key={role.name}\n onClick={() => {\n onRoleClicked(role);\n }}\n >\n <TableCell style={{ width: \"64px\" }}>\n {!role.isAdmin &&\n <Tooltip\n asChild={true}\n title={\"Delete this role\"}>\n <IconButton\n size={\"small\"}\n disabled={!editable}\n onClick={(event) => {\n event.stopPropagation();\n return setRoleToBeDeleted(role);\n }}>\n <DeleteIcon/>\n </IconButton>\n </Tooltip>}\n </TableCell>\n <TableCell>\n <RoleChip role={role}/>\n </TableCell>\n <TableCell className={\"items-center\"}>\n <Checkbox checked={role.isAdmin ?? false}/>\n </TableCell>\n <TableCell>\n <ul>\n {canCreateAll && <li>Create</li>}\n {canReadAll && <li>Read</li>}\n {canUpdateAll && <li>Update</li>}\n {canDeleteAll && <li>Delete</li>}\n </ul>\n </TableCell>\n </TableRow>\n );\n })}\n\n {(!roles || roles.length === 0) && <TableRow>\n <TableCell colspan={4}>\n <CenteredView className={\"flex flex-col gap-4 my-8 items-center\"}>\n <Typography variant={\"label\"}>\n You don&apos;t have any roles yet.\n </Typography>\n {allowDefaultRolesCreation && <Button\n onClick={() => {\n DEFAULT_ROLES.forEach((role) => {\n saveRole(role);\n });\n }}>\n Create default roles\n </Button>}\n </CenteredView>\n </TableCell>\n </TableRow>}\n\n </TableBody>\n\n </Table>\n\n <ConfirmationDialog\n open={Boolean(roleToBeDeleted)}\n loading={deleteInProgress}\n onAccept={() => {\n if (roleToBeDeleted) {\n setDeleteInProgress(true);\n deleteRole(roleToBeDeleted)\n .then(() => {\n setRoleToBeDeleted(undefined);\n })\n .finally(() => {\n setDeleteInProgress(false);\n })\n }\n }}\n onCancel={() => {\n setRoleToBeDeleted(undefined);\n }}\n title={<>Delete?</>}\n body={<>Are you sure you want to delete this role?</>}/>\n\n </div>;\n}\n","import React, { useCallback, useState } from \"react\";\n\nimport { Role, useNavigationController } from \"@firecms/core\";\nimport { AddIcon, Button, Container, Typography } from \"@firecms/ui\";\nimport { RolesTable } from \"./RolesTable\";\nimport { RolesDetailsForm } from \"./RolesDetailsForm\";\n\nexport const RolesView = React.memo(\n function RolesView({ children }: { children?: React.ReactNode }) {\n\n const { collections } = useNavigationController();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [selectedRole, setSelectedRole] = useState<Role | undefined>();\n\n const onRoleClicked = useCallback((user: Role) => {\n setDialogOpen(true);\n setSelectedRole(user);\n }, []);\n\n const handleClose = () => {\n setSelectedRole(undefined);\n setDialogOpen(false);\n };\n\n return (\n <Container className=\"w-full flex flex-col py-4 gap-4\" maxWidth={\"6xl\"}>\n\n {children}\n\n <div className=\"flex items-center mt-12\">\n <Typography gutterBottom variant=\"h4\"\n className=\"flex-grow\"\n component=\"h4\">\n Roles\n </Typography>\n <Button\n size={\"large\"}\n startIcon={<AddIcon/>}\n onClick={() => setDialogOpen(true)}>\n Add role\n </Button>\n </div>\n\n <RolesTable onRoleClicked={onRoleClicked} editable={true}/>\n\n <RolesDetailsForm\n key={selectedRole?.id ?? \"new\"}\n open={dialogOpen}\n role={selectedRole}\n editable={true}\n collections={collections}\n handleClose={handleClose}/>\n\n </Container>\n )\n });\n","import React, { useCallback } from \"react\";\nimport * as Yup from \"yup\";\nimport {\n Button,\n CheckIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n LoadingButton,\n MultiSelect,\n MultiSelectItem,\n TextField,\n} from \"@firecms/ui\";\nimport { FieldCaption, Role, useAuthController, User, useSnackbarController } from \"@firecms/core\";\nimport { Formex, useCreateFormex } from \"@firecms/formex\";\n\nimport { areRolesEqual } from \"../../utils\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"../roles\";\n\nexport const UserYupSchema = Yup.object().shape({\n displayName: Yup.string().required(\"Required\"),\n email: Yup.string().email().required(\"Required\"),\n roles: Yup.array().min(1)\n});\n\nfunction canUserBeEdited(loggedUser: User, user: User, users: User[], roles: Role[], prevUser?: User) {\n const admins = users.filter(u => u.roles?.map(r => r.id).includes(\"admin\"));\n const loggedUserIsAdmin = loggedUser.roles?.map(r => r.id).includes(\"admin\");\n const didRolesChange = !prevUser || !areRolesEqual(prevUser.roles ?? [], user.roles ?? []);\n\n if (didRolesChange && !loggedUserIsAdmin) {\n throw new Error(\"Only admins can change roles\");\n }\n\n // was the admin role removed\n const adminRoleRemoved = prevUser && prevUser.roles?.map(r => r.id).includes(\"admin\") && !user.roles?.map(r => r.id).includes(\"admin\");\n\n // avoid removing the last admin\n if (adminRoleRemoved && admins.length === 1) {\n throw new Error(\"There must be at least one admin\");\n }\n return true;\n}\n\nexport function UserDetailsForm({\n open,\n user: userProp,\n handleClose\n }: {\n open: boolean,\n user?: User,\n handleClose: () => void\n}) {\n\n const snackbarController = useSnackbarController();\n const {\n user: loggedInUser\n } = useAuthController();\n const {\n saveUser,\n users,\n roles,\n } = useUserManagement();\n const isNewUser = !userProp;\n\n const onUserUpdated = useCallback((savedUser: User): Promise<User> => {\n if (!loggedInUser) {\n throw new Error(\"Logged user not found\");\n }\n try {\n canUserBeEdited(loggedInUser, savedUser, users, roles, userProp);\n return saveUser(savedUser);\n } catch (e: any) {\n return Promise.reject(e);\n }\n }, [roles, saveUser, userProp, users, loggedInUser]);\n\n const formex = useCreateFormex({\n initialValues: userProp ?? {\n displayName: \"\",\n email: \"\",\n roles: roles.filter(r => r.id === \"editor\")\n } as User,\n validation: (values) => {\n return UserYupSchema.validate(values, { abortEarly: false })\n .then(() => {\n return {};\n }).catch((e) => {\n return e.inner.reduce((acc: any, error: any) => {\n acc[error.path] = error.message;\n return acc;\n }, {});\n });\n },\n onSubmit: (user: User, formexController) => {\n\n return onUserUpdated(user)\n .then(() => {\n handleClose();\n formexController.resetForm({\n values: user\n });\n }).catch((e) => {\n snackbarController.open({\n type: \"error\",\n message: e.message\n });\n });\n }\n });\n\n const {\n isSubmitting,\n touched,\n handleChange,\n values,\n errors,\n setFieldValue,\n dirty,\n handleSubmit,\n submitCount\n } = formex;\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => !open ? handleClose() : undefined}\n maxWidth={\"4xl\"}\n >\n <Formex value={formex}>\n <form\n onSubmit={handleSubmit}\n autoComplete={\"off\"}\n noValidate\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n height: \"100%\"\n }}>\n\n <DialogTitle variant={\"h4\"} gutterBottom={false}>\n User\n </DialogTitle>\n <DialogContent className=\"h-full flex-grow\">\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n name=\"displayName\"\n required\n error={submitCount > 0 && Boolean(errors.displayName)}\n value={values.displayName ?? \"\"}\n onChange={handleChange}\n aria-describedby=\"name-helper-text\"\n label=\"Name\"\n />\n <FieldCaption>\n {submitCount > 0 && Boolean(errors.displayName) ? errors.displayName : \"Name of this user\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n required\n error={submitCount > 0 && Boolean(errors.email)}\n name=\"email\"\n value={values.email ?? \"\"}\n onChange={handleChange}\n aria-describedby=\"email-helper-text\"\n label=\"Email\"\n />\n <FieldCaption>\n {submitCount > 0 && Boolean(errors.email) ? errors.email : \"Email of this user\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <MultiSelect\n className={\"w-full\"}\n label=\"Roles\"\n value={values.roles?.map(r => r.id) ?? []}\n onValueChange={(value: string[]) => setFieldValue(\"roles\", value.map(id => roles.find(r => r.id === id) as Role))}\n // renderValue={(value: string) => {\n // const userRole = roles\n // .find((role) => role.id === value);\n // if (!userRole) return null;\n // return <div className=\"flex flex-wrap space-x-2 space-y-2\">\n // <RoleChip key={userRole?.id} role={userRole}/>\n // </div>;\n // }}\n >\n {roles.map(userRole => <MultiSelectItem key={userRole.id}\n value={userRole.id}>\n <RoleChip key={userRole?.id} role={userRole}/>\n </MultiSelectItem>)}\n </MultiSelect>\n </div>\n\n </div>\n\n </DialogContent>\n\n <DialogActions>\n\n <Button variant={\"text\"}\n onClick={() => {\n handleClose();\n }}>\n Cancel\n </Button>\n\n <LoadingButton\n variant=\"filled\"\n type=\"submit\"\n disabled={!dirty}\n loading={isSubmitting}\n >\n {isNewUser ? \"Create user\" : \"Update\"}\n </LoadingButton>\n </DialogActions>\n </form>\n </Formex>\n\n </Dialog>\n );\n}\n","import { useState } from \"react\";\n\nimport { format } from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\n\nimport {\n defaultDateFormat,\n ConfirmationDialog, Role,\n useAuthController,\n useCustomizationController, User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n Avatar,\n Button,\n CenteredView,\n DeleteIcon,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"../roles\";\nimport { PersistedUser } from \"../../types\";\n\nexport function UsersTable({ onUserClicked }: {\n onUserClicked: (user: User) => void;\n}) {\n\n const {\n users,\n saveUser,\n deleteUser\n } = useUserManagement<PersistedUser>();\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n const customizationController = useCustomizationController();\n const dateUtilsLocale = customizationController?.locale ? locales[customizationController?.locale as keyof typeof locales] : undefined;\n const dateFormat: string = customizationController?.dateTimeFormat ?? defaultDateFormat;\n\n const [userToBeDeleted, setUserToBeDeleted] = useState<User | undefined>(undefined);\n const [deleteInProgress, setDeleteInProgress] = useState<boolean>(false);\n\n return (\n <div className=\"overflow-auto\">\n\n <Table className={\"w-full\"}>\n\n <TableHeader>\n <TableCell className=\"w-12\"></TableCell>\n <TableCell>Email</TableCell>\n <TableCell>Name</TableCell>\n <TableCell>Roles</TableCell>\n <TableCell>Created on</TableCell>\n <TableCell className=\"w-12\"></TableCell>\n </TableHeader>\n <TableBody>\n {users && users.map((user) => {\n\n const userRoles: Role[] | undefined = user.roles;\n\n const formattedDate = user.created_on ? format(user.created_on, dateFormat, { locale: dateUtilsLocale }) : \"\";\n\n return (\n <TableRow\n key={\"row_\" + user.uid}\n onClick={() => {\n onUserClicked(user);\n }}\n >\n <TableCell className={\"w-12\"}>\n <Avatar\n src={user.photoURL ?? undefined}\n outerClassName=\"w-8 h-8 min-w-8 min-h-8 p-0\"\n className=\"text-sm\"\n hover={false}\n >\n {user.displayName\n ? user.displayName[0].toUpperCase()\n : (user.email ? user.email[0].toUpperCase() : \"U\")}\n </Avatar>\n </TableCell>\n <TableCell>{user.email}</TableCell>\n <TableCell className={\"font-medium align-left\"}>{user.displayName}</TableCell>\n <TableCell className=\"align-left\">\n {userRoles\n ? <div className=\"flex flex-wrap gap-2\">\n {userRoles.map(userRole =>\n <RoleChip key={userRole?.id} role={userRole} />\n )}\n </div>\n : null}\n </TableCell>\n <TableCell>{formattedDate}</TableCell>\n <TableCell className={\"w-12\"}>\n <Tooltip\n asChild={true}\n title={\"Delete this user\"}>\n <IconButton\n size={\"smallest\"}\n onClick={(event) => {\n event.stopPropagation();\n return setUserToBeDeleted(user);\n }}>\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n );\n })}\n\n {(!users || users.length === 0) && <TableRow>\n <TableCell colspan={6}>\n <CenteredView className={\"flex flex-col gap-4 my-8 items-center\"}>\n <Typography variant={\"label\"}>\n There are no users yet\n </Typography>\n <Button\n onClick={() => {\n if (!authController.user?.uid) {\n throw Error(\"UsersTable, authController misconfiguration\");\n }\n saveUser({\n uid: authController.user?.uid,\n email: authController.user?.email,\n displayName: authController.user?.displayName,\n photoURL: authController.user?.photoURL,\n providerId: authController.user?.providerId,\n isAnonymous: authController.user?.isAnonymous,\n roles: [{ id: \"admin\", name: \"Admin\" }],\n created_on: new Date()\n })\n .then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"User added successfully\"\n })\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error adding user: \" + error.message,\n })\n });\n }}>\n\n Add the logged user as an admin\n </Button>\n </CenteredView>\n </TableCell>\n </TableRow>}\n\n </TableBody>\n </Table>\n\n <ConfirmationDialog\n open={Boolean(userToBeDeleted)}\n loading={deleteInProgress}\n onAccept={() => {\n if (userToBeDeleted) {\n setDeleteInProgress(true);\n deleteUser(userToBeDeleted)\n .then(() => {\n setUserToBeDeleted(undefined);\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting user: \" + error.message,\n })\n })\n .finally(() => {\n setDeleteInProgress(false);\n })\n }\n }}\n onCancel={() => {\n setUserToBeDeleted(undefined);\n }}\n title={<>Delete?</>}\n body={<>Are you sure you want to delete this user?</>} />\n </div>);\n}\n","import { AddIcon, Button, Container, Typography } from \"@firecms/ui\";\n\nimport { UsersTable } from \"./UsersTable\";\nimport { UserDetailsForm } from \"./UserDetailsForm\";\nimport React, { useCallback, useState } from \"react\";\nimport { useUserManagement } from \"../../hooks/useUserManagement\";\nimport { User } from \"@firecms/core\";\n\nexport const UsersView = function UsersView({ children }: { children?: React.ReactNode }) {\n\n const [dialogOpen, setDialogOpen] = useState<boolean>(false);\n const [selectedUser, setSelectedUser] = useState<User | undefined>();\n const [newFormKey, setNewFormKey] = useState<number>(0);\n\n const { users } = useUserManagement();\n\n const onUserClicked = useCallback((user: User) => {\n setSelectedUser(user);\n setDialogOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setDialogOpen(false);\n setSelectedUser(undefined);\n }, []);\n\n const handleAddUser = useCallback(() => {\n setSelectedUser(undefined);\n setNewFormKey(k => k + 1);\n setDialogOpen(true);\n }, []);\n\n return (\n <Container className=\"w-full flex flex-col py-4 gap-4\" maxWidth={\"6xl\"}>\n\n {children}\n\n <div\n className=\"flex items-center mt-12\">\n <Typography gutterBottom variant=\"h4\"\n className=\"flex-grow\"\n component=\"h4\">\n Users\n </Typography>\n <Button\n size={\"large\"}\n startIcon={<AddIcon/>}\n onClick={handleAddUser}>\n Add user\n </Button>\n </div>\n\n <UsersTable onUserClicked={onUserClicked}/>\n\n <UserDetailsForm\n key={selectedUser?.uid ?? `new-${newFormKey}`}\n open={dialogOpen}\n user={selectedUser}\n handleClose={handleClose}/>\n\n </Container>\n )\n};\n","import { FireCMSPlugin, useAuthController, User, useSnackbarController } from \"@firecms/core\";\nimport { UserManagementProvider } from \"./UserManagementProvider\";\nimport { UserManagement } from \"./types\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { DEFAULT_ROLES } from \"./components/roles/default_roles\";\n\nexport function useUserManagementPlugin<USER extends User = any>({ userManagement }: {\n userManagement: UserManagement<USER>,\n}): FireCMSPlugin {\n\n const noUsers = userManagement.users.length === 0;\n const noRoles = userManagement.roles.length === 0;\n\n return {\n key: \"user_management\",\n loading: userManagement.loading,\n userManagement:{\n ...userManagement,\n },\n homePage: {\n additionalChildrenStart: noUsers || noRoles\n ? <IntroWidget\n noUsers={noUsers}\n noRoles={noRoles}\n userManagement={userManagement}/>\n : undefined\n },\n provider: {\n Component: UserManagementProvider,\n props: {\n userManagement\n }\n }\n }\n}\n\nexport function IntroWidget({\n noUsers,\n noRoles,\n userManagement\n }: {\n noUsers: boolean;\n noRoles: boolean;\n userManagement: UserManagement<any>;\n}) {\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n const buttonLabel = noUsers && noRoles\n ? \"Create default roles and add current user as admin\"\n : noUsers\n ? \"Add current user as admin\"\n : noRoles ? \"Create default roles\" : undefined;\n\n return (\n <Paper\n className={\"my-4 flex flex-col px-4 py-6 bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>Create your users and roles</Typography>\n <Typography>\n You have no users or roles defined. You can create default roles and add the current user as admin.\n </Typography>\n <Button\n\n onClick={() => {\n if (!authController.user?.uid) {\n throw Error(\"UsersTable, authController misconfiguration\");\n }\n if (noUsers) {\n userManagement.saveUser({\n uid: authController.user?.uid,\n email: authController.user?.email,\n displayName: authController.user?.displayName,\n photoURL: authController.user?.photoURL,\n providerId: authController.user?.providerId,\n isAnonymous: authController.user?.isAnonymous,\n roles: [{\n id: \"admin\",\n name: \"Admin\"\n }],\n created_on: new Date()\n })\n .then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"User added successfully\"\n })\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error adding user: \" + error.message\n })\n });\n }\n if (noRoles) {\n DEFAULT_ROLES.forEach((role) => {\n userManagement.saveRole(role);\n });\n }\n }}>\n <AddIcon/>\n {buttonLabel}\n </Button>\n </Paper>\n );\n\n}\n","import { CMSView } from \"@firecms/core\";\nimport { RolesView, UsersView } from \"./components\";\n\nexport const userManagementAdminViews: CMSView[] = [\n {\n path: \"users\",\n name: \"CMS Users\",\n group: \"Admin\",\n icon: \"face\",\n view: <UsersView/>\n },\n {\n path: \"roles\",\n name: \"Roles\",\n group: \"Admin\",\n icon: \"gpp_good\",\n view: <RolesView/>\n }\n]\n"],"names":["RESERVED_GROUPS","DEFAULT_PERMISSIONS","read","edit","create","delete","resolveUserRolePermissions","collection","user","roles","ownerId","uid","basePermissions","map","role","resolveCollectionRole","id","reduce","mergePermissions","isAdmin","defaultPermissions","thisCollectionPermissions","collectionPermissions","permA","permB","getUserRoles","fireCMSUser","undefined","find","r","filter","Boolean","areRolesEqual","rolesA","rolesB","rolesAIds","rolesBIds","length","every","includes","cacheDelegatedLoginToken","projectId","delegatedToken","data","parseJwt","expiry","Date","exp","localStorage","setItem","JSON","stringify","token","getDelegatedLoginTokenFromCache","entry","getItem","parse","clearDelegatedLoginTokensCache","i","key","startsWith","removeItem","Error","base64Url","split","base64","replace","jsonPayload","decodeURIComponent","window","atob","c","charCodeAt","toString","slice","join","darkenColor","hexColor","darkenBy","test","color","substring","parseInt","g","b","Math","floor","hexToRgbaWithOpacity","opacity","alpha","useBuildUserManagement","authController","dataSourceDelegate","rolesProp","usersPath","rolesPath","allowDefaultRolesCreation","includeCollectionConfigPermissions","rolesDefinedInCode","rolesLoading","setRolesLoading","React","useState","usersLoading","setUsersLoading","setRoles","usersWithRoleIds","setUsersWithRoleIds","users","u","rolesError","setRolesError","usersError","setUsersError","_usersLoading","_rolesLoading","loading","useEffect","initialised","initialLoading","listenCollection","path","onUpdate","entities","console","debug","newRoles","entityToRoles","equal","e","error","onError","newUsers","entitiesToUsers","saveUser","useCallback","roleIds","email","toLowerCase","trim","userExists","created_on","entity","values","deleteEntity","then","catch","saveEntity","status","entityId","removeUndefined","saveRole","roleData","deleteUser","deleteRole","defineRolesFor","mgmtUser","authenticator","warn","needsUidUpdate","needsPhotoUpdate","photoURL","updateReason","userRoles","some","userRoleIds","setUserRoles","getUser","docs","doc","newVar","updated_on","UserManagementContext","createContext","UserManagementProvider","t0","$","_c","children","userManagement","t1","useUserManagement","useContext","RoleChip","colorScheme","getColorSchemeForSeed","name","Chip","RoleYupSchema","Yup","object","shape","string","required","canRoleBeEdited","loggedUser","loggedUserIsAdmin","RolesDetailsForm","open","editable","handleClose","collections","isNewRole","loggedInUser","useAuthController","savingError","setSavingError","role_0","onRoleUpdated","t2","t3","role_1","formexController","resetForm","e_0","t4","Promise","resolve","initialValues","onSubmit","validation","_temp3","formex","useCreateFormex","isSubmitting","touched","values_0","errors","errors_0","handleChange","setFieldValue","dirty","setFieldTouched","defaultCreate","defaultRead","defaultEdit","defaultDelete","t5","idTouched","getIn","toSnakeCase","t6","t7","t8","Symbol","for","display","flexDirection","position","height","DialogTitle","t9","t10","t11","TextField","t12","t13","jsx","FieldCaption","t14","jsxs","t15","t16","t17","e_2","t18","t19","t20","t21","t22","TableHeader","TableCell","t23","t24","t25","t26","checked","t27","Tooltip","Checkbox","t28","t29","t30","checked_0","t31","t32","t33","t34","checked_1","t35","t36","t37","t38","checked_2","t39","t40","t41","TableRow","t42","col","checked_3","checked_4","checked_5","checked_6","Button","t43","Paper","Table","TableBody","t44","t45","t46","config","t47","t48","event","target","value","t49","createCollections","t50","t51","SelectItem","t52","Select","_temp4","t53","t54","t55","t56","t57","t58","event_0","t59","editCollections","t60","t61","t62","t63","_temp5","t64","t65","t66","t67","t68","t69","event_1","t70","deleteCollections","t71","t72","t73","t74","_temp6","t75","t76","t77","t78","DialogContent","t79","Typography","message","t80","t81","t82","t83","LoadingButton","t84","DialogActions","t85","handleSubmit","t86","Formex","t87","Dialog","value_1","value_0","validate","abortEarly","_temp","_temp2","e_1","inner","forEach","DEFAULT_ROLES","RolesTable","onRoleClicked","roleToBeDeleted","setRoleToBeDeleted","deleteInProgress","setDeleteInProgress","canCreateAll","canReadAll","canUpdateAll","canDeleteAll","width","IconButton","stopPropagation","DeleteIcon","CenteredView","finally","ConfirmationDialog","RolesView","memo","useNavigationController","dialogOpen","setDialogOpen","selectedRole","setSelectedRole","AddIcon","Container","UserYupSchema","displayName","array","min","canUserBeEdited","prevUser","admins","didRolesChange","adminRoleRemoved","UserDetailsForm","userProp","snackbarController","useSnackbarController","isNewUser","savedUser","reject","onUserUpdated","type","submitCount","open_0","r_1","_temp7","MultiSelect","userRole","MultiSelectItem","r_0","acc","UsersTable","onUserClicked","customizationController","useCustomizationController","dateUtilsLocale","locale","locales","dateFormat","dateTimeFormat","defaultDateFormat","userToBeDeleted","setUserToBeDeleted","formattedDate","format","Avatar","toUpperCase","providerId","isAnonymous","error_0","UsersView","selectedUser","setSelectedUser","newFormKey","setNewFormKey","handleAddUser","k","useUserManagementPlugin","noUsers","noRoles","additionalChildrenStart","Component","props","homePage","provider","IntroWidget","buttonLabel","userManagementAdminViews","group","icon","view"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/utils/permissions.ts","../src/utils/local_storage.ts","../src/utils/colors.ts","../src/hooks/useBuildUserManagement.tsx","../src/UserManagementProvider.tsx","../src/hooks/useUserManagement.tsx","../src/components/roles/RoleChip.tsx","../src/components/roles/RolesDetailsForm.tsx","../src/components/roles/default_roles.tsx","../src/components/roles/RolesTable.tsx","../src/components/roles/RolesView.tsx","../src/components/users/UserDetailsForm.tsx","../src/components/users/UsersTable.tsx","../src/components/users/UsersView.tsx","../src/useUserManagementPlugin.tsx","../src/admin_views.tsx"],"sourcesContent":["import { EntityCollection, Permissions, Role, User } from \"@firecms/core\";\n\nexport const RESERVED_GROUPS = [\"Admin\"];\n\nconst DEFAULT_PERMISSIONS = {\n read: false,\n edit: false,\n create: false,\n delete: false\n};\n\nexport function resolveUserRolePermissions<USER extends User>\n({\n collection,\n user\n }: {\n collection: EntityCollection<any>,\n user: USER | null\n}): Permissions {\n\n const roles = user?.roles;\n if (!roles) {\n return DEFAULT_PERMISSIONS;\n } else if (collection.ownerId === user?.uid) {\n return {\n read: true,\n create: true,\n edit: true,\n delete: true\n };\n } else {\n const basePermissions = {\n read: false,\n create: false,\n edit: false,\n delete: false\n };\n\n return roles\n .map(role => resolveCollectionRole(role, collection.id))\n .reduce(mergePermissions, basePermissions);\n }\n}\n\nfunction resolveCollectionRole(role: Role, id: string): Permissions {\n\n const basePermissions = {\n read: (role.isAdmin || role.defaultPermissions?.read) ?? false,\n create: (role.isAdmin || role.defaultPermissions?.create) ?? false,\n edit: (role.isAdmin || role.defaultPermissions?.edit) ?? false,\n delete: (role.isAdmin || role.defaultPermissions?.delete) ?? false\n };\n const thisCollectionPermissions = role.collectionPermissions?.[id];\n if (thisCollectionPermissions) {\n return mergePermissions(thisCollectionPermissions, basePermissions);\n } else if (role.defaultPermissions) {\n return mergePermissions(role.defaultPermissions, basePermissions);\n } else {\n return basePermissions;\n }\n}\n\nconst mergePermissions = (permA: Permissions, permB: Permissions) => {\n return {\n read: permA.read || permB.read,\n create: permA.create || permB.create,\n edit: permA.edit || permB.edit,\n delete: permA.delete || permB.delete\n };\n}\n\nexport function getUserRoles(roles: Role[], fireCMSUser: User): Role[] | undefined {\n return !roles\n ? undefined\n : (fireCMSUser.roles\n ? fireCMSUser.roles\n .map(role => roles.find((r) => r.id === role.id))\n .filter(Boolean) as Role[]\n : []);\n}\n\nexport const areRolesEqual = (rolesA: Role[], rolesB: Role[]) => {\n const rolesAIds = rolesA.map(r => r.id);\n const rolesBIds = rolesB.map(r => r.id);\n return rolesAIds.length === rolesB.length && rolesAIds.every((role) => rolesBIds.includes(role));\n}\n","// const tokens = new Map<string, {\n// token: string,\n// expiry: Date\n// }>();\n\nexport function cacheDelegatedLoginToken(projectId: string, delegatedToken?: string) {\n if (!delegatedToken) {\n return;\n }\n\n const data = parseJwt(delegatedToken);\n // @ts-ignore\n const expiry = new Date(data.exp * 1000);\n localStorage.setItem(`auth_token::${projectId}`, JSON.stringify({\n token: delegatedToken,\n expiry\n }));\n\n}\n\nexport function getDelegatedLoginTokenFromCache(projectId: string) {\n const entry = localStorage.getItem(`auth_token::${projectId}`);\n if (entry) {\n const data = JSON.parse(entry);\n data.expiry = new Date(data.expiry);\n if (data.expiry > new Date()) {\n return data.token;\n }\n }\n return undefined;\n}\n\nexport function clearDelegatedLoginTokensCache() {\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(\"auth_token::\")) {\n localStorage.removeItem(key);\n }\n }\n}\n\nfunction parseJwt(token?: string): object {\n if (!token) {\n throw new Error(\"No JWT token\");\n }\n const base64Url = token.split(\".\")[1];\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const jsonPayload = decodeURIComponent(window.atob(base64).split(\"\").map(function (c) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(\"\"));\n\n return JSON.parse(jsonPayload);\n}\n","export function darkenColor(hexColor: string, darkenBy = 10): string {\n // Check input validity\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(hexColor)) {\n throw new Error(\"Invalid color format\");\n }\n\n // If shorthand form, convert to full form\n let color = hexColor.substring(1).split(\"\");\n if (color.length === 3) {\n color = [color[0], color[0], color[1], color[1], color[2], color[2]];\n }\n\n // Convert to RGB values\n let r = parseInt(color[0] + color[1], 16);\n let g = parseInt(color[2] + color[3], 16);\n let b = parseInt(color[4] + color[5], 16);\n\n // Reduce each color component by the specified percentage (darkenBy)\n r = Math.floor(r * (1 - darkenBy / 100));\n g = Math.floor(g * (1 - darkenBy / 100));\n b = Math.floor(b * (1 - darkenBy / 100));\n\n // Recombine into hex and return\n return \"#\" +\n (r < 16 ? \"0\" : \"\") + r.toString(16) +\n (g < 16 ? \"0\" : \"\") + g.toString(16) +\n (b < 16 ? \"0\" : \"\") + b.toString(16);\n}\n\nexport function hexToRgbaWithOpacity(hexColor: string, opacity = 10): string {\n // Check input validity\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(hexColor)) {\n throw new Error(\"Invalid color format\");\n }\n\n // If shorthand form, convert to full form\n let color = hexColor.substring(1).split(\"\");\n if (color.length === 3) {\n color = [color[0], color[0], color[1], color[1], color[2], color[2]];\n }\n\n // Convert to RGB values\n const r = parseInt(color[0] + color[1], 16);\n const g = parseInt(color[2] + color[3], 16);\n const b = parseInt(color[4] + color[5], 16);\n\n // Convert opacity to a decimal for CSS\n const alpha = opacity / 100;\n\n // Construct and return the RGBA color\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import React, { useCallback, useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { UserManagement } from \"../types\";\nimport {\n AuthController,\n Authenticator,\n DataSourceDelegate,\n Entity,\n PermissionsBuilder,\n removeUndefined,\n Role,\n User\n} from \"@firecms/core\";\nimport { resolveUserRolePermissions } from \"../utils\";\n\ntype UserWithRoleIds<USER extends User = any> = Omit<USER, \"roles\"> & { roles: string[] };\n\nexport interface UserManagementParams<CONTROLLER extends AuthController<any> = AuthController<any>> {\n\n authController: CONTROLLER;\n\n /**\n * The delegate in charge of persisting the data.\n */\n dataSourceDelegate?: DataSourceDelegate;\n\n /**\n * Path where the plugin users configuration is stored.\n * Default: __FIRECMS/config/users\n * You can specify a different path if you want to store the user management configuration in a different place.\n * Please keep in mind that the FireCMS users are not necessarily the same as the Firebase users (but they can be).\n * The path should be relative to the root of the database, and should always have an odd number of segments.\n */\n usersPath?: string;\n\n /**\n * Path where the plugin roles configuration is stored.\n * Default: __FIRECMS/config/roles\n */\n rolesPath?: string;\n\n /**\n * The roles that are available in the user management system.\n * If you provide this, the user management system will not fetch the roles from the database.\n */\n roles?: Role[];\n\n /**\n * If there are no roles in the database, provide a button to create the default roles.\n */\n allowDefaultRolesCreation?: boolean;\n\n /**\n * Include the collection config permissions in the user management system.\n */\n includeCollectionConfigPermissions?: boolean;\n\n}\n\n/**\n * This hook is used to build a user management object that can be used to\n * manage users and roles in a Firestore backend.\n * @param authController\n * @param dataSourceDelegate\n * @param usersPath\n * @param rolesPath\n * @param roles\n * @param allowDefaultRolesCreation\n * @param includeCollectionConfigPermissions\n */\nexport function useBuildUserManagement<CONTROLLER extends AuthController<any> = AuthController<any>,\n USER extends User = CONTROLLER extends AuthController<infer U> ? U : any>\n({\n authController,\n dataSourceDelegate,\n roles: rolesProp,\n usersPath = \"__FIRECMS/config/users\",\n rolesPath = \"__FIRECMS/config/roles\",\n allowDefaultRolesCreation,\n includeCollectionConfigPermissions\n }: UserManagementParams<CONTROLLER>): UserManagement<USER> & CONTROLLER {\n\n if (!authController) {\n throw Error(\"useBuildUserManagement: You need to provide an authController since version 3.0.0-beta.11. Check https://firecms.co/docs/pro/migrating_from_v3_beta\");\n }\n\n const rolesDefinedInCode = (rolesProp ?? [])?.length > 0;\n const [rolesLoading, setRolesLoading] = React.useState<boolean>(!rolesDefinedInCode);\n const [usersLoading, setUsersLoading] = React.useState<boolean>(true);\n const [roles, setRoles] = React.useState<Role[]>(rolesProp ?? []);\n const [usersWithRoleIds, setUsersWithRoleIds] = React.useState<UserWithRoleIds<USER>[]>([]);\n\n const users = usersWithRoleIds.map(u => ({\n ...u,\n roles: roles.filter(r => u.roles?.includes(r.id))\n }) as USER);\n\n const [rolesError, setRolesError] = React.useState<Error | undefined>();\n const [usersError, setUsersError] = React.useState<Error | undefined>();\n\n const _usersLoading = usersLoading;\n const _rolesLoading = rolesLoading;\n\n const loading = _rolesLoading || _usersLoading;\n\n useEffect(() => {\n if (rolesDefinedInCode) return;\n if (!dataSourceDelegate || !rolesPath) return;\n if (dataSourceDelegate.initialised !== undefined && !dataSourceDelegate.initialised) return;\n if (authController?.initialLoading) return;\n\n setRolesLoading(true);\n return dataSourceDelegate.listenCollection?.({\n path: rolesPath,\n onUpdate(entities: Entity<any>[]): void {\n setRolesError(undefined);\n console.debug(\"Updating roles\", entities);\n try {\n const newRoles = entityToRoles(entities);\n if (!equal(newRoles, roles)) {\n setRoles(newRoles);\n }\n } catch (e) {\n setRoles([]);\n console.error(\"Error loading roles\", e);\n setRolesError(e as Error);\n }\n setRolesLoading(false);\n },\n onError(e: any): void {\n setRoles([]);\n console.error(\"Error loading roles\", e);\n setRolesError(e);\n setRolesLoading(false);\n }\n });\n\n }, [rolesDefinedInCode, dataSourceDelegate?.initialised, authController?.initialLoading, authController?.user?.uid, rolesPath]);\n\n useEffect(() => {\n if (!dataSourceDelegate || !usersPath) return;\n if (dataSourceDelegate.initialised !== undefined && !dataSourceDelegate.initialised) {\n return;\n }\n if (authController?.initialLoading) {\n return;\n }\n\n setUsersLoading(true);\n return dataSourceDelegate.listenCollection?.({\n path: usersPath,\n onUpdate(entities: Entity<any>[]): void {\n console.debug(\"Updating users\", entities);\n setUsersError(undefined);\n try {\n const newUsers = entitiesToUsers(entities);\n // if (!equal(newUsers, usersWithRoleIds))\n setUsersWithRoleIds(newUsers);\n } catch (e) {\n setUsersWithRoleIds([]);\n console.error(\"Error loading users\", e);\n setUsersError(e as Error);\n }\n setUsersLoading(false);\n },\n onError(e: any): void {\n console.error(\"Error loading users\", e);\n setUsersWithRoleIds([]);\n setUsersError(e);\n setUsersLoading(false);\n }\n });\n\n }, [dataSourceDelegate?.initialised, authController?.initialLoading, authController?.user?.uid, usersPath]);\n\n const saveUser = useCallback(async (user: USER): Promise<USER> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!usersPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n\n console.debug(\"Persisting user\", user);\n\n const roleIds = user.roles?.map(r => r.id);\n const email = user.email?.toLowerCase().trim();\n if (!email) throw Error(\"Email is required\");\n\n const userExists = users.find(u => u.email?.toLowerCase() === email);\n const data = {\n ...user,\n roles: roleIds ?? []\n };\n if (!userExists) {\n // @ts-ignore\n data.created_on = new Date();\n }\n // delete the previous user entry if it exists and the uid has changed\n if (userExists && userExists.uid !== user.uid) {\n const entity: Entity<any> = {\n values: {},\n path: usersPath,\n id: userExists.uid\n }\n await dataSourceDelegate.deleteEntity({ entity })\n .then(() => {\n console.debug(\"Deleted previous user\", userExists);\n })\n .catch(e => {\n console.error(\"Error deleting user\", e);\n });\n\n }\n\n return dataSourceDelegate.saveEntity({\n status: \"existing\",\n path: usersPath,\n entityId: email,\n values: removeUndefined(data)\n }).then(() => user);\n }, [usersPath, dataSourceDelegate?.initialised]);\n\n const saveRole = useCallback((role: Role): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!rolesPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Persisting role\", role);\n const {\n id,\n ...roleData\n } = role;\n return dataSourceDelegate.saveEntity({\n status: \"existing\",\n path: rolesPath,\n entityId: id,\n values: removeUndefined(roleData)\n }).then(() => {\n return;\n });\n }, [rolesPath, dataSourceDelegate?.initialised]);\n\n const deleteUser = useCallback(async (user: User): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!usersPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Deleting\", user);\n const { uid } = user;\n const entity: Entity<any> = {\n path: usersPath,\n id: uid,\n values: {}\n };\n await dataSourceDelegate.deleteEntity({ entity })\n }, [usersPath, dataSourceDelegate?.initialised]);\n\n const deleteRole = useCallback(async (role: Role): Promise<void> => {\n if (!dataSourceDelegate) throw Error(\"useBuildUserManagement Firebase not initialised\");\n if (!rolesPath) throw Error(\"useBuildUserManagement Firestore not initialised\");\n console.debug(\"Deleting\", role);\n const { id } = role;\n const entity: Entity<any> = {\n path: rolesPath,\n id: id,\n values: {}\n };\n await dataSourceDelegate.deleteEntity({ entity })\n }, [rolesPath, dataSourceDelegate?.initialised]);\n\n const collectionPermissions: PermissionsBuilder = useCallback(({\n collection,\n user\n }) =>\n resolveUserRolePermissions({\n collection,\n user\n }), []);\n\n const defineRolesFor: ((user: User) => Role[] | undefined) = useCallback((user) => {\n if (!usersWithRoleIds) throw Error(\"Users not loaded\");\n const users = usersWithRoleIds.map(u => ({\n ...u,\n roles: roles.filter(r => u.roles?.includes(r.id))\n }) as User);\n const mgmtUser = users.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());\n return mgmtUser?.roles;\n }, [roles, usersWithRoleIds]);\n\n const authenticator: Authenticator<USER> = useCallback(({ user }) => {\n\n if (loading) {\n return false;\n }\n if (user === null) {\n console.warn(\"User is null, returning\");\n return false;\n }\n\n if (users.length === 0) {\n console.warn(\"No users created yet\");\n return true; // If there are no users created yet, we allow access to every user\n }\n\n const mgmtUser = users.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());\n if (mgmtUser) {\n // check if the uid or photoURL needs to be updated in the user management system\n const needsUidUpdate = mgmtUser.uid !== user.uid;\n const needsPhotoUpdate = user.photoURL && mgmtUser.photoURL !== user.photoURL;\n\n if (needsUidUpdate || needsPhotoUpdate) {\n const updateReason = needsUidUpdate ? \"uid\" : \"photoURL\";\n console.debug(`User ${updateReason} has changed, updating user in user management system`);\n saveUser({\n ...mgmtUser,\n uid: user.uid,\n ...(needsPhotoUpdate ? { photoURL: user.photoURL } : {})\n }).then(() => {\n console.debug(\"User updated in user management system\", mgmtUser);\n }).catch(e => {\n console.error(\"Error updating user in user management system\", e);\n });\n }\n console.debug(\"User found in user management system\", mgmtUser);\n return true;\n }\n\n throw Error(\"Could not find a user with the provided email in the user management system.\");\n }, [loading, users]);\n\n const userRoles = authController.user ? defineRolesFor(authController.user) : undefined;\n const isAdmin = (userRoles ?? []).some(r => r.id === \"admin\");\n\n const userRoleIds = userRoles?.map(r => r.id);\n useEffect(() => {\n console.debug(\"Setting user roles\", {\n userRoles,\n roles\n });\n authController.setUserRoles?.(userRoles ?? []);\n }, [userRoleIds]);\n\n const getUser = useCallback((uid: string): USER | null => {\n if (!users) return null;\n const user = users.find(u => u.uid === uid);\n return user ?? null;\n }, [users]);\n\n return {\n loading,\n roles,\n users,\n saveUser,\n saveRole,\n rolesError,\n deleteUser,\n deleteRole,\n usersError,\n isAdmin,\n allowDefaultRolesCreation: allowDefaultRolesCreation === undefined ? true : allowDefaultRolesCreation,\n includeCollectionConfigPermissions: Boolean(includeCollectionConfigPermissions),\n collectionPermissions,\n defineRolesFor,\n authenticator,\n ...authController,\n initialLoading: authController.initialLoading || loading,\n userRoles: userRoles,\n getUser,\n user: authController.user ? {\n ...authController.user,\n roles: userRoles\n } : null\n }\n}\n\nconst entitiesToUsers = (docs: Entity<Omit<UserWithRoleIds, \"id\">>[]): (UserWithRoleIds)[] => {\n return docs.map((doc) => {\n const data = doc.values as any;\n const newVar = {\n uid: doc.id,\n ...data,\n created_on: data?.created_on,\n updated_on: data?.updated_on\n };\n return newVar as (UserWithRoleIds);\n });\n}\n\nconst entityToRoles = (entities: Entity<Omit<Role, \"id\">>[]): Role[] => {\n return entities.map((doc) => ({\n id: doc.id,\n ...doc.values\n } as Role));\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { UserManagement } from \"./types\";\nimport { User } from \"@firecms/core\";\n\nexport const UserManagementContext = React.createContext<UserManagement<any>>({} as any);\n\nexport interface UserManagementProviderProps<U extends User = User> {\n userManagement: UserManagement<U>\n}\n\nexport function UserManagementProvider<U extends User = User>({\n children,\n userManagement\n }: PropsWithChildren<UserManagementProviderProps<U>>) {\n return (\n <UserManagementContext.Provider value={userManagement}>\n {children}\n </UserManagementContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { UserManagement } from \"../types\";\nimport { UserManagementContext } from \"../UserManagementProvider\";\nimport { User } from \"@firecms/core\";\nexport const useUserManagement = <USER extends User>() => useContext<UserManagement<USER>>(UserManagementContext);\n","import { Chip, getColorSchemeForSeed } from \"@firecms/ui\";\nimport { Role } from \"@firecms/core\";\n\nexport type RoleChipProps = {\n role: Role;\n}\n\nexport function RoleChip({ role }: RoleChipProps) {\n let colorScheme;\n if (role.isAdmin) {\n colorScheme = \"blueDarker\";\n } else if (role.id === \"editor\") {\n colorScheme = \"yellowLight\";\n } else if (role.id === \"viewer\") {\n colorScheme = \"grayLight\";\n } else {\n colorScheme = getColorSchemeForSeed(role.id);\n }\n\n return (\n <Chip\n colorScheme={colorScheme}\n key={role.id}>\n {role.name}\n </Chip>\n );\n\n}\n","import React, { useCallback, useState } from \"react\";\nimport * as Yup from \"yup\";\n\nimport { EntityCollection, FieldCaption, Role, toSnakeCase, useAuthController, User, useTranslation\n} from \"@firecms/core\";\nimport {\n Button,\n Checkbox,\n CheckIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n LoadingButton,\n Paper,\n Select,\n SelectItem,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n TextField,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\nimport { useUserManagement } from \"../../hooks\";\nimport { Formex, getIn, useCreateFormex } from \"@firecms/formex\";\n\nexport const getRoleYupSchema = (t: any) => Yup.object().shape({\n id: Yup.string().required(t(\"required\")),\n name: Yup.string().required(t(\"required\"))\n});\n\nfunction canRoleBeEdited(loggedUser: User, t: any) {\n const loggedUserIsAdmin = loggedUser.roles?.map(r => r.id).includes(\"admin\");\n if (!loggedUserIsAdmin) {\n throw new Error(t(\"only_admins_edit_roles\"));\n }\n\n return true;\n}\n\nexport function RolesDetailsForm({\n open,\n role,\n editable,\n handleClose,\n collections\n }: {\n open: boolean,\n editable?: boolean,\n role?: Role,\n handleClose: () => void,\n collections?: EntityCollection[]\n}) {\n const { t } = useTranslation();\n const { saveRole } = useUserManagement();\n const isNewRole = !role;\n const {\n user: loggedInUser\n } = useAuthController();\n\n const [savingError, setSavingError] = useState<Error | undefined>();\n\n const onRoleUpdated = useCallback((role: Role) => {\n setSavingError(undefined);\n if (!loggedInUser) throw new Error(t(\"error_user_not_found\"));\n canRoleBeEdited(loggedInUser, t);\n return saveRole(role);\n }, [saveRole, loggedInUser, t]);\n\n const formex = useCreateFormex({\n initialValues: role ?? {\n name: \"\"\n } as Role,\n onSubmit: (role: Role, formexController) => {\n try {\n return onRoleUpdated(role)\n .then(() => {\n formexController.resetForm({\n values: role\n });\n handleClose();\n })\n .catch(e => {\n setSavingError(e);\n });\n } catch (e: any) {\n setSavingError(e);\n return Promise.resolve();\n }\n },\n validation: (values) => {\n return getRoleYupSchema(t).validate(values, { abortEarly: false })\n .then(() => ({}))\n .catch((e) => {\n const errors: Record<string, string> = {};\n e.inner.forEach((error: any) => {\n errors[error.path] = error.message;\n });\n return errors;\n });\n }\n\n });\n\n const {\n isSubmitting,\n touched,\n values,\n errors,\n handleChange,\n setFieldValue,\n dirty,\n setFieldTouched\n } = formex;\n\n const isAdmin = values.isAdmin ?? false;\n const defaultCreate = values.defaultPermissions?.create ?? false;\n const defaultRead = values.defaultPermissions?.read ?? false;\n const defaultEdit = values.defaultPermissions?.edit ?? false;\n const defaultDelete = values.defaultPermissions?.delete ?? false;\n\n React.useEffect(() => {\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && values.name) {\n setFieldValue(\"id\", toSnakeCase(values.name))\n }\n }, [touched, values.name]);\n\n return (\n <Dialog\n open={open}\n maxWidth={\"4xl\"}\n >\n <Formex value={formex}>\n <form noValidate\n autoComplete={\"off\"}\n onSubmit={formex.handleSubmit}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n height: \"100%\"\n }}>\n <DialogTitle variant={\"h4\"} gutterBottom={false}>{t(\"role\")}</DialogTitle>\n <DialogContent className=\"flex-grow\">\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12 md:col-span-8\"}>\n <TextField\n name=\"name\"\n required\n error={touched.name && Boolean(errors.name)}\n value={values.name}\n disabled={isAdmin || !editable}\n onChange={handleChange}\n aria-describedby=\"name-helper-text\"\n label={t(\"name\")}\n />\n <FieldCaption>\n {touched.name && Boolean(errors.name) ? errors.name : t(\"name_of_this_role\")}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <TextField\n name=\"id\"\n required\n error={touched.id && Boolean(errors.id)}\n value={values.id}\n disabled={!isNewRole || !editable}\n onChange={(e) => {\n handleChange(e);\n setFieldTouched(\"id\", true)\n }}\n aria-describedby=\"id-helper-text\"\n label={t(\"id\")}\n />\n <FieldCaption>\n {touched.id && Boolean(errors.id) ? errors.id : t(\"id_of_this_role\")}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Paper className=\"bg-inherit overflow-hidden\">\n <Table className={\"w-full rounded-md\"}>\n <TableHeader className={\"rounded-md\"}>\n <TableCell></TableCell>\n <TableCell align=\"center\">{t(\"create_entities\")}</TableCell>\n <TableCell align=\"center\">{t(\"read_entities\")}</TableCell>\n <TableCell align=\"center\">{t(\"update_entities\")}</TableCell>\n <TableCell align=\"center\">{t(\"delete_entities\")}</TableCell>\n <TableCell\n align=\"center\">\n </TableCell>\n </TableHeader>\n\n <TableBody>\n <TableRow>\n <TableCell\n scope=\"row\">\n <strong>{t(\"all_collections\")}</strong>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title={t(\"create_entities_in_collections\")}>\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultCreate) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.create\", checked)}\n />\n </Tooltip>\n </TableCell>\n\n <TableCell\n align=\"center\">\n <Tooltip\n title={t(\"access_all_data_in_every_collection\")}>\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultRead) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.read\", checked)}\n />\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title={t(\"update_data_in_any_collection\")}>\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultEdit) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.edit\", checked)}\n />\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n <Tooltip\n title={t(\"delete_data_in_any_collection\")}>\n <Checkbox\n disabled={isAdmin || !editable}\n checked={(isAdmin || defaultDelete) ?? false}\n onCheckedChange={(checked) => setFieldValue(\"defaultPermissions.delete\", checked)}\n />\n\n </Tooltip>\n </TableCell>\n <TableCell\n align=\"center\">\n </TableCell>\n </TableRow>\n {collections && collections.map((col) => (\n <TableRow key={col.name}>\n <TableCell\n scope=\"row\">\n {col.name}\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultCreate || !editable}\n checked={(isAdmin || defaultCreate || getIn(values, `collectionPermissions.${col.id}.create`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.create`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultRead || !editable}\n checked={(isAdmin || defaultRead || getIn(values, `collectionPermissions.${col.id}.read`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.read`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultEdit || !editable}\n checked={(isAdmin || defaultEdit || getIn(values, `collectionPermissions.${col.id}.edit`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.edit`, checked)}/>\n </TableCell>\n <TableCell\n align=\"center\">\n <Checkbox\n disabled={isAdmin || defaultDelete || !editable}\n checked={(isAdmin || defaultDelete || getIn(values, `collectionPermissions.${col.id}.delete`)) ?? false}\n onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.delete`, checked)}/>\n </TableCell>\n\n <TableCell\n align=\"center\">\n <Tooltip\n title={t(\"allow_all_permissions_in_this_collections\")}>\n <Button\n className={\"color-inherit\"}\n onClick={() => {\n setFieldValue(`collectionPermissions.${col.id}.create`, true);\n setFieldValue(`collectionPermissions.${col.id}.read`, true);\n setFieldValue(`collectionPermissions.${col.id}.edit`, true);\n setFieldValue(`collectionPermissions.${col.id}.delete`, true);\n }}\n disabled={isAdmin || !editable}\n variant={\"text\"}>\n {t(\"all\")}\n </Button>\n\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Paper>\n <FieldCaption>\n {t(\"customise_permissions_description\")}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n error={touched.config && Boolean(errors.config)}\n size={\"large\"}\n fullWidth={true}\n id=\"createCollections\"\n name=\"createCollections\"\n label={t(\"create_collections\")}\n position={\"item-aligned\"}\n disabled={isAdmin || !editable}\n onChange={(event) => setFieldValue(\"config.createCollections\", event.target.value === \"true\")}\n value={isAdmin || values.config?.createCollections ? \"true\" : \"false\"}\n renderValue={(value: any) => value === \"true\" ? t(\"yes\") : t(\"no\")}\n >\n <SelectItem\n value={\"true\"}> {t(\"yes\")} </SelectItem>\n <SelectItem\n value={\"false\"}> {t(\"no\")} </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : t(\"can_user_create_collections\")}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n size={\"large\"}\n fullWidth={true}\n error={touched.config && Boolean(errors.config)}\n id=\"editCollections\"\n name=\"editCollections\"\n label={t(\"edit_collections\")}\n disabled={isAdmin || !editable}\n position={\"item-aligned\"}\n onChange={(event) => setFieldValue(\"config.editCollections\", event.target.value === \"own\" ? \"own\" : event.target.value === \"true\")}\n value={isAdmin ? \"true\" : (values.config?.editCollections === \"own\" ? \"own\" : (values.config?.editCollections ? \"true\" : \"false\"))}\n renderValue={(value: any) => value === \"own\" ? t(\"own\") : (value === \"true\" ? t(\"yes\") : t(\"no\"))}\n >\n <SelectItem\n value={\"true\"}> {t(\"yes\")} </SelectItem>\n <SelectItem\n value={\"false\"}> {t(\"no\")} </SelectItem>\n <SelectItem\n value={\"own\"}> {t(\"only_own_collections\")} </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : t(\"can_user_edit_collections\")}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12 md:col-span-4\"}>\n <Select\n size={\"large\"}\n fullWidth={true}\n error={touched.config && Boolean(errors.config)}\n id=\"deleteCollections\"\n name=\"deleteCollections\"\n label={t(\"delete_collections\")}\n disabled={isAdmin || !editable}\n position={\"item-aligned\"}\n onChange={(event) => setFieldValue(\"config.deleteCollections\", event.target.value === \"own\" ? \"own\" : event.target.value === \"true\")}\n value={isAdmin ? \"true\" : (values.config?.deleteCollections === \"own\" ? \"own\" : (values.config?.deleteCollections ? \"true\" : \"false\"))}\n renderValue={(value: any) => value === \"own\" ? t(\"own\") : (value === \"true\" ? t(\"yes\") : t(\"no\"))}\n >\n <SelectItem\n value={\"true\"}> {t(\"yes\")} </SelectItem>\n <SelectItem\n value={\"false\"}> {t(\"no\")} </SelectItem>\n <SelectItem\n value={\"own\"}> {t(\"only_own_collections\")} </SelectItem>\n </Select>\n\n <FieldCaption>\n {touched.config && Boolean(errors.config) ? errors.config : t(\"can_user_delete_collections\")}\n </FieldCaption>\n\n </div>\n\n </div>\n </DialogContent>\n\n <DialogActions position={\"sticky\"}>\n {savingError && <Typography className={\"text-red-500 dark:text-red-500\"}>\n {savingError.message ?? t(\"error_saving_role\")}\n </Typography>}\n <Button variant={\"text\"}\n onClick={() => {\n handleClose();\n }}>{t(\"cancel\")}</Button>\n <LoadingButton\n variant=\"filled\"\n type=\"submit\"\n disabled={!dirty}\n loading={isSubmitting}\n >\n {isNewRole ? t(\"create_role\") : t(\"update\")}\n </LoadingButton>\n </DialogActions>\n </form>\n\n </Formex>\n </Dialog>\n );\n}\n","import { Role } from \"@firecms/core\";\n\nexport const DEFAULT_ROLES: Role[] = [\n {\n id: \"admin\",\n name: \"Admin\",\n isAdmin: true\n },\n {\n id: \"editor\",\n name: \"Editor\",\n isAdmin: false,\n defaultPermissions: {\n read: true,\n create: true,\n edit: true,\n delete: true\n },\n config: {\n createCollections: true,\n editCollections: \"own\",\n deleteCollections: \"own\"\n }\n },\n {\n id: \"viewer\",\n name: \"Viewer\",\n isAdmin: false,\n defaultPermissions: {\n read: true,\n create: false,\n edit: false,\n delete: false\n }\n }\n];\n","import { useState } from \"react\";\nimport {\n Button,\n CenteredView,\n Checkbox,\n DeleteIcon,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\nimport { ConfirmationDialog, Role, useTranslation\n} from \"@firecms/core\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"./RoleChip\";\nimport { DEFAULT_ROLES } from \"./default_roles\";\n\nexport function RolesTable({\n onRoleClicked,\n editable\n }: {\n onRoleClicked: (role: Role) => void;\n editable: boolean;\n}) {\n\n const { t } = useTranslation();\n const {\n roles,\n saveRole,\n deleteRole,\n allowDefaultRolesCreation\n } = useUserManagement();\n\n const [roleToBeDeleted, setRoleToBeDeleted] = useState<Role | undefined>(undefined);\n const [deleteInProgress, setDeleteInProgress] = useState<boolean>(false);\n\n return <div\n className=\"w-full overflow-auto\">\n <Table className={\"w-full\"}>\n <TableHeader>\n <TableCell header={true} className=\"w-16\"></TableCell>\n <TableCell header={true}>{t(\"role\")}</TableCell>\n <TableCell header={true} className={\"items-center\"}>{t(\"is_admin\")}</TableCell>\n <TableCell header={true}>{t(\"default_permissions\")}</TableCell>\n </TableHeader>\n\n <TableBody>\n {roles && roles.map((role) => {\n const canCreateAll = role.isAdmin || role.defaultPermissions?.create;\n const canReadAll = role.isAdmin || role.defaultPermissions?.read;\n const canUpdateAll = role.isAdmin || role.defaultPermissions?.edit;\n const canDeleteAll = role.isAdmin || role.defaultPermissions?.delete;\n return (\n <TableRow\n key={role.name}\n onClick={() => {\n onRoleClicked(role);\n }}\n >\n <TableCell style={{ width: \"64px\" }}>\n {!role.isAdmin &&\n <Tooltip\n asChild={true}\n title={t(\"delete_this_role\")}>\n <IconButton\n size={\"small\"}\n disabled={!editable}\n onClick={(event) => {\n event.stopPropagation();\n return setRoleToBeDeleted(role);\n }}>\n <DeleteIcon/>\n </IconButton>\n </Tooltip>}\n </TableCell>\n <TableCell>\n <RoleChip role={role}/>\n </TableCell>\n <TableCell className={\"items-center\"}>\n <Checkbox checked={role.isAdmin ?? false}/>\n </TableCell>\n <TableCell>\n <ul>\n {canCreateAll && <li>{t(\"create\")}</li>}\n {canReadAll && <li>{t(\"read\")}</li>}\n {canUpdateAll && <li>{t(\"update\")}</li>}\n {canDeleteAll && <li>{t(\"delete\")}</li>}\n </ul>\n </TableCell>\n </TableRow>\n );\n })}\n\n {(!roles || roles.length === 0) && <TableRow>\n <TableCell colspan={4}>\n <CenteredView className={\"flex flex-col gap-4 my-8 items-center\"}>\n <Typography variant={\"label\"}>\n {t(\"no_roles_yet\")}\n </Typography>\n {allowDefaultRolesCreation && <Button\n onClick={() => {\n DEFAULT_ROLES.forEach((role) => {\n saveRole(role);\n });\n }}>\n {t(\"create_default_roles\")}\n </Button>}\n </CenteredView>\n </TableCell>\n </TableRow>}\n\n </TableBody>\n\n </Table>\n\n <ConfirmationDialog\n open={Boolean(roleToBeDeleted)}\n loading={deleteInProgress}\n onAccept={() => {\n if (roleToBeDeleted) {\n setDeleteInProgress(true);\n deleteRole(roleToBeDeleted)\n .then(() => {\n setRoleToBeDeleted(undefined);\n })\n .finally(() => {\n setDeleteInProgress(false);\n })\n }\n }}\n onCancel={() => {\n setRoleToBeDeleted(undefined);\n }}\n title={<>{t(\"delete_confirmation_title\")}</>}\n body={<>{t(\"delete_role_confirmation\")}</>}/>\n\n </div>;\n}\n","import React, { useCallback, useState } from \"react\";\n\nimport { Role, useNavigationController, useTranslation\n} from \"@firecms/core\";\nimport { AddIcon, Button, Container, Typography } from \"@firecms/ui\";\nimport { RolesTable } from \"./RolesTable\";\nimport { RolesDetailsForm } from \"./RolesDetailsForm\";\n\nexport const RolesView = React.memo(\n function RolesView({ children }: { children?: React.ReactNode }) {\n const { t } = useTranslation();\n\n\n const { collections } = useNavigationController();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [selectedRole, setSelectedRole] = useState<Role | undefined>();\n\n const onRoleClicked = useCallback((user: Role) => {\n setDialogOpen(true);\n setSelectedRole(user);\n }, []);\n\n const handleClose = () => {\n setSelectedRole(undefined);\n setDialogOpen(false);\n };\n\n return (\n <Container className=\"w-full flex flex-col py-4 gap-4\" maxWidth={\"6xl\"}>\n\n {children}\n\n <div className=\"flex items-center mt-12\">\n <Typography gutterBottom variant=\"h4\"\n className=\"flex-grow\"\n component=\"h4\">{t(\"roles\")}</Typography>\n <Button\n size={\"large\"}\n startIcon={<AddIcon/>}\n onClick={() => setDialogOpen(true)}>{t(\"add_role\")}</Button>\n </div>\n\n <RolesTable onRoleClicked={onRoleClicked} editable={true}/>\n\n <RolesDetailsForm\n key={selectedRole?.id ?? \"new\"}\n open={dialogOpen}\n role={selectedRole}\n editable={true}\n collections={collections}\n handleClose={handleClose}/>\n\n </Container>\n )\n });\n","import React, { useCallback } from \"react\";\nimport * as Yup from \"yup\";\nimport {\n Button,\n CheckIcon,\n Chip,\n CopyIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n MultiSelect,\n MultiSelectItem,\n TextField,\n Tooltip,\n} from \"@firecms/ui\";\nimport { FieldCaption, Role, useAuthController, User, useSnackbarController, useTranslation\n} from \"@firecms/core\";\nimport { Formex, useCreateFormex } from \"@firecms/formex\";\n\nimport { areRolesEqual } from \"../../utils\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"../roles\";\n\nexport const getUserYupSchema = (t: any) => Yup.object().shape({\n displayName: Yup.string().required(t(\"required\")),\n email: Yup.string().email().required(t(\"required\")),\n roles: Yup.array().min(1)\n});\n\nfunction canUserBeEdited(loggedUser: User, user: User, users: User[], roles: Role[], t: any, prevUser?: User) {\n const admins = users.filter(u => u.roles?.map(r => r.id).includes(\"admin\"));\n const loggedUserIsAdmin = loggedUser.roles?.map(r => r.id).includes(\"admin\");\n const didRolesChange = !prevUser || !areRolesEqual(prevUser.roles ?? [], user.roles ?? []);\n\n if (didRolesChange && !loggedUserIsAdmin) {\n throw new Error(t(\"only_admins_change_roles\"));\n }\n\n // was the admin role removed\n const adminRoleRemoved = prevUser && prevUser.roles?.map(r => r.id).includes(\"admin\") && !user.roles?.map(r => r.id).includes(\"admin\");\n\n // avoid removing the last admin\n if (adminRoleRemoved && admins.length === 1) {\n throw new Error(t(\"must_be_at_least_one_admin\"));\n }\n return true;\n}\n\nexport function UserDetailsForm({\n open,\n user: userProp,\n handleClose\n }: {\n open: boolean,\n user?: User,\n handleClose: () => void\n}) {\n const { t } = useTranslation();\n const snackbarController = useSnackbarController();\n const {\n user: loggedInUser\n } = useAuthController();\n const {\n saveUser,\n users,\n roles,\n } = useUserManagement();\n const isNewUser = !userProp;\n\n const onUserUpdated = useCallback((savedUser: User): Promise<User> => {\n if (!loggedInUser) {\n throw new Error(t(\"logged_user_not_found\"));\n }\n try {\n canUserBeEdited(loggedInUser, savedUser, users, roles, t, userProp);\n return saveUser(savedUser);\n } catch (e: any) {\n return Promise.reject(e);\n }\n }, [roles, saveUser, userProp, users, loggedInUser, t]);\n\n const formex = useCreateFormex({\n initialValues: userProp ?? {\n displayName: \"\",\n email: \"\",\n roles: roles.filter(r => r.id === \"editor\")\n } as User,\n validation: (values) => {\n return getUserYupSchema(t).validate(values, { abortEarly: false })\n .then(() => {\n return {};\n }).catch((e) => {\n return e.inner.reduce((acc: any, error: any) => {\n acc[error.path] = error.message;\n return acc;\n }, {});\n });\n },\n onSubmit: (user: User, formexController) => {\n\n return onUserUpdated(user)\n .then(() => {\n handleClose();\n formexController.resetForm({\n values: user\n });\n }).catch((e) => {\n snackbarController.open({\n type: \"error\",\n message: e.message\n });\n });\n }\n });\n\n const {\n isSubmitting,\n touched,\n handleChange,\n values,\n errors,\n setFieldValue,\n dirty,\n handleSubmit,\n submitCount\n } = formex;\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => !open ? handleClose() : undefined}\n maxWidth={\"4xl\"}\n >\n <Formex value={formex}>\n <form\n onSubmit={handleSubmit}\n autoComplete={\"off\"}\n noValidate\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n height: \"100%\"\n }}>\n\n <DialogTitle variant={\"h4\"} gutterBottom={false}>{t(\"user\")}</DialogTitle>\n <DialogContent className=\"h-full flex-grow\">\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {!isNewUser && userProp?.uid && (\n <div className={\"col-span-12\"}>\n <div className={\"flex items-center gap-2\"}>\n <span className={\"text-sm text-surface-accent-600 dark:text-surface-accent-400\"}>{t(\"user_id\")}</span>\n <Chip size={\"small\"}>\n {userProp.uid}\n </Chip>\n <Tooltip title={t(\"copy\")}>\n <IconButton\n size={\"small\"}\n onClick={() => {\n navigator.clipboard.writeText(userProp.uid);\n snackbarController.open({\n type: \"success\",\n message: t(\"copied\")\n });\n }}>\n <CopyIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </div>\n </div>\n )}\n\n <div className={\"col-span-12\"}>\n <TextField\n name=\"displayName\"\n required\n error={submitCount > 0 && Boolean(errors.displayName)}\n value={values.displayName ?? \"\"}\n onChange={handleChange}\n aria-describedby=\"name-helper-text\"\n label={t(\"name\")}\n />\n <FieldCaption>\n {submitCount > 0 && Boolean(errors.displayName) ? errors.displayName : t(\"name_of_this_user\")}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n required\n error={submitCount > 0 && Boolean(errors.email)}\n name=\"email\"\n value={values.email ?? \"\"}\n onChange={handleChange}\n aria-describedby=\"email-helper-text\"\n label={t(\"email\")}\n />\n <FieldCaption>\n {submitCount > 0 && Boolean(errors.email) ? errors.email : t(\"email_of_this_user\")}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <MultiSelect\n className={\"w-full\"}\n label={t(\"roles\")}\n value={values.roles?.map(r => r.id) ?? []}\n onValueChange={(value: string[]) => setFieldValue(\"roles\", value.map(id => roles.find(r => r.id === id) as Role))}\n // renderValue={(value: string) => {\n // const userRole = roles\n // .find((role) => role.id === value);\n // if (!userRole) return null;\n // return <div className=\"flex flex-wrap space-x-2 space-y-2\">\n // <RoleChip key={userRole?.id} role={userRole}/>\n // </div>;\n // }}\n >\n {roles.map(userRole => <MultiSelectItem key={userRole.id}\n value={userRole.id}>\n <RoleChip key={userRole?.id} role={userRole}/>\n </MultiSelectItem>)}\n </MultiSelect>\n </div>\n\n </div>\n\n </DialogContent>\n\n <DialogActions>\n\n <Button variant={\"text\"}\n onClick={() => {\n handleClose();\n }}>{t(\"cancel\")}</Button>\n\n <LoadingButton\n variant=\"filled\"\n type=\"submit\"\n disabled={!dirty}\n loading={isSubmitting}\n >\n {isNewUser ? t(\"create_user\") : t(\"update\")}\n </LoadingButton>\n </DialogActions>\n </form>\n </Formex>\n\n </Dialog>\n );\n}\n","import { useState } from \"react\";\n\nimport { format } from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\n\nimport {\n defaultDateFormat,\n ConfirmationDialog, Role,\n useAuthController,\n useCustomizationController, User,\n useSnackbarController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n Avatar,\n Button,\n CenteredView,\n DeleteIcon,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { useUserManagement } from \"../../hooks\";\nimport { RoleChip } from \"../roles\";\nimport { PersistedUser } from \"../../types\";\n\nexport function UsersTable({ onUserClicked }: {\n onUserClicked: (user: User) => void;\n}) {\n const { t } = useTranslation();\n\n const {\n users,\n saveUser,\n deleteUser\n } = useUserManagement<PersistedUser>();\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n const customizationController = useCustomizationController();\n const dateUtilsLocale = customizationController?.locale ? locales[customizationController?.locale as keyof typeof locales] : undefined;\n const dateFormat: string = customizationController?.dateTimeFormat ?? defaultDateFormat;\n\n const [userToBeDeleted, setUserToBeDeleted] = useState<User | undefined>(undefined);\n const [deleteInProgress, setDeleteInProgress] = useState<boolean>(false);\n\n return (\n <div className=\"overflow-auto\">\n\n <Table className={\"w-full\"}>\n\n <TableHeader>\n <TableCell className=\"w-12\"></TableCell>\n <TableCell>{t(\"email\")}</TableCell>\n <TableCell>{t(\"name\")}</TableCell>\n <TableCell>{t(\"roles\")}</TableCell>\n <TableCell>{t(\"created_on\")}</TableCell>\n <TableCell className=\"w-12\"></TableCell>\n </TableHeader>\n <TableBody>\n {users && users.map((user) => {\n\n const userRoles: Role[] | undefined = user.roles;\n\n const formattedDate = user.created_on ? format(user.created_on, dateFormat, { locale: dateUtilsLocale }) : \"\";\n\n return (\n <TableRow\n key={\"row_\" + user.uid}\n onClick={() => {\n onUserClicked(user);\n }}\n >\n <TableCell className={\"w-12\"}>\n <Avatar\n src={user.photoURL ?? undefined}\n outerClassName=\"w-8 h-8 min-w-8 min-h-8 p-0\"\n className=\"text-sm\"\n hover={false}\n >\n {user.displayName\n ? user.displayName[0].toUpperCase()\n : (user.email ? user.email[0].toUpperCase() : \"U\")}\n </Avatar>\n </TableCell>\n <TableCell>{user.email}</TableCell>\n <TableCell className={\"font-medium align-left\"}>{user.displayName}</TableCell>\n <TableCell className=\"align-left\">\n {userRoles\n ? <div className=\"flex flex-wrap gap-2\">\n {userRoles.map(userRole =>\n <RoleChip key={userRole?.id} role={userRole} />\n )}\n </div>\n : null}\n </TableCell>\n <TableCell>{formattedDate}</TableCell>\n <TableCell className={\"w-12\"}>\n <Tooltip\n asChild={true}\n title={t(\"delete_this_user\")}>\n <IconButton\n size={\"smallest\"}\n onClick={(event) => {\n event.stopPropagation();\n return setUserToBeDeleted(user);\n }}>\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n );\n })}\n\n {(!users || users.length === 0) && <TableRow>\n <TableCell colspan={6}>\n <CenteredView className={\"flex flex-col gap-4 my-8 items-center\"}>\n <Typography variant={\"label\"}>\n {t(\"no_users_yet\")}\n </Typography>\n <Button\n onClick={() => {\n if (!authController.user?.uid) {\n throw Error(\"UsersTable, authController misconfiguration\");\n }\n saveUser({\n uid: authController.user?.uid,\n email: authController.user?.email,\n displayName: authController.user?.displayName,\n photoURL: authController.user?.photoURL,\n providerId: authController.user?.providerId,\n isAnonymous: authController.user?.isAnonymous,\n roles: [{ id: \"admin\", name: \"Admin\" }],\n created_on: new Date()\n })\n .then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"User added successfully\"\n })\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error adding user: \" + error.message,\n })\n });\n }}>\n {t(\"add_logged_user_as_admin\")}\n </Button>\n </CenteredView>\n </TableCell>\n </TableRow>}\n\n </TableBody>\n </Table>\n\n <ConfirmationDialog\n open={Boolean(userToBeDeleted)}\n loading={deleteInProgress}\n onAccept={() => {\n if (userToBeDeleted) {\n setDeleteInProgress(true);\n deleteUser(userToBeDeleted)\n .then(() => {\n setUserToBeDeleted(undefined);\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting user: \" + error.message,\n })\n })\n .finally(() => {\n setDeleteInProgress(false);\n })\n }\n }}\n onCancel={() => {\n setUserToBeDeleted(undefined);\n }}\n title={<>{t(\"delete_confirmation_title\")}</>}\n body={<>{t(\"delete_user_confirmation\")}</>} />\n </div>);\n}\n","import { AddIcon, Button, Container, Typography } from \"@firecms/ui\";\n\nimport { UsersTable } from \"./UsersTable\";\nimport { UserDetailsForm } from \"./UserDetailsForm\";\nimport React, { useCallback, useState } from \"react\";\nimport { useUserManagement } from \"../../hooks/useUserManagement\";\nimport { User, useTranslation\n} from \"@firecms/core\";\n\nexport const UsersView = function UsersView({ children }: { children?: React.ReactNode }) {\n const { t } = useTranslation();\n\n\n const [dialogOpen, setDialogOpen] = useState<boolean>(false);\n const [selectedUser, setSelectedUser] = useState<User | undefined>();\n const [newFormKey, setNewFormKey] = useState<number>(0);\n\n const { users } = useUserManagement();\n\n const onUserClicked = useCallback((user: User) => {\n setSelectedUser(user);\n setDialogOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setDialogOpen(false);\n setSelectedUser(undefined);\n }, []);\n\n const handleAddUser = useCallback(() => {\n setSelectedUser(undefined);\n setNewFormKey(k => k + 1);\n setDialogOpen(true);\n }, []);\n\n return (\n <Container className=\"w-full flex flex-col py-4 gap-4\" maxWidth={\"6xl\"}>\n\n {children}\n\n <div\n className=\"flex items-center mt-12\">\n <Typography gutterBottom variant=\"h4\"\n className=\"flex-grow\"\n component=\"h4\">{t(\"users\")}</Typography>\n <Button\n size={\"large\"}\n startIcon={<AddIcon/>}\n onClick={handleAddUser}>{t(\"add_user\")}</Button>\n </div>\n\n <UsersTable onUserClicked={onUserClicked}/>\n\n <UserDetailsForm\n key={selectedUser?.uid ?? `new-${newFormKey}`}\n open={dialogOpen}\n user={selectedUser}\n handleClose={handleClose}/>\n\n </Container>\n )\n};\n","import { FireCMSPlugin, useAuthController, User, useSnackbarController, useTranslation } from \"@firecms/core\";\nimport { UserManagementProvider } from \"./UserManagementProvider\";\nimport { UserManagement } from \"./types\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { DEFAULT_ROLES } from \"./components/roles/default_roles\";\n\nexport function useUserManagementPlugin<USER extends User = any>({ userManagement }: {\n userManagement: UserManagement<USER>,\n}): FireCMSPlugin {\n\n const noUsers = userManagement.users.length === 0;\n const noRoles = userManagement.roles.length === 0;\n\n return {\n key: \"user_management\",\n loading: userManagement.loading,\n userManagement:{\n ...userManagement,\n },\n homePage: {\n additionalChildrenStart: noUsers || noRoles\n ? <IntroWidget\n noUsers={noUsers}\n noRoles={noRoles}\n userManagement={userManagement}/>\n : undefined\n },\n provider: {\n Component: UserManagementProvider,\n props: {\n userManagement\n }\n }\n }\n}\n\nexport function IntroWidget({\n noUsers,\n noRoles,\n userManagement\n }: {\n noUsers: boolean;\n noRoles: boolean;\n userManagement: UserManagement<any>;\n}) {\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n const { t } = useTranslation();\n\n const buttonLabel = noUsers && noRoles\n ? t(\"create_default_roles_and_add_admin\")\n : noUsers\n ? t(\"add_current_user_as_admin\")\n : noRoles ? t(\"create_default_roles\") : undefined;\n\n return (\n <Paper\n className={\"my-4 flex flex-col px-4 py-6 bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>{t(\"create_your_users_and_roles\")}</Typography>\n <Typography>\n {t(\"no_users_or_roles_defined\")}\n </Typography>\n <Button\n\n onClick={() => {\n if (!authController.user?.uid) {\n throw Error(\"UsersTable, authController misconfiguration\");\n }\n if (noUsers) {\n userManagement.saveUser({\n uid: authController.user?.uid,\n email: authController.user?.email,\n displayName: authController.user?.displayName,\n photoURL: authController.user?.photoURL,\n providerId: authController.user?.providerId,\n isAnonymous: authController.user?.isAnonymous,\n roles: [{\n id: \"admin\",\n name: \"Admin\"\n }],\n created_on: new Date()\n })\n .then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"User added successfully\"\n })\n })\n .catch((error) => {\n snackbarController.open({\n type: \"error\",\n message: \"Error adding user: \" + error.message\n })\n });\n }\n if (noRoles) {\n DEFAULT_ROLES.forEach((role) => {\n userManagement.saveRole(role);\n });\n }\n }}>\n <AddIcon/>\n {buttonLabel}\n </Button>\n </Paper>\n );\n\n}\n","import { CMSView } from \"@firecms/core\";\nimport { RolesView, UsersView } from \"./components\";\nexport const userManagementAdminViews: CMSView[] = [\n {\n path: \"users\",\n name: \"cms_users\",\n group: \"Admin\",\n icon: \"face\",\n view: <UsersView/>\n },\n {\n path: \"roles\",\n name: \"roles_menu\",\n group: \"Admin\",\n icon: \"gpp_good\",\n view: <RolesView/>\n }\n]\n"],"names":["RESERVED_GROUPS","DEFAULT_PERMISSIONS","read","edit","create","delete","resolveUserRolePermissions","collection","user","roles","ownerId","uid","basePermissions","map","role","resolveCollectionRole","id","reduce","mergePermissions","isAdmin","defaultPermissions","thisCollectionPermissions","collectionPermissions","permA","permB","getUserRoles","fireCMSUser","undefined","find","r","filter","Boolean","areRolesEqual","rolesA","rolesB","rolesAIds","rolesBIds","length","every","includes","cacheDelegatedLoginToken","projectId","delegatedToken","data","parseJwt","expiry","Date","exp","localStorage","setItem","JSON","stringify","token","getDelegatedLoginTokenFromCache","entry","getItem","parse","clearDelegatedLoginTokensCache","i","key","startsWith","removeItem","Error","base64Url","split","base64","replace","jsonPayload","decodeURIComponent","window","atob","c","charCodeAt","toString","slice","join","darkenColor","hexColor","darkenBy","test","color","substring","parseInt","g","b","Math","floor","hexToRgbaWithOpacity","opacity","alpha","useBuildUserManagement","authController","dataSourceDelegate","rolesProp","usersPath","rolesPath","allowDefaultRolesCreation","includeCollectionConfigPermissions","rolesDefinedInCode","rolesLoading","setRolesLoading","React","useState","usersLoading","setUsersLoading","setRoles","usersWithRoleIds","setUsersWithRoleIds","users","u","rolesError","setRolesError","usersError","setUsersError","_usersLoading","_rolesLoading","loading","useEffect","initialised","initialLoading","listenCollection","path","onUpdate","entities","console","debug","newRoles","entityToRoles","equal","e","error","onError","newUsers","entitiesToUsers","saveUser","useCallback","roleIds","email","toLowerCase","trim","userExists","created_on","entity","values","deleteEntity","then","catch","saveEntity","status","entityId","removeUndefined","saveRole","roleData","deleteUser","deleteRole","defineRolesFor","mgmtUser","authenticator","warn","needsUidUpdate","needsPhotoUpdate","photoURL","updateReason","userRoles","some","userRoleIds","setUserRoles","getUser","docs","doc","newVar","updated_on","UserManagementContext","createContext","UserManagementProvider","t0","$","_c","children","userManagement","t1","useUserManagement","useContext","RoleChip","colorScheme","getColorSchemeForSeed","name","Chip","getRoleYupSchema","t","Yup","object","shape","string","required","canRoleBeEdited","loggedUser","loggedUserIsAdmin","RolesDetailsForm","open","editable","handleClose","collections","useTranslation","isNewRole","loggedInUser","useAuthController","savingError","setSavingError","role_0","onRoleUpdated","t2","t3","role_1","formexController","resetForm","e_0","t4","Promise","resolve","validate","abortEarly","_temp","_temp2","t5","initialValues","onSubmit","validation","formex","useCreateFormex","isSubmitting","touched","values_0","errors","errors_0","handleChange","setFieldValue","dirty","setFieldTouched","defaultCreate","defaultRead","defaultEdit","defaultDelete","t6","idTouched","getIn","toSnakeCase","t7","t8","handleSubmit","t9","Symbol","for","display","flexDirection","position","height","t10","t11","DialogTitle","t12","t13","t14","t15","t16","TextField","t17","t18","jsx","FieldCaption","t19","jsxs","t20","t21","t22","t23","e_2","t24","t25","t26","t27","t28","t29","TableCell","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","TableHeader","t40","t41","t42","t43","t44","t45","checked","t46","Checkbox","t47","Tooltip","t48","t49","t50","t51","checked_0","t52","t53","t54","t55","t56","t57","checked_1","t58","t59","t60","t61","t62","t63","checked_2","t64","t65","t66","t67","TableRow","t68","col","checked_3","checked_4","checked_5","checked_6","Button","t69","TableBody","t70","Paper","Table","t71","t72","t73","t74","config","t75","t76","t77","event","target","value","t78","createCollections","t79","t80","t81","SelectItem","t82","t83","t84","Select","t85","t86","t87","t88","t89","t90","t91","event_0","t92","editCollections","t93","value_0","t94","t95","t96","t97","t98","t99","t100","t101","t102","t103","t104","t105","t106","t107","event_1","t108","deleteCollections","t109","value_1","t110","t111","t112","t113","t114","t115","t116","t117","t118","t119","t120","DialogContent","t121","Typography","message","t122","t123","t124","t125","t126","t127","LoadingButton","t128","DialogActions","t129","t130","Formex","t131","Dialog","e_1","inner","forEach","DEFAULT_ROLES","RolesTable","onRoleClicked","roleToBeDeleted","setRoleToBeDeleted","deleteInProgress","setDeleteInProgress","canCreateAll","canReadAll","canUpdateAll","canDeleteAll","width","IconButton","stopPropagation","DeleteIcon","CenteredView","finally","ConfirmationDialog","RolesView","memo","useNavigationController","dialogOpen","setDialogOpen","selectedRole","setSelectedRole","AddIcon","Container","getUserYupSchema","displayName","array","min","canUserBeEdited","prevUser","admins","didRolesChange","adminRoleRemoved","UserDetailsForm","userProp","snackbarController","useSnackbarController","isNewUser","savedUser","reject","onUserUpdated","_temp4","type","submitCount","open_0","navigator","clipboard","writeText","CopyIcon","_temp5","r_1","_temp6","MultiSelect","userRole","MultiSelectItem","r_0","_temp3","acc","UsersTable","onUserClicked","customizationController","useCustomizationController","dateUtilsLocale","locale","locales","dateFormat","dateTimeFormat","defaultDateFormat","userToBeDeleted","setUserToBeDeleted","formattedDate","format","Avatar","toUpperCase","providerId","isAnonymous","error_0","UsersView","selectedUser","setSelectedUser","newFormKey","setNewFormKey","handleAddUser","k","useUserManagementPlugin","noUsers","noRoles","additionalChildrenStart","Component","props","homePage","provider","IntroWidget","buttonLabel","userManagementAdminViews","group","icon","view"],"mappings":"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"}