@firecms/user_management 3.0.0-beta.13 → 3.0.0-beta.15

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.
@@ -32,4 +32,9 @@ export type UserManagement<USER extends User = User> = {
32
32
  defineRolesFor: (user: User) => Promise<Role[] | undefined> | Role[] | undefined;
33
33
  rolesError?: Error;
34
34
  usersError?: Error;
35
+ /**
36
+ * Function to get a user by uid.
37
+ * @param uid
38
+ */
39
+ getUser: (uid: string) => User | null;
35
40
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@firecms/user_management",
3
3
  "type": "module",
4
- "version": "3.0.0-beta.13",
4
+ "version": "3.0.0-beta.15",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -29,9 +29,9 @@
29
29
  "types": "dist/index.d.ts",
30
30
  "source": "src/index.ts",
31
31
  "dependencies": {
32
- "@firecms/core": "^3.0.0-beta.13",
33
- "@firecms/formex": "^3.0.0-beta.13",
34
- "@firecms/ui": "^3.0.0-beta.13",
32
+ "@firecms/core": "^3.0.0-beta.15",
33
+ "@firecms/formex": "^3.0.0-beta.15",
34
+ "@firecms/ui": "^3.0.0-beta.15",
35
35
  "date-fns": "^3.6.0"
36
36
  },
37
37
  "peerDependencies": {
@@ -57,5 +57,5 @@
57
57
  "src",
58
58
  "bin"
59
59
  ],
60
- "gitHead": "26d5e1f33a7ac00c78e45cd3cb3c397f4ba00821"
60
+ "gitHead": "0abe2ca034f396e389db595f07ef4b24b439c648"
61
61
  }
@@ -425,6 +425,7 @@ export function RolesDetailsForm({
425
425
  {savingError.message ?? "There was an error saving this role"}
426
426
  </Typography>}
427
427
  <Button variant={"text"}
428
+ color={"primary"}
428
429
  onClick={() => {
429
430
  handleClose();
430
431
  }}>
@@ -436,7 +437,6 @@ export function RolesDetailsForm({
436
437
  type="submit"
437
438
  disabled={!dirty}
438
439
  loading={isSubmitting}
439
- startIcon={<CheckIcon/>}
440
440
  >
441
441
  {isNewRole ? "Create role" : "Update"}
442
442
  </LoadingButton>
@@ -205,6 +205,7 @@ export function UserDetailsForm({
205
205
  <DialogActions>
206
206
 
207
207
  <Button variant={"text"}
208
+ color={"primary"}
208
209
  onClick={() => {
209
210
  handleClose();
210
211
  }}>
@@ -217,7 +218,6 @@ export function UserDetailsForm({
217
218
  type="submit"
218
219
  disabled={!dirty}
219
220
  loading={isSubmitting}
220
- startIcon={<CheckIcon/>}
221
221
  >
222
222
  {isNewUser ? "Create user" : "Update"}
223
223
  </LoadingButton>
@@ -186,6 +186,22 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<any> =
186
186
  // @ts-ignore
187
187
  data.created_on = new Date();
188
188
  }
189
+ // delete the previous user entry if it exists and the uid has changed
190
+ if (userExists && userExists.uid !== user.uid) {
191
+ const entity: Entity<any> = {
192
+ values: {},
193
+ path: usersPath,
194
+ id: userExists.uid
195
+ }
196
+ await dataSourceDelegate.deleteEntity({ entity })
197
+ .then(() => {
198
+ console.debug("Deleted previous user", userExists);
199
+ })
200
+ .catch(e => {
201
+ console.error("Error deleting user", e);
202
+ });
203
+
204
+ }
189
205
 
190
206
  return dataSourceDelegate.saveEntity({
191
207
  status: "existing",
@@ -259,9 +275,14 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<any> =
259
275
  }, [roles, usersWithRoleIds]);
260
276
 
261
277
  const authenticator: Authenticator<USER> = useCallback(({ user }) => {
278
+
262
279
  if (loading) {
263
280
  return false;
264
281
  }
282
+ if (user === null) {
283
+ console.warn("User is null, returning");
284
+ return false;
285
+ }
265
286
 
266
287
  if (users.length === 0) {
267
288
  console.warn("No users created yet");
@@ -270,6 +291,18 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<any> =
270
291
 
271
292
  const mgmtUser = users.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());
272
293
  if (mgmtUser) {
294
+ // check if the uid is updated in the user management system
295
+ if (mgmtUser.uid !== user.uid) {
296
+ console.warn("User uid has changed, updating user in user management system");
297
+ saveUser({
298
+ ...mgmtUser,
299
+ uid: user.uid
300
+ }).then(() => {
301
+ console.debug("User updated in user management system", mgmtUser);
302
+ }).catch(e => {
303
+ console.error("Error updating user in user management system", e);
304
+ });
305
+ }
273
306
  console.debug("User found in user management system", mgmtUser);
274
307
  return true;
275
308
  }
@@ -286,6 +319,12 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<any> =
286
319
  authController.setUserRoles?.(userRoles ?? []);
287
320
  }, [userRoleIds]);
288
321
 
322
+ const getUser = useCallback((uid: string): USER | null => {
323
+ if (!users) return null;
324
+ const user = users.find(u => u.uid === uid);
325
+ return user ?? null;
326
+ }, [users]);
327
+
289
328
  return {
290
329
  loading,
291
330
  roles,
@@ -305,6 +344,7 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<any> =
305
344
  ...authController,
306
345
  initialLoading: authController.initialLoading || loading,
307
346
  userRoles: userRoles,
347
+ getUser,
308
348
  user: authController.user ? {
309
349
  ...authController.user,
310
350
  roles: userRoles
@@ -44,4 +44,10 @@ export type UserManagement<USER extends User = User> = {
44
44
  rolesError?: Error;
45
45
  usersError?: Error;
46
46
 
47
+ /**
48
+ * Function to get a user by uid.
49
+ * @param uid
50
+ */
51
+ getUser: (uid: string) => User | null;
52
+
47
53
  };