@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.es.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","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","t9","t10","t11","t12","t13","t14","t15","t16","t17","e_2","t18","t19","t20","t21","t22","t23","t24","t25","t26","checked","t27","t28","t29","t30","checked_0","t31","t32","t33","t34","checked_1","t35","t36","t37","t38","checked_2","t39","t40","t41","t42","col","checked_3","checked_4","checked_5","checked_6","t43","t44","t45","t46","config","t47","t48","event","target","value","t49","createCollections","t50","t51","t52","_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","t79","message","t80","t81","t82","t83","t84","t85","handleSubmit","t86","t87","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","stopPropagation","finally","RolesView","memo","useNavigationController","dialogOpen","setDialogOpen","selectedRole","setSelectedRole","UserYupSchema","displayName","array","min","canUserBeEdited","prevUser","admins","didRolesChange","adminRoleRemoved","UserDetailsForm","userProp","snackbarController","useSnackbarController","isNewUser","savedUser","reject","onUserUpdated","type","submitCount","open_0","r_1","_temp7","userRole","r_0","acc","UsersTable","onUserClicked","customizationController","useCustomizationController","dateUtilsLocale","locale","locales","dateFormat","dateTimeFormat","defaultDateFormat","userToBeDeleted","setUserToBeDeleted","formattedDate","format","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.es.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","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","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","e_2","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","checked","t46","t47","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","t68","col","checked_3","checked_4","checked_5","checked_6","t69","t70","t71","t72","t73","t74","config","t75","t76","t77","event","target","value","t78","createCollections","t79","t80","t81","t82","t83","t84","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","t121","message","t122","t123","t124","t125","t126","t127","t128","t129","t130","t131","e_1","inner","forEach","DEFAULT_ROLES","RolesTable","onRoleClicked","roleToBeDeleted","setRoleToBeDeleted","deleteInProgress","setDeleteInProgress","canCreateAll","canReadAll","canUpdateAll","canDeleteAll","width","stopPropagation","finally","RolesView","memo","useNavigationController","dialogOpen","setDialogOpen","selectedRole","setSelectedRole","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","_temp5","r_1","_temp6","userRole","r_0","_temp3","acc","UsersTable","onUserClicked","customizationController","useCustomizationController","dateUtilsLocale","locale","locales","dateFormat","dateTimeFormat","defaultDateFormat","userToBeDeleted","setUserToBeDeleted","formattedDate","format","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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"}