@rebasepro/client-firebase 0.2.4 → 0.2.5

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,5 +1,5 @@
1
1
  import { ApplicationVerifier, ConfirmationResult, User as FirebaseUser } from "@firebase/auth";
2
- import { AuthController, Role, User } from "@rebasepro/types";
2
+ import type { AuthController, User } from "@rebasepro/types";
3
3
  /**
4
4
  * @group Firebase
5
5
  */
@@ -37,5 +37,5 @@ export type FirebaseAuthController<USER extends User = FirebaseUserWrapper, Extr
37
37
  */
38
38
  skipLogin: () => void;
39
39
  setUser: (user: USER | null) => void;
40
- setUserRoles: (roles: Role[]) => void;
40
+ setUserRoles: (roles: string[]) => void;
41
41
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rebasepro/client-firebase",
3
3
  "type": "module",
4
- "version": "0.2.4",
4
+ "version": "0.2.5",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -14,12 +14,12 @@
14
14
  "fast-equals": "6.0.0",
15
15
  "fuse.js": "^7.3.0",
16
16
  "react-router-dom": "^7.15.1",
17
- "@rebasepro/admin": "0.2.4",
18
- "@rebasepro/common": "0.2.4",
19
- "@rebasepro/core": "0.2.4",
20
- "@rebasepro/types": "0.2.4",
21
- "@rebasepro/ui": "0.2.4",
22
- "@rebasepro/utils": "0.2.4"
17
+ "@rebasepro/admin": "0.2.5",
18
+ "@rebasepro/core": "0.2.5",
19
+ "@rebasepro/common": "0.2.5",
20
+ "@rebasepro/ui": "0.2.5",
21
+ "@rebasepro/utils": "0.2.5",
22
+ "@rebasepro/types": "0.2.5"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "firebase": "^10.12.2 || ^11.0.0 || ^12.0.0",
@@ -6,12 +6,17 @@ import {
6
6
  AuthController,
7
7
  DataDriver,
8
8
  Entity,
9
- Role,
10
9
  User,
11
10
  UserManagementDelegate
12
11
  } from "@rebasepro/types";
13
12
  import { FirebaseAccessGate } from "./useFirebaseAccessGate";
14
13
 
14
+ export interface Role {
15
+ id: string;
16
+ name: string;
17
+ isAdmin?: boolean;
18
+ }
19
+
15
20
  type UserWithRoleIds<USER extends User = User> = Omit<USER, "roles"> & { roles: string[] };
16
21
 
17
22
  export interface UserManagementDelegateParams<CONTROLLER extends AuthController<User> = AuthController<User>> {
@@ -254,12 +259,12 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<User> =
254
259
 
255
260
 
256
261
 
257
- const defineRolesFor: ((user: User) => Role[] | undefined) = useCallback((user) => {
262
+ const defineRolesFor: ((user: User) => string[] | undefined) = useCallback((user) => {
258
263
  if (!usersWithRoleIds) throw Error("Users not loaded");
259
264
  const mgmtUser = usersWithRoleIds.find(u => u.email?.toLowerCase() === user?.email?.toLowerCase());
260
265
  if (!mgmtUser || !mgmtUser.roles) return undefined;
261
- return roles.filter(r => mgmtUser.roles.includes(r.id));
262
- }, [roles, usersWithRoleIds]);
266
+ return mgmtUser.roles;
267
+ }, [usersWithRoleIds]);
263
268
 
264
269
  const accessGate: FirebaseAccessGate<USER> = useCallback(({ user }) => {
265
270
 
@@ -303,9 +308,9 @@ export function useBuildUserManagement<CONTROLLER extends AuthController<User> =
303
308
  }, [loading, users]);
304
309
 
305
310
  const userRoles = authController.user ? defineRolesFor(authController.user) : undefined;
306
- const isAdmin = (userRoles ?? []).some(r => r.id === "admin");
311
+ const isAdmin = (userRoles ?? []).some(r => r === "admin");
307
312
 
308
- const userRoleIds = userRoles?.map(r => r.id);
313
+ const userRoleIds = userRoles;
309
314
  useEffect(() => {
310
315
  console.debug("Setting user roles", {
311
316
  userRoles,
@@ -24,14 +24,14 @@ import {
24
24
  } from "@firebase/auth";
25
25
  import { FirebaseApp } from "@firebase/app";
26
26
  import { FirebaseAuthController, FirebaseSignInOption, FirebaseSignInProvider, FirebaseUserWrapper } from "../types";
27
- import { Role, User } from "@rebasepro/types";
27
+ import type { User } from "@rebasepro/types";
28
28
 
29
29
  export interface FirebaseAuthControllerProps {
30
30
  loading?: boolean;
31
31
  firebaseApp?: FirebaseApp;
32
32
  signInOptions?: Array<FirebaseSignInProvider | FirebaseSignInOption>;
33
33
  onSignOut?: () => void;
34
- defineRolesFor?: (user: User) => Promise<Role[] | undefined> | Role[] | undefined;
34
+ defineRolesFor?: (user: User) => Promise<string[] | undefined> | string[] | undefined;
35
35
  }
36
36
 
37
37
  /**
@@ -53,13 +53,11 @@ export const useFirebaseAuthController = <USER extends FirebaseUserWrapper = any
53
53
  const [authLoading, setAuthLoading] = useState(true);
54
54
  const [loginSkipped, setLoginSkipped] = useState<boolean>(false);
55
55
  const [confirmationResult, setConfirmationResult] = useState<undefined | ConfirmationResult>();
56
- const [userRoles, _setUserRoles] = useState<Role[] | undefined>();
56
+ const [userRoles, _setUserRoles] = useState<string[] | undefined>();
57
57
  const [extra, setExtra] = useState<any>();
58
58
 
59
- const setUserRoles = useCallback((roles: Role[] | undefined) => {
60
- const currentRoleIds = userRoles?.map(r => r.id);
61
- const newRoleIds = roles?.map(r => r.id);
62
- if (!equal(currentRoleIds, newRoleIds)) {
59
+ const setUserRoles = useCallback((roles: string[] | undefined) => {
60
+ if (!equal(userRoles, roles)) {
63
61
  _setUserRoles(roles);
64
62
  }
65
63
  }, [userRoles]);
@@ -299,7 +297,7 @@ export const useFirebaseAuthController = <USER extends FirebaseUserWrapper = any
299
297
  const firebaseUserWrapper: FirebaseUserWrapper | null = loggedUser
300
298
  ? {
301
299
  ...loggedUser,
302
- roles: userRoles?.map(r => r.id), // User.roles is string[], keep Role[] internally only
300
+ roles: userRoles,
303
301
  firebaseUser: loggedUser
304
302
  }
305
303
  : null;
@@ -1,6 +1,6 @@
1
1
  import { ApplicationVerifier, ConfirmationResult, User as FirebaseUser } from "@firebase/auth";
2
2
 
3
- import { AuthController, Role, User } from "@rebasepro/types";
3
+ import type { AuthController, User } from "@rebasepro/types";
4
4
 
5
5
  /**
6
6
  * @group Firebase
@@ -69,6 +69,6 @@ export type FirebaseAuthController<USER extends User = FirebaseUserWrapper, Extr
69
69
 
70
70
  setUser: (user: USER | null) => void;
71
71
 
72
- setUserRoles: (roles: Role[]) => void;
72
+ setUserRoles: (roles: string[]) => void;
73
73
 
74
74
  };