@abpjs/identity-pro 2.1.1 → 2.2.0

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.
package/dist/index.d.mts CHANGED
@@ -213,6 +213,13 @@ declare class IdentityService {
213
213
  * @returns Promise resolving when complete
214
214
  */
215
215
  deleteUser(id: string): Promise<void>;
216
+ /**
217
+ * Unlock a locked out user
218
+ * @since 2.2.0
219
+ * @param id - The user ID to unlock
220
+ * @returns Promise resolving when complete
221
+ */
222
+ unlockUser(id: string): Promise<void>;
216
223
  /**
217
224
  * Create a new user
218
225
  * @param body - The user data to create
@@ -498,6 +505,10 @@ interface UseRolesReturn {
498
505
  sortKey: string;
499
506
  /** Current sort order @since 1.0.0 */
500
507
  sortOrder: SortOrder;
508
+ /** Whether permissions modal is visible @since 2.2.0 */
509
+ visiblePermissions: boolean;
510
+ /** Provider key for permissions modal @since 2.2.0 */
511
+ permissionsProviderKey: string;
501
512
  /** Fetch all roles with optional pagination/filtering */
502
513
  fetchRoles: (params?: ABP.PageQueryParams) => Promise<RoleOperationResult>;
503
514
  /** Get a role by ID and set it as selected */
@@ -514,6 +525,10 @@ interface UseRolesReturn {
514
525
  setSortKey: (key: string) => void;
515
526
  /** Set sort order @since 1.0.0 */
516
527
  setSortOrder: (order: SortOrder) => void;
528
+ /** Handle permissions modal visibility change @since 2.2.0 */
529
+ onVisiblePermissionsChange: (value: boolean) => void;
530
+ /** Open permissions modal for a role @since 2.2.0 */
531
+ openPermissionsModal: (providerKey: string) => void;
517
532
  /** Reset state */
518
533
  reset: () => void;
519
534
  }
@@ -586,6 +601,10 @@ interface UseUsersReturn {
586
601
  sortKey: string;
587
602
  /** Current sort order @since 1.0.0 */
588
603
  sortOrder: SortOrder;
604
+ /** Whether permissions modal is visible @since 2.2.0 */
605
+ visiblePermissions: boolean;
606
+ /** Provider key for permissions modal @since 2.2.0 */
607
+ permissionsProviderKey: string;
589
608
  /** Fetch users with pagination */
590
609
  fetchUsers: (params?: ABP.PageQueryParams) => Promise<UserOperationResult>;
591
610
  /** Get a user by ID and set it as selected */
@@ -598,6 +617,8 @@ interface UseUsersReturn {
598
617
  updateUser: (id: string, user: Identity.UserSaveRequest) => Promise<UserOperationResult>;
599
618
  /** Delete a user */
600
619
  deleteUser: (id: string) => Promise<UserOperationResult>;
620
+ /** Unlock a locked out user @since 2.2.0 */
621
+ unlockUser: (id: string) => Promise<UserOperationResult>;
601
622
  /** Set the selected user */
602
623
  setSelectedUser: (user: Identity.UserItem | null) => void;
603
624
  /** Set page query parameters */
@@ -606,6 +627,10 @@ interface UseUsersReturn {
606
627
  setSortKey: (key: string) => void;
607
628
  /** Set sort order @since 1.0.0 */
608
629
  setSortOrder: (order: SortOrder) => void;
630
+ /** Handle permissions modal visibility change @since 2.2.0 */
631
+ onVisiblePermissionsChange: (value: boolean) => void;
632
+ /** Open permissions modal for a user @since 2.2.0 */
633
+ openPermissionsModal: (providerKey: string) => void;
609
634
  /** Reset state */
610
635
  reset: () => void;
611
636
  }
package/dist/index.d.ts CHANGED
@@ -213,6 +213,13 @@ declare class IdentityService {
213
213
  * @returns Promise resolving when complete
214
214
  */
215
215
  deleteUser(id: string): Promise<void>;
216
+ /**
217
+ * Unlock a locked out user
218
+ * @since 2.2.0
219
+ * @param id - The user ID to unlock
220
+ * @returns Promise resolving when complete
221
+ */
222
+ unlockUser(id: string): Promise<void>;
216
223
  /**
217
224
  * Create a new user
218
225
  * @param body - The user data to create
@@ -498,6 +505,10 @@ interface UseRolesReturn {
498
505
  sortKey: string;
499
506
  /** Current sort order @since 1.0.0 */
500
507
  sortOrder: SortOrder;
508
+ /** Whether permissions modal is visible @since 2.2.0 */
509
+ visiblePermissions: boolean;
510
+ /** Provider key for permissions modal @since 2.2.0 */
511
+ permissionsProviderKey: string;
501
512
  /** Fetch all roles with optional pagination/filtering */
502
513
  fetchRoles: (params?: ABP.PageQueryParams) => Promise<RoleOperationResult>;
503
514
  /** Get a role by ID and set it as selected */
@@ -514,6 +525,10 @@ interface UseRolesReturn {
514
525
  setSortKey: (key: string) => void;
515
526
  /** Set sort order @since 1.0.0 */
516
527
  setSortOrder: (order: SortOrder) => void;
528
+ /** Handle permissions modal visibility change @since 2.2.0 */
529
+ onVisiblePermissionsChange: (value: boolean) => void;
530
+ /** Open permissions modal for a role @since 2.2.0 */
531
+ openPermissionsModal: (providerKey: string) => void;
517
532
  /** Reset state */
518
533
  reset: () => void;
519
534
  }
@@ -586,6 +601,10 @@ interface UseUsersReturn {
586
601
  sortKey: string;
587
602
  /** Current sort order @since 1.0.0 */
588
603
  sortOrder: SortOrder;
604
+ /** Whether permissions modal is visible @since 2.2.0 */
605
+ visiblePermissions: boolean;
606
+ /** Provider key for permissions modal @since 2.2.0 */
607
+ permissionsProviderKey: string;
589
608
  /** Fetch users with pagination */
590
609
  fetchUsers: (params?: ABP.PageQueryParams) => Promise<UserOperationResult>;
591
610
  /** Get a user by ID and set it as selected */
@@ -598,6 +617,8 @@ interface UseUsersReturn {
598
617
  updateUser: (id: string, user: Identity.UserSaveRequest) => Promise<UserOperationResult>;
599
618
  /** Delete a user */
600
619
  deleteUser: (id: string) => Promise<UserOperationResult>;
620
+ /** Unlock a locked out user @since 2.2.0 */
621
+ unlockUser: (id: string) => Promise<UserOperationResult>;
601
622
  /** Set the selected user */
602
623
  setSelectedUser: (user: Identity.UserItem | null) => void;
603
624
  /** Set page query parameters */
@@ -606,6 +627,10 @@ interface UseUsersReturn {
606
627
  setSortKey: (key: string) => void;
607
628
  /** Set sort order @since 1.0.0 */
608
629
  setSortOrder: (order: SortOrder) => void;
630
+ /** Handle permissions modal visibility change @since 2.2.0 */
631
+ onVisiblePermissionsChange: (value: boolean) => void;
632
+ /** Open permissions modal for a user @since 2.2.0 */
633
+ openPermissionsModal: (providerKey: string) => void;
609
634
  /** Reset state */
610
635
  reset: () => void;
611
636
  }
package/dist/index.js CHANGED
@@ -164,6 +164,18 @@ var IdentityService = class {
164
164
  url: `/api/identity/users/${id}`
165
165
  });
166
166
  }
167
+ /**
168
+ * Unlock a locked out user
169
+ * @since 2.2.0
170
+ * @param id - The user ID to unlock
171
+ * @returns Promise resolving when complete
172
+ */
173
+ unlockUser(id) {
174
+ return this.rest.request({
175
+ method: "PUT",
176
+ url: `/api/identity/users/${id}/unlock`
177
+ });
178
+ }
167
179
  /**
168
180
  * Create a new user
169
181
  * @param body - The user data to create
@@ -560,6 +572,8 @@ function useRoles() {
560
572
  const [error, setError] = (0, import_react.useState)(null);
561
573
  const [sortKey, setSortKey] = (0, import_react.useState)("name");
562
574
  const [sortOrder, setSortOrder] = (0, import_react.useState)("");
575
+ const [visiblePermissions, setVisiblePermissions] = (0, import_react.useState)(false);
576
+ const [permissionsProviderKey, setPermissionsProviderKey] = (0, import_react.useState)("");
563
577
  const fetchRoles = (0, import_react.useCallback)(async (params) => {
564
578
  setIsLoading(true);
565
579
  setError(null);
@@ -645,12 +659,24 @@ function useRoles() {
645
659
  },
646
660
  [service, fetchRoles]
647
661
  );
662
+ const onVisiblePermissionsChange = (0, import_react.useCallback)((value) => {
663
+ setVisiblePermissions(value);
664
+ if (!value) {
665
+ setPermissionsProviderKey("");
666
+ }
667
+ }, []);
668
+ const openPermissionsModal = (0, import_react.useCallback)((providerKey) => {
669
+ setPermissionsProviderKey(providerKey);
670
+ setVisiblePermissions(true);
671
+ }, []);
648
672
  const reset = (0, import_react.useCallback)(() => {
649
673
  setRoles([]);
650
674
  setTotalCount(0);
651
675
  setSelectedRole(null);
652
676
  setIsLoading(false);
653
677
  setError(null);
678
+ setVisiblePermissions(false);
679
+ setPermissionsProviderKey("");
654
680
  }, []);
655
681
  return {
656
682
  roles,
@@ -660,6 +686,8 @@ function useRoles() {
660
686
  error,
661
687
  sortKey,
662
688
  sortOrder,
689
+ visiblePermissions,
690
+ permissionsProviderKey,
663
691
  fetchRoles,
664
692
  getRoleById,
665
693
  createRole,
@@ -668,6 +696,8 @@ function useRoles() {
668
696
  setSelectedRole,
669
697
  setSortKey,
670
698
  setSortOrder,
699
+ onVisiblePermissionsChange,
700
+ openPermissionsModal,
671
701
  reset
672
702
  };
673
703
  }
@@ -692,6 +722,8 @@ function useUsers() {
692
722
  const [pageQuery, setPageQuery] = (0, import_react2.useState)(DEFAULT_PAGE_QUERY);
693
723
  const [sortKey, setSortKey] = (0, import_react2.useState)("userName");
694
724
  const [sortOrder, setSortOrder] = (0, import_react2.useState)("");
725
+ const [visiblePermissions, setVisiblePermissions] = (0, import_react2.useState)(false);
726
+ const [permissionsProviderKey, setPermissionsProviderKey] = (0, import_react2.useState)("");
695
727
  const fetchUsers = (0, import_react2.useCallback)(
696
728
  async (params) => {
697
729
  setIsLoading(true);
@@ -799,6 +831,33 @@ function useUsers() {
799
831
  },
800
832
  [service, fetchUsers]
801
833
  );
834
+ const unlockUser = (0, import_react2.useCallback)(
835
+ async (id) => {
836
+ setIsLoading(true);
837
+ setError(null);
838
+ try {
839
+ await service.unlockUser(id);
840
+ await fetchUsers();
841
+ return { success: true };
842
+ } catch (err) {
843
+ const errorMessage = err instanceof Error ? err.message : "Failed to unlock user";
844
+ setError(errorMessage);
845
+ setIsLoading(false);
846
+ return { success: false, error: errorMessage };
847
+ }
848
+ },
849
+ [service, fetchUsers]
850
+ );
851
+ const onVisiblePermissionsChange = (0, import_react2.useCallback)((value) => {
852
+ setVisiblePermissions(value);
853
+ if (!value) {
854
+ setPermissionsProviderKey("");
855
+ }
856
+ }, []);
857
+ const openPermissionsModal = (0, import_react2.useCallback)((providerKey) => {
858
+ setPermissionsProviderKey(providerKey);
859
+ setVisiblePermissions(true);
860
+ }, []);
802
861
  const reset = (0, import_react2.useCallback)(() => {
803
862
  setUsers([]);
804
863
  setTotalCount(0);
@@ -807,6 +866,8 @@ function useUsers() {
807
866
  setIsLoading(false);
808
867
  setError(null);
809
868
  setPageQuery(DEFAULT_PAGE_QUERY);
869
+ setVisiblePermissions(false);
870
+ setPermissionsProviderKey("");
810
871
  }, []);
811
872
  return {
812
873
  users,
@@ -818,16 +879,21 @@ function useUsers() {
818
879
  pageQuery,
819
880
  sortKey,
820
881
  sortOrder,
882
+ visiblePermissions,
883
+ permissionsProviderKey,
821
884
  fetchUsers,
822
885
  getUserById,
823
886
  getUserRoles,
824
887
  createUser,
825
888
  updateUser,
826
889
  deleteUser,
890
+ unlockUser,
827
891
  setSelectedUser,
828
892
  setPageQuery,
829
893
  setSortKey,
830
894
  setSortOrder,
895
+ onVisiblePermissionsChange,
896
+ openPermissionsModal,
831
897
  reset
832
898
  };
833
899
  }
package/dist/index.mjs CHANGED
@@ -125,6 +125,18 @@ var IdentityService = class {
125
125
  url: `/api/identity/users/${id}`
126
126
  });
127
127
  }
128
+ /**
129
+ * Unlock a locked out user
130
+ * @since 2.2.0
131
+ * @param id - The user ID to unlock
132
+ * @returns Promise resolving when complete
133
+ */
134
+ unlockUser(id) {
135
+ return this.rest.request({
136
+ method: "PUT",
137
+ url: `/api/identity/users/${id}/unlock`
138
+ });
139
+ }
128
140
  /**
129
141
  * Create a new user
130
142
  * @param body - The user data to create
@@ -521,6 +533,8 @@ function useRoles() {
521
533
  const [error, setError] = useState(null);
522
534
  const [sortKey, setSortKey] = useState("name");
523
535
  const [sortOrder, setSortOrder] = useState("");
536
+ const [visiblePermissions, setVisiblePermissions] = useState(false);
537
+ const [permissionsProviderKey, setPermissionsProviderKey] = useState("");
524
538
  const fetchRoles = useCallback(async (params) => {
525
539
  setIsLoading(true);
526
540
  setError(null);
@@ -606,12 +620,24 @@ function useRoles() {
606
620
  },
607
621
  [service, fetchRoles]
608
622
  );
623
+ const onVisiblePermissionsChange = useCallback((value) => {
624
+ setVisiblePermissions(value);
625
+ if (!value) {
626
+ setPermissionsProviderKey("");
627
+ }
628
+ }, []);
629
+ const openPermissionsModal = useCallback((providerKey) => {
630
+ setPermissionsProviderKey(providerKey);
631
+ setVisiblePermissions(true);
632
+ }, []);
609
633
  const reset = useCallback(() => {
610
634
  setRoles([]);
611
635
  setTotalCount(0);
612
636
  setSelectedRole(null);
613
637
  setIsLoading(false);
614
638
  setError(null);
639
+ setVisiblePermissions(false);
640
+ setPermissionsProviderKey("");
615
641
  }, []);
616
642
  return {
617
643
  roles,
@@ -621,6 +647,8 @@ function useRoles() {
621
647
  error,
622
648
  sortKey,
623
649
  sortOrder,
650
+ visiblePermissions,
651
+ permissionsProviderKey,
624
652
  fetchRoles,
625
653
  getRoleById,
626
654
  createRole,
@@ -629,6 +657,8 @@ function useRoles() {
629
657
  setSelectedRole,
630
658
  setSortKey,
631
659
  setSortOrder,
660
+ onVisiblePermissionsChange,
661
+ openPermissionsModal,
632
662
  reset
633
663
  };
634
664
  }
@@ -653,6 +683,8 @@ function useUsers() {
653
683
  const [pageQuery, setPageQuery] = useState2(DEFAULT_PAGE_QUERY);
654
684
  const [sortKey, setSortKey] = useState2("userName");
655
685
  const [sortOrder, setSortOrder] = useState2("");
686
+ const [visiblePermissions, setVisiblePermissions] = useState2(false);
687
+ const [permissionsProviderKey, setPermissionsProviderKey] = useState2("");
656
688
  const fetchUsers = useCallback2(
657
689
  async (params) => {
658
690
  setIsLoading(true);
@@ -760,6 +792,33 @@ function useUsers() {
760
792
  },
761
793
  [service, fetchUsers]
762
794
  );
795
+ const unlockUser = useCallback2(
796
+ async (id) => {
797
+ setIsLoading(true);
798
+ setError(null);
799
+ try {
800
+ await service.unlockUser(id);
801
+ await fetchUsers();
802
+ return { success: true };
803
+ } catch (err) {
804
+ const errorMessage = err instanceof Error ? err.message : "Failed to unlock user";
805
+ setError(errorMessage);
806
+ setIsLoading(false);
807
+ return { success: false, error: errorMessage };
808
+ }
809
+ },
810
+ [service, fetchUsers]
811
+ );
812
+ const onVisiblePermissionsChange = useCallback2((value) => {
813
+ setVisiblePermissions(value);
814
+ if (!value) {
815
+ setPermissionsProviderKey("");
816
+ }
817
+ }, []);
818
+ const openPermissionsModal = useCallback2((providerKey) => {
819
+ setPermissionsProviderKey(providerKey);
820
+ setVisiblePermissions(true);
821
+ }, []);
763
822
  const reset = useCallback2(() => {
764
823
  setUsers([]);
765
824
  setTotalCount(0);
@@ -768,6 +827,8 @@ function useUsers() {
768
827
  setIsLoading(false);
769
828
  setError(null);
770
829
  setPageQuery(DEFAULT_PAGE_QUERY);
830
+ setVisiblePermissions(false);
831
+ setPermissionsProviderKey("");
771
832
  }, []);
772
833
  return {
773
834
  users,
@@ -779,16 +840,21 @@ function useUsers() {
779
840
  pageQuery,
780
841
  sortKey,
781
842
  sortOrder,
843
+ visiblePermissions,
844
+ permissionsProviderKey,
782
845
  fetchUsers,
783
846
  getUserById,
784
847
  getUserRoles,
785
848
  createUser,
786
849
  updateUser,
787
850
  deleteUser,
851
+ unlockUser,
788
852
  setSelectedUser,
789
853
  setPageQuery,
790
854
  setSortKey,
791
855
  setSortOrder,
856
+ onVisiblePermissionsChange,
857
+ openPermissionsModal,
792
858
  reset
793
859
  };
794
860
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abpjs/identity-pro",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "ABP Framework identity pro components for React - translated from @volo/abp.ng.identity",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -27,12 +27,12 @@
27
27
  "@chakra-ui/react": "^3.2.0",
28
28
  "@emotion/react": "^11.11.0",
29
29
  "react-icons": "^5.3.0",
30
- "@abpjs/theme-shared": "2.1.0",
31
- "@abpjs/core": "2.1.0",
32
- "@abpjs/permission-management": "2.1.0"
30
+ "@abpjs/theme-shared": "2.2.0",
31
+ "@abpjs/core": "2.2.0",
32
+ "@abpjs/permission-management": "2.2.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@volo/abp.ng.identity": "2.1.1",
35
+ "@volo/abp.ng.identity": "2.2.0",
36
36
  "@testing-library/jest-dom": "^6.9.1",
37
37
  "@testing-library/react": "^14.0.0",
38
38
  "@testing-library/user-event": "^14.6.1",