@frontegg/redux-store 6.185.0-alpha.1 → 6.185.0-alpha.2

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.
Files changed (65) hide show
  1. package/auth/AcceptInvitationState/index.d.ts +2 -0
  2. package/auth/AccountSettingsState/index.d.ts +2 -0
  3. package/auth/ActivateState/index.d.ts +3 -0
  4. package/auth/ApiTokensState/index.d.ts +2 -0
  5. package/auth/ApplicationsState/index.d.ts +83 -0
  6. package/auth/ApplicationsState/index.js +35 -0
  7. package/auth/ApplicationsState/interfaces.d.ts +11 -0
  8. package/auth/ApplicationsState/interfaces.js +1 -0
  9. package/auth/ApplicationsState/saga.d.ts +39 -0
  10. package/auth/ApplicationsState/saga.js +250 -0
  11. package/auth/CustomLoginState/index.d.ts +2 -0
  12. package/auth/Entitlements/saga.js +5 -2
  13. package/auth/Entitlements/utils.d.ts +10 -9
  14. package/auth/Entitlements/utils.js +56 -11
  15. package/auth/ForgotPasswordState/index.d.ts +2 -0
  16. package/auth/GroupsState/groupsDialogsState.d.ts +12 -0
  17. package/auth/GroupsState/index.d.ts +2 -0
  18. package/auth/ImpersonationState/index.d.ts +2 -0
  19. package/auth/LoginState/index.d.ts +2 -0
  20. package/auth/LoginState/saga.js +1 -1
  21. package/auth/MSP/AllAccountsState/allAccountsDialogsState.d.ts +14 -0
  22. package/auth/MSP/AllAccountsState/index.d.ts +3 -0
  23. package/auth/MfaState/index.d.ts +2 -0
  24. package/auth/PasskeysState/index.d.ts +2 -0
  25. package/auth/ProfileState/index.d.ts +2 -0
  26. package/auth/Provisioning/index.d.ts +2 -0
  27. package/auth/ResetPhoneNumberState/index.d.ts +2 -0
  28. package/auth/RolesState/index.d.ts +2 -0
  29. package/auth/SSOState/index.d.ts +2 -0
  30. package/auth/Security/RestrictionsState/index.d.ts +3 -0
  31. package/auth/Security/SecurityCenterState/index.d.ts +2 -0
  32. package/auth/Security/SecurityPolicyState/index.d.ts +13 -0
  33. package/auth/Security/SessionsPolicyState/index.d.ts +2 -0
  34. package/auth/SessionsState/index.d.ts +2 -0
  35. package/auth/SignUp/index.d.ts +2 -0
  36. package/auth/SmsState/index.d.ts +2 -0
  37. package/auth/SocialLogins/index.d.ts +2 -0
  38. package/auth/StepUpState/index.d.ts +2 -0
  39. package/auth/TeamState/index.d.ts +6 -4
  40. package/auth/TeamState/interfaces.d.ts +7 -1
  41. package/auth/TeamState/saga.js +47 -9
  42. package/auth/TenantsState/index.d.ts +2 -0
  43. package/auth/index.d.ts +9 -2
  44. package/auth/index.js +2 -0
  45. package/auth/initialState.js +2 -0
  46. package/auth/interfaces.d.ts +2 -0
  47. package/auth/reducer.d.ts +9 -3
  48. package/auth/reducer.js +3 -2
  49. package/auth/saga.js +2 -1
  50. package/auth/utils.d.ts +6 -0
  51. package/index.js +1 -1
  52. package/node/auth/ApplicationsState/index.js +42 -0
  53. package/node/auth/ApplicationsState/interfaces.js +5 -0
  54. package/node/auth/ApplicationsState/saga.js +262 -0
  55. package/node/auth/Entitlements/saga.js +3 -1
  56. package/node/auth/Entitlements/utils.js +55 -10
  57. package/node/auth/LoginState/saga.js +1 -1
  58. package/node/auth/TeamState/saga.js +45 -7
  59. package/node/auth/index.js +24 -0
  60. package/node/auth/initialState.js +2 -0
  61. package/node/auth/reducer.js +3 -2
  62. package/node/auth/saga.js +2 -1
  63. package/node/index.js +1 -1
  64. package/package.json +2 -2
  65. package/toolkit/index.d.ts +1 -1
@@ -55,6 +55,7 @@ declare const reducers: {
55
55
  securityCenterState?: import("..").SecurityCenterState | undefined;
56
56
  smsState?: import("..").SmsState | undefined;
57
57
  stepUpState?: import("..").StepUpState | undefined;
58
+ applicationsState?: import("..").ApplicationsState | undefined;
58
59
  routes: import("..").AuthPageRoutes;
59
60
  header?: any;
60
61
  loaderComponent?: any;
@@ -106,6 +107,7 @@ declare const reducers: {
106
107
  securityCenterState?: import("..").SecurityCenterState | undefined;
107
108
  smsState?: import("..").SmsState | undefined;
108
109
  stepUpState?: import("..").StepUpState | undefined;
110
+ applicationsState?: import("..").ApplicationsState | undefined;
109
111
  routes: import("..").AuthPageRoutes;
110
112
  header?: any;
111
113
  loaderComponent?: any;
@@ -56,6 +56,7 @@ declare const reducers: {
56
56
  securityCenterState?: import("..").SecurityCenterState | undefined;
57
57
  smsState?: import("..").SmsState | undefined;
58
58
  stepUpState?: import("..").StepUpState | undefined;
59
+ applicationsState?: import("..").ApplicationsState | undefined;
59
60
  routes: import("..").AuthPageRoutes;
60
61
  header?: any;
61
62
  loaderComponent?: any;
@@ -107,6 +108,7 @@ declare const reducers: {
107
108
  securityCenterState?: import("..").SecurityCenterState | undefined;
108
109
  smsState?: import("..").SmsState | undefined;
109
110
  stepUpState?: import("..").StepUpState | undefined;
111
+ applicationsState?: import("..").ApplicationsState | undefined;
110
112
  routes: import("..").AuthPageRoutes;
111
113
  header?: any;
112
114
  loaderComponent?: any;
@@ -56,6 +56,7 @@ declare const reducers: {
56
56
  securityCenterState?: import("..").SecurityCenterState | undefined;
57
57
  smsState?: import("..").SmsState | undefined;
58
58
  stepUpState?: import("..").StepUpState | undefined;
59
+ applicationsState?: import("..").ApplicationsState | undefined;
59
60
  routes: import("..").AuthPageRoutes;
60
61
  header?: any;
61
62
  loaderComponent?: any;
@@ -107,6 +108,7 @@ declare const reducers: {
107
108
  securityCenterState?: import("..").SecurityCenterState | undefined;
108
109
  smsState?: import("..").SmsState | undefined;
109
110
  stepUpState?: import("..").StepUpState | undefined;
111
+ applicationsState?: import("..").ApplicationsState | undefined;
110
112
  routes: import("..").AuthPageRoutes;
111
113
  header?: any;
112
114
  loaderComponent?: any;
@@ -164,6 +166,7 @@ declare const reducers: {
164
166
  securityCenterState?: import("..").SecurityCenterState | undefined;
165
167
  smsState?: import("..").SmsState | undefined;
166
168
  stepUpState?: import("..").StepUpState | undefined;
169
+ applicationsState?: import("..").ApplicationsState | undefined;
167
170
  routes: import("..").AuthPageRoutes;
168
171
  header?: any;
169
172
  loaderComponent?: any;
@@ -73,6 +73,7 @@ declare const reducers: {
73
73
  securityCenterState?: import("..").SecurityCenterState | undefined;
74
74
  smsState?: import("..").SmsState | undefined;
75
75
  stepUpState?: import("..").StepUpState | undefined;
76
+ applicationsState?: import("..").ApplicationsState | undefined;
76
77
  routes: import("..").AuthPageRoutes;
77
78
  header?: any;
78
79
  loaderComponent?: any;
@@ -124,6 +125,7 @@ declare const reducers: {
124
125
  securityCenterState?: import("..").SecurityCenterState | undefined;
125
126
  smsState?: import("..").SmsState | undefined;
126
127
  stepUpState?: import("..").StepUpState | undefined;
128
+ applicationsState?: import("..").ApplicationsState | undefined;
127
129
  routes: import("..").AuthPageRoutes;
128
130
  header?: any;
129
131
  loaderComponent?: any;
@@ -0,0 +1,83 @@
1
+ import { ApplicationsState, UserAppsAssignmentPayload } from './interfaces';
2
+ import { WithCallback } from '../../interfaces';
3
+ declare const applicationsState: ApplicationsState;
4
+ declare const reducers: {
5
+ setApplicationsState: {
6
+ prepare: (payload: Partial<ApplicationsState>) => {
7
+ payload: Partial<ApplicationsState>;
8
+ };
9
+ reducer: (state: import("..").AuthState, { payload }: {
10
+ payload: Partial<ApplicationsState>;
11
+ type: string;
12
+ }) => {
13
+ onRedirectTo: (path: string, opts?: import("@frontegg/rest-api").RedirectOptions | undefined) => void;
14
+ error?: any;
15
+ isAuthenticated: boolean;
16
+ userIp?: string | undefined;
17
+ isLoading: boolean;
18
+ keepSessionAlive?: boolean | undefined;
19
+ socialLoginOptions?: {
20
+ promptConsent?: boolean | undefined;
21
+ } | undefined;
22
+ user?: import("..").User | null | undefined;
23
+ isSSOAuth: boolean;
24
+ ssoACS?: string | undefined;
25
+ includeQueryParam?: boolean | undefined;
26
+ loginState: import("..").LoginState;
27
+ activateState: import("..").ActivateAccountState;
28
+ acceptInvitationState: import("..").AcceptInvitationState;
29
+ forgotPasswordState: import("..").ForgotPasswordState;
30
+ resetPhoneNumberState: import("..").ResetPhoneNumberState;
31
+ ssoState: import("..").SSOState;
32
+ profileState: import("..").ProfileState;
33
+ mfaState: import("..").MFAState;
34
+ teamState: import("..").TeamState;
35
+ groupsState: import("..").GroupsState;
36
+ groupsDialogsState: import("..").GroupsDialogsState;
37
+ socialLoginState: import("..").SocialLoginState;
38
+ signUpState: import("..").SignUpState;
39
+ apiTokensState: import("..").ApiTokensState;
40
+ securityPolicyState: import("..").SecurityPolicyState;
41
+ restrictionsState: import("..").RestrictionsState;
42
+ provisioningState: import("..").ProvisioningState;
43
+ accountSettingsState: import("..").AccountSettingsState;
44
+ tenantsState: import("..").TenantsState;
45
+ rolesState: import("..").RolesState;
46
+ sessionsState: import("..").SessionsState;
47
+ hostedLoginBox?: boolean | undefined;
48
+ disableSilentRefresh?: boolean | undefined;
49
+ sessionsPolicyState: import("..").SessionsPolicyState;
50
+ impersonateState?: import("..").ImpersonateState | undefined;
51
+ passkeysState?: import("..").PasskeysState | undefined;
52
+ customLoginState?: import("..").CustomLoginState | undefined;
53
+ allAccountsState?: import("..").IAllAccountsState | undefined;
54
+ allAccountsDialogsState?: import("..").IAllAccountsDialogsState | undefined;
55
+ securityCenterState?: import("..").SecurityCenterState | undefined;
56
+ smsState?: import("..").SmsState | undefined;
57
+ stepUpState?: import("..").StepUpState | undefined;
58
+ applicationsState?: ApplicationsState | undefined;
59
+ routes: import("..").AuthPageRoutes;
60
+ header?: any;
61
+ loaderComponent?: any;
62
+ };
63
+ };
64
+ };
65
+ declare const actions: {
66
+ loadUserApplications: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
67
+ loadAccountApplications: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
68
+ assignUserToApps: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("@frontegg/rest-api").IAssignUserToApplicationsBody, "userId" | "appIds">, boolean>], WithCallback<Pick<import("@frontegg/rest-api").IAssignUserToApplicationsBody, "userId" | "appIds">, boolean>, string, never, never>;
69
+ unassignUserFromApps: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("@frontegg/rest-api").IAssignUserToApplicationsBody, "userId" | "appIds">, boolean>], WithCallback<Pick<import("@frontegg/rest-api").IAssignUserToApplicationsBody, "userId" | "appIds">, boolean>, string, never, never>;
70
+ };
71
+ /**
72
+ * To be used for actions types after dispatch, and should contains
73
+ * the reducers and actions as standalone function
74
+ */
75
+ declare type DispatchedActions = {
76
+ setApplicationsState: (state: Partial<ApplicationsState>) => void;
77
+ loadUserApplications: () => void;
78
+ loadAccountApplications: () => void;
79
+ assignUserToApps: (payload: WithCallback<UserAppsAssignmentPayload>) => void;
80
+ unassignUserFromApps: (payload: WithCallback<UserAppsAssignmentPayload>) => void;
81
+ };
82
+ export declare type ApplicationsActions = DispatchedActions;
83
+ export { applicationsState, reducers as applicationsReducers, actions as applicationsActions };
@@ -0,0 +1,35 @@
1
+ import { createAction } from '@reduxjs/toolkit';
2
+ import { typeReducerForKey } from '../utils';
3
+ import { authStoreName } from '../../constants';
4
+ const applicationsState = {
5
+ loading: true,
6
+ error: null,
7
+ userApplications: [],
8
+ accountApplications: []
9
+ };
10
+ const reducers = {
11
+ setApplicationsState: typeReducerForKey('applicationsState')
12
+ };
13
+ const actions = {
14
+ loadUserApplications: createAction(`${authStoreName}/loadUserApplications`),
15
+ loadAccountApplications: createAction(`${authStoreName}/loadAccountApplications`),
16
+ assignUserToApps: createAction(`${authStoreName}/assignUserToApps`, payload => ({
17
+ payload
18
+ })),
19
+ unassignUserFromApps: createAction(`${authStoreName}/unassignUserFromApps`, payload => ({
20
+ payload
21
+ }))
22
+ };
23
+
24
+ /**
25
+ * To be used for actions types after dispatch, and should contains
26
+ * the reducers and actions as standalone function
27
+ */
28
+
29
+ // noinspection JSUnusedLocalSymbols
30
+ /**
31
+ * if you see error in matcher that's mean the DispatchAction does not
32
+ * contains the same functions in reducers and actions
33
+ */
34
+ const Matcher = {};
35
+ export { applicationsState, reducers as applicationsReducers, actions as applicationsActions };
@@ -0,0 +1,11 @@
1
+ import { IApplicationsResponse, IAssignUserToApplicationsBody } from '@frontegg/rest-api';
2
+ export interface ApplicationsState {
3
+ error?: string | null;
4
+ loading?: boolean;
5
+ saving?: boolean;
6
+ userApplications?: IApplicationsResponse[];
7
+ accountApplications?: (IApplicationsResponse & {
8
+ userIds: string[];
9
+ })[];
10
+ }
11
+ export declare type UserAppsAssignmentPayload = Pick<IAssignUserToApplicationsBody, 'userId' | 'appIds'>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { IApplicationsResponse, IUsersOfApplicationsResponse, ITenantApplicationsResponse } from '@frontegg/rest-api';
2
+ import { ApplicationsState, UserAppsAssignmentPayload } from './interfaces';
3
+ import { WithCallback } from '../../interfaces';
4
+ import { PayloadAction } from '@reduxjs/toolkit';
5
+ import { ITeamStateUser } from '../TeamState/interfaces';
6
+ export declare function loadUserApplications(): Generator<import("redux-saga/effects").SelectEffect | import("redux-saga/effects").CallEffect<string[]> | import("redux-saga/effects").PutEffect<{
7
+ payload: Partial<ApplicationsState>;
8
+ type: string;
9
+ }> | import("redux-saga/effects").CallEffect<IApplicationsResponse[]>, void, string & string[] & IApplicationsResponse[]>;
10
+ export declare function loadAccountApplications(): Generator<import("redux-saga/effects").PutEffect<{
11
+ payload: Partial<ApplicationsState>;
12
+ type: string;
13
+ }> | import("redux-saga/effects").CallEffect<IApplicationsResponse[]> | import("redux-saga/effects").CallEffect<ITenantApplicationsResponse[]> | import("redux-saga/effects").CallEffect<IUsersOfApplicationsResponse[]>, void, ITenantApplicationsResponse[] & IApplicationsResponse[] & IUsersOfApplicationsResponse[]>;
14
+ export declare function loadMultipleUsersApplications({ userIds }: {
15
+ userIds: string[];
16
+ }): Generator<import("redux-saga/effects").PutEffect<{
17
+ payload: Partial<ApplicationsState>;
18
+ type: string;
19
+ }> | import("redux-saga/effects").CallEffect<IApplicationsResponse[]> | import("redux-saga/effects").CallEffect<Record<string, string[]>>, {} | undefined, {
20
+ userId: string;
21
+ appIds: string[];
22
+ }[] & IApplicationsResponse[]>;
23
+ export declare function assignUserToApps({ payload }: PayloadAction<WithCallback<UserAppsAssignmentPayload>>): Generator<import("redux-saga/effects").SelectEffect | import("redux-saga/effects").CallEffect<void> | import("redux-saga/effects").PutEffect<{
24
+ payload: Partial<import("../TeamState/interfaces").TeamState>;
25
+ type: string;
26
+ }> | import("redux-saga/effects").PutEffect<{
27
+ payload: Partial<ApplicationsState>;
28
+ type: string;
29
+ }>, void, string & (IApplicationsResponse & {
30
+ userIds: string[];
31
+ })[] & ITeamStateUser[]>;
32
+ export declare function unassignUserFromApps({ payload }: PayloadAction<WithCallback<UserAppsAssignmentPayload>>): Generator<import("redux-saga/effects").SelectEffect | import("redux-saga/effects").CallEffect<void> | import("redux-saga/effects").PutEffect<{
33
+ payload: Partial<import("../TeamState/interfaces").TeamState>;
34
+ type: string;
35
+ }> | import("redux-saga/effects").PutEffect<{
36
+ payload: Partial<ApplicationsState>;
37
+ type: string;
38
+ }>, void, string & ITeamStateUser[]>;
39
+ export declare function applicationsSaga(): Generator<import("redux-saga/effects").ForkEffect<never>, void, unknown>;
@@ -0,0 +1,250 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { api, ApplicationAccessType } from '@frontegg/rest-api';
3
+ import { call, put, select, takeLeading } from 'redux-saga/effects';
4
+ import { errorHandler } from '../../utils';
5
+ import { actions } from '../reducer';
6
+ const smallUserApps = [{
7
+ id: '1',
8
+ appURL: 'https://frontegg.com',
9
+ name: 'Frontegg',
10
+ isDefault: true,
11
+ logoURL: 'data:image/png;base64,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'
12
+ }, {
13
+ id: '2',
14
+ appURL: 'https://www.fiverr.com/',
15
+ name: 'Fiverr',
16
+ logoURL: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTBz6gKpHY4meThBsk-wOnXyX3gKKridZCg8hQwzbCltQ&s'
17
+ }];
18
+ const userApps = [{
19
+ id: '3',
20
+ appURL: 'https://www.idf.il/',
21
+ name: 'Intelligence forces',
22
+ logoURL: 'data:image/png;base64,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'
23
+ }, {
24
+ id: '5',
25
+ appURL: 'https://www.att.com/',
26
+ name: 'AT&T',
27
+ logoURL: 'data:image/png;base64,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'
28
+ }, {
29
+ id: '4',
30
+ appURL: 'https://www.appsflyer.com',
31
+ name: 'AppsFlyer',
32
+ logoURL: 'https://pbs.twimg.com/profile_images/1744333107384172544/YrEGkrvp_400x400.png'
33
+ }, {
34
+ id: '2',
35
+ appURL: 'https://www.fiverr.com/',
36
+ name: 'Fiverr',
37
+ logoURL: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTBz6gKpHY4meThBsk-wOnXyX3gKKridZCg8hQwzbCltQ&s'
38
+ }, {
39
+ id: '1',
40
+ appURL: 'https://frontegg.com',
41
+ name: 'Frontegg',
42
+ isDefault: true,
43
+ logoURL: 'data:image/png;base64,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'
44
+ }];
45
+ const accountApps = [...userApps, {
46
+ id: '6',
47
+ appURL: 'https://google.com',
48
+ name: 'Google',
49
+ logoURL: 'https://cdn1.iconfinder.com/data/icons/google-s-logo/150/Google_Icons-09-512.png'
50
+ }, {
51
+ id: '7',
52
+ appURL: 'https://facebook.com/',
53
+ name: 'Facebook',
54
+ logoURL: 'data:image/png;base64,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'
55
+ }, {
56
+ id: '8',
57
+ appURL: 'https://www.siemens.com/global/en.html',
58
+ name: 'Siemens',
59
+ logoURL: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS_-ziawSkvHZRsvfSh3S6UdwIRAb3HwSf4zH3E1yMXJQ&s'
60
+ }];
61
+ const mockUserIds = ['1', '2', '3', '4', '5'];
62
+ const flattenAppIds = listWithAppIds => {
63
+ var _listWithAppIds$map$r;
64
+ return (_listWithAppIds$map$r = listWithAppIds.map(({
65
+ appIds
66
+ }) => appIds).reduce((allAppIds, currentAppIds) => {
67
+ currentAppIds == null ? void 0 : currentAppIds.forEach(item => {
68
+ if (allAppIds && !allAppIds.includes(item)) {
69
+ allAppIds.push(item);
70
+ }
71
+ });
72
+ return allAppIds;
73
+ }, [])) != null ? _listWithAppIds$map$r : [];
74
+ };
75
+ export function* loadUserApplications() {
76
+ yield put(actions.setApplicationsState({
77
+ loading: true
78
+ }));
79
+ try {
80
+ const userId = yield select(state => {
81
+ var _state$auth, _state$auth$user;
82
+ return (_state$auth = state.auth) == null ? void 0 : (_state$auth$user = _state$auth.user) == null ? void 0 : _state$auth$user.id;
83
+ });
84
+ const appIds = yield call(api.applications.getUserApplicationsId, {
85
+ userId
86
+ });
87
+ const userApplications = yield call(api.applications.getApplicationsData, {
88
+ appIds
89
+ });
90
+ // const userApplications = userApps;
91
+
92
+ //@ts-ignore
93
+ yield put(actions.setApplicationsState({
94
+ userApplications,
95
+ loading: false
96
+ }));
97
+ } catch (e) {
98
+ yield put(actions.setApplicationsState({
99
+ loading: false,
100
+ error: errorHandler(e)
101
+ }));
102
+ }
103
+ }
104
+ export function* loadAccountApplications() {
105
+ yield put(actions.setApplicationsState({
106
+ loading: true
107
+ }));
108
+ try {
109
+ const tenantAppIds = yield call(api.applications.getTenantsApplications);
110
+ const appIds = flattenAppIds(tenantAppIds);
111
+ const accountApplications = yield call(api.applications.getApplicationsData, {
112
+ appIds
113
+ });
114
+ // const accountApplications = accountApps;
115
+ const usersOfApplications = yield call(api.applications.getUsersOfApplications, {
116
+ appIds: []
117
+ });
118
+ const accountApplicationsWithUsers = accountApplications.map(app => {
119
+ var _usersOfApplications$;
120
+ return _extends({}, app, {
121
+ userIds: ((_usersOfApplications$ = usersOfApplications.find(u => u.appId === app.id)) == null ? void 0 : _usersOfApplications$.userIds) || []
122
+ // userIds: mockUserIds,
123
+ });
124
+ });
125
+ //@ts-ignore
126
+ yield put(actions.setApplicationsState({
127
+ accountApplications: accountApplicationsWithUsers,
128
+ loading: false
129
+ }));
130
+ } catch (e) {
131
+ yield put(actions.setApplicationsState({
132
+ loading: false,
133
+ error: errorHandler(e)
134
+ }));
135
+ }
136
+ }
137
+ export function* loadMultipleUsersApplications({
138
+ userIds
139
+ }) {
140
+ try {
141
+ const usersAppIds = yield call(api.applications.getUsersApplicationsId, {
142
+ userIds
143
+ });
144
+ const appIds = flattenAppIds(usersAppIds);
145
+ const accountApplications = yield call(api.applications.getApplicationsData, {
146
+ appIds
147
+ });
148
+ return userIds.reduce((acc, userId) => {
149
+ var _usersAppIds$find, _userAppIds$map;
150
+ const userAppIds = (_usersAppIds$find = usersAppIds.find(app => app.userId == userId)) == null ? void 0 : _usersAppIds$find.appIds;
151
+ acc[userId] = [...accountApplications.filter(app => app.accessType === ApplicationAccessType.FREE_ACCESS), ...((_userAppIds$map = userAppIds == null ? void 0 : userAppIds.map(appId => accountApplications.find(app => appId === app.id))) != null ? _userAppIds$map : [])];
152
+ return acc;
153
+ }, {});
154
+ } catch (e) {
155
+ yield put(actions.setApplicationsState({
156
+ error: errorHandler(e)
157
+ }));
158
+ }
159
+ }
160
+ export function* assignUserToApps({
161
+ payload
162
+ }) {
163
+ const {
164
+ userId,
165
+ appIds,
166
+ callback
167
+ } = payload;
168
+ try {
169
+ var _select, _accountApps$filter;
170
+ const tenantId = yield select(state => {
171
+ var _state$auth2, _state$auth2$user;
172
+ return (_state$auth2 = state.auth) == null ? void 0 : (_state$auth2$user = _state$auth2.user) == null ? void 0 : _state$auth2$user.tenantId;
173
+ });
174
+ yield call(api.applications.assignUserToApplications, {
175
+ userId,
176
+ appIds,
177
+ tenantId
178
+ });
179
+ const accountApps = yield (_select = select(state => {
180
+ var _state$auth3, _state$auth3$applicat;
181
+ return (_state$auth3 = state.auth) == null ? void 0 : (_state$auth3$applicat = _state$auth3.applicationsState) == null ? void 0 : _state$auth3$applicat.accountApplications;
182
+ })) != null ? _select : [];
183
+ const users = yield select(state => {
184
+ var _state$auth4, _state$auth4$teamStat;
185
+ return (_state$auth4 = state.auth) == null ? void 0 : (_state$auth4$teamStat = _state$auth4.teamState) == null ? void 0 : _state$auth4$teamStat.users;
186
+ });
187
+ const newApps = (_accountApps$filter = accountApps == null ? void 0 : accountApps.filter(app => appIds.includes(app.id))) != null ? _accountApps$filter : [];
188
+ if (userApps != null && userApps.length) {
189
+ yield put(actions.setTeamState({
190
+ users: users.map(user => {
191
+ var _user$applications;
192
+ return user.id === userId ? _extends({}, user, {
193
+ applications: [...((_user$applications = user.applications) != null ? _user$applications : []), ...newApps]
194
+ }) : user;
195
+ })
196
+ }));
197
+ }
198
+ callback == null ? void 0 : callback(true);
199
+ } catch (e) {
200
+ yield put(actions.setApplicationsState({
201
+ error: errorHandler(e)
202
+ }));
203
+ callback == null ? void 0 : callback(false);
204
+ }
205
+ }
206
+ export function* unassignUserFromApps({
207
+ payload
208
+ }) {
209
+ const {
210
+ userId,
211
+ appIds,
212
+ callback
213
+ } = payload;
214
+ try {
215
+ var _users$find;
216
+ const tenantId = yield select(state => {
217
+ var _state$auth5, _state$auth5$user;
218
+ return (_state$auth5 = state.auth) == null ? void 0 : (_state$auth5$user = _state$auth5.user) == null ? void 0 : _state$auth5$user.tenantId;
219
+ });
220
+ yield call(api.applications.unassignUserFromApplications, {
221
+ userId,
222
+ appIds,
223
+ tenantId
224
+ });
225
+ const users = yield select(state => {
226
+ var _state$auth6, _state$auth6$teamStat;
227
+ return (_state$auth6 = state.auth) == null ? void 0 : (_state$auth6$teamStat = _state$auth6.teamState) == null ? void 0 : _state$auth6$teamStat.users;
228
+ });
229
+ const userApps = (_users$find = users.find(user => user.id === userId)) == null ? void 0 : _users$find.applications;
230
+ if (userApps != null && userApps.length) {
231
+ yield put(actions.setTeamState({
232
+ users: users.map(user => user.id === userId ? _extends({}, user, {
233
+ applications: userApps.filter(app => !appIds.includes(app.id))
234
+ }) : user)
235
+ }));
236
+ }
237
+ callback == null ? void 0 : callback(true);
238
+ } catch (e) {
239
+ yield put(actions.setApplicationsState({
240
+ error: errorHandler(e)
241
+ }));
242
+ callback == null ? void 0 : callback(false);
243
+ }
244
+ }
245
+ export function* applicationsSaga() {
246
+ yield takeLeading(actions.loadUserApplications, loadUserApplications);
247
+ yield takeLeading(actions.loadAccountApplications, loadAccountApplications);
248
+ yield takeLeading(actions.assignUserToApps, assignUserToApps);
249
+ yield takeLeading(actions.unassignUserFromApps, unassignUserFromApps);
250
+ }
@@ -55,6 +55,7 @@ declare const reducers: {
55
55
  securityCenterState?: import("..").SecurityCenterState | undefined;
56
56
  smsState?: import("..").SmsState | undefined;
57
57
  stepUpState?: import("..").StepUpState | undefined;
58
+ applicationsState?: import("..").ApplicationsState | undefined;
58
59
  routes: import("..").AuthPageRoutes;
59
60
  header?: any;
60
61
  loaderComponent?: any;
@@ -106,6 +107,7 @@ declare const reducers: {
106
107
  securityCenterState?: import("..").SecurityCenterState | undefined;
107
108
  smsState?: import("..").SmsState | undefined;
108
109
  stepUpState?: import("..").StepUpState | undefined;
110
+ applicationsState?: import("..").ApplicationsState | undefined;
109
111
  routes: import("..").AuthPageRoutes;
110
112
  header?: any;
111
113
  loaderComponent?: any;
@@ -1,7 +1,9 @@
1
1
  import isEqual from 'fast-deep-equal';
2
2
  import { call, put, takeLeading, select } from 'redux-saga/effects';
3
- import { api } from '@frontegg/rest-api';
3
+ import { USE_ENTITLEMENTS_V2_ENDPOINT_FF, api } from '@frontegg/rest-api';
4
4
  import { actions } from '../reducer';
5
+ import { getFeatureFlags } from '../../helpers';
6
+
5
7
  /**
6
8
  * @param oldEntitlements
7
9
  * @param newEntitlements
@@ -38,8 +40,9 @@ export function* loadEntitlements({
38
40
  payload
39
41
  }) {
40
42
  const callback = payload == null ? void 0 : payload.callback;
43
+ const [useEntitlementsV2] = yield call(getFeatureFlags, [USE_ENTITLEMENTS_V2_ENDPOINT_FF]);
41
44
  try {
42
- const entitlements = yield call(api.entitlements.loadEntitlementsV2);
45
+ const entitlements = yield call(useEntitlementsV2 ? api.entitlements.loadEntitlementsV2 : api.entitlements.loadEntitlements);
43
46
  yield handleFetchedEntitlements(entitlements);
44
47
  callback == null ? void 0 : callback(true);
45
48
  } catch (e) {
@@ -1,30 +1,31 @@
1
+ import { UserEntitlementsResponse } from '@frontegg/rest-api';
1
2
  import { EntitledToOptions, Entitlement } from './interfaces';
2
3
  import { UserEntitlementsContext as UserEntitlementsResponseV2 } from '@frontegg/entitlements-javascript-commons';
3
4
  import { Attributes } from '@frontegg/entitlements-javascript-commons';
4
5
  /**
5
6
  @param entitlements
6
7
  @param key permission key
7
- @param attributes entitlements query attributes including consumer and frontegg attributes
8
- @param isV2 not in use. should be removed after removing from frontegg-vue
8
+ @param attributes entitlements query attributes including comnsumer and frontegg attributes
9
+ @param isV2 true when need to use entitlements API V2
9
10
  @returns if the user is entitled to the given permission. Attaching the justification if not
10
11
  @throws when entitlement is not enabled via frontegg options
11
12
  */
12
- export declare const getPermissionEntitlements: (entitlements: UserEntitlementsResponseV2 | undefined, key: string, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;
13
+ export declare const getPermissionEntitlements: (entitlements: UserEntitlementsResponseV2 | UserEntitlementsResponse | undefined, key: string, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;
13
14
  /**
14
15
  @param entitlements
15
16
  @param key feature key
16
- @param attributes entitlements query attributes including consumer and frontegg attributes
17
- @param isV2 not in use. should be removed after removing from frontegg-vue
17
+ @param attributes entitlements query attributes including comnsumer and frontegg attributes
18
+ @param isV2 true when need to use entitlements API V2
18
19
  @returns if the user is entitled to the given feature. Attaching the justification if not
19
20
  @throws when entitlement is not enabled via frontegg options
20
21
  */
21
- export declare const getFeatureEntitlements: (entitlements: UserEntitlementsResponseV2 | undefined, key: string, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;
22
+ export declare const getFeatureEntitlements: (entitlements: UserEntitlementsResponseV2 | UserEntitlementsResponse | undefined, key: string, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;
22
23
  /**
23
24
  @param entitlements
24
25
  @param options including permission or feature
25
- @param attributes entitlements query attributes including consumer and frontegg attributes
26
- @param isV2 not in use. should be removed after removing from frontegg-vue
26
+ @param attributes entitlements query attributes including comnsumer and frontegg attributes
27
+ @param isV2 true when need to use entitlements API V2
27
28
  @returns if the user is entitled to the given feature or permission (check only one). Attaching the justification if not
28
29
  @throws when entitlement is not enabled via frontegg options
29
30
  */
30
- export declare const getEntitlements: (entitlements: UserEntitlementsResponseV2 | undefined, options: EntitledToOptions, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;
31
+ export declare const getEntitlements: (entitlements: UserEntitlementsResponseV2 | UserEntitlementsResponse | undefined, options: EntitledToOptions, attributes?: Attributes | undefined, isV2?: boolean | undefined) => Entitlement;