@firecms/user_management 3.0.0-canary.116 → 3.0.0-canary.118

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.
@@ -260,29 +260,29 @@ export function RolesDetailsForm({
260
260
  align="center">
261
261
  <Checkbox
262
262
  disabled={isAdmin || defaultCreate || !editable}
263
- checked={(isAdmin || defaultCreate || getIn(values, `collectionPermissions.${col.path}.create`)) ?? false}
264
- onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.path}.create`, checked)}/>
263
+ checked={(isAdmin || defaultCreate || getIn(values, `collectionPermissions.${col.id}.create`)) ?? false}
264
+ onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.create`, checked)}/>
265
265
  </TableCell>
266
266
  <TableCell
267
267
  align="center">
268
268
  <Checkbox
269
269
  disabled={isAdmin || defaultRead || !editable}
270
- checked={(isAdmin || defaultRead || getIn(values, `collectionPermissions.${col.path}.read`)) ?? false}
271
- onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.path}.read`, checked)}/>
270
+ checked={(isAdmin || defaultRead || getIn(values, `collectionPermissions.${col.id}.read`)) ?? false}
271
+ onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.read`, checked)}/>
272
272
  </TableCell>
273
273
  <TableCell
274
274
  align="center">
275
275
  <Checkbox
276
276
  disabled={isAdmin || defaultEdit || !editable}
277
- checked={(isAdmin || defaultEdit || getIn(values, `collectionPermissions.${col.path}.edit`)) ?? false}
278
- onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.path}.edit`, checked)}/>
277
+ checked={(isAdmin || defaultEdit || getIn(values, `collectionPermissions.${col.id}.edit`)) ?? false}
278
+ onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.edit`, checked)}/>
279
279
  </TableCell>
280
280
  <TableCell
281
281
  align="center">
282
282
  <Checkbox
283
283
  disabled={isAdmin || defaultDelete || !editable}
284
- checked={(isAdmin || defaultDelete || getIn(values, `collectionPermissions.${col.path}.delete`)) ?? false}
285
- onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.path}.delete`, checked)}/>
284
+ checked={(isAdmin || defaultDelete || getIn(values, `collectionPermissions.${col.id}.delete`)) ?? false}
285
+ onCheckedChange={(checked) => setFieldValue(`collectionPermissions.${col.id}.delete`, checked)}/>
286
286
  </TableCell>
287
287
 
288
288
  <TableCell
@@ -292,10 +292,10 @@ export function RolesDetailsForm({
292
292
  <Button
293
293
  className={"color-inherit"}
294
294
  onClick={() => {
295
- setFieldValue(`collectionPermissions.${col.path}.create`, true);
296
- setFieldValue(`collectionPermissions.${col.path}.read`, true);
297
- setFieldValue(`collectionPermissions.${col.path}.edit`, true);
298
- setFieldValue(`collectionPermissions.${col.path}.delete`, true);
295
+ setFieldValue(`collectionPermissions.${col.id}.create`, true);
296
+ setFieldValue(`collectionPermissions.${col.id}.read`, true);
297
+ setFieldValue(`collectionPermissions.${col.id}.edit`, true);
298
+ setFieldValue(`collectionPermissions.${col.id}.delete`, true);
299
299
  }}
300
300
  disabled={isAdmin || !editable}
301
301
  variant={"text"}>
@@ -2,10 +2,18 @@ import React, { useCallback, useEffect } from "react";
2
2
  import equal from "react-fast-compare"
3
3
 
4
4
  import { UserManagement } from "../types";
5
- import { Authenticator, DataSourceDelegate, Entity, PermissionsBuilder, Role, User } from "@firecms/core";
5
+ import {
6
+ Authenticator,
7
+ DataSourceDelegate,
8
+ Entity,
9
+ PermissionsBuilder,
10
+ removeUndefined,
11
+ Role,
12
+ User
13
+ } from "@firecms/core";
6
14
  import { resolveUserRolePermissions } from "../utils";
7
15
 
8
- type UserWithRoleIds = User & { roles: string[] };
16
+ type UserWithRoleIds = Omit<User, "roles"> & { roles: string[] };
9
17
 
10
18
  export interface UserManagementParams {
11
19
 
@@ -154,15 +162,22 @@ export function useBuildUserManagement({
154
162
  const roleIds = user.roles?.map(r => r.id);
155
163
  const email = user.email?.toLowerCase().trim();
156
164
  if (!email) throw Error("Email is required");
165
+
166
+ const userExists = users.find(u => u.email?.toLowerCase() === email);
157
167
  const data = {
158
168
  ...user,
159
- roles: roleIds
169
+ roles: roleIds ?? []
160
170
  };
171
+ if (!userExists) {
172
+ // @ts-ignore
173
+ data.created_on = new Date();
174
+ }
175
+
161
176
  return dataSourceDelegate.saveEntity({
162
177
  status: "existing",
163
178
  path: usersPath,
164
179
  entityId: email,
165
- values: data
180
+ values: removeUndefined(data)
166
181
  }).then(() => user);
167
182
  }, [usersPath, dataSourceDelegate?.initialised]);
168
183
 
@@ -178,7 +193,7 @@ export function useBuildUserManagement({
178
193
  status: "existing",
179
194
  path: rolesPath,
180
195
  entityId: id,
181
- values: roleData
196
+ values: removeUndefined(roleData)
182
197
  }).then(() => {
183
198
  return;
184
199
  });