@frontegg/redux-store 6.81.0 → 6.82.0-alpha.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/auth/TeamState/interfaces.d.ts +5 -1
- package/auth/TeamState/saga.js +26 -3
- package/auth/dummy.d.ts +3 -2
- package/auth/dummy.js +16 -2
- package/index.js +1 -1
- package/node/auth/TeamState/saga.js +26 -3
- package/node/auth/dummy.js +16 -2
- package/node/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ITeamUserRole, ITeamUser, QuerySort, QueryFilter, ITeamUserPermission, ISubTenantUser } from '@frontegg/rest-api';
|
|
2
|
+
import { GroupsState } from '../GroupsState/interfaces';
|
|
2
3
|
import { LoaderIndicatorState, WithCallback } from '../../interfaces';
|
|
3
4
|
export declare enum TeamStateKeys {
|
|
4
5
|
USERS = "USERS",
|
|
@@ -38,10 +39,13 @@ export declare type LoadRolesAndPermissionsPayload = WithCallback<{}, {
|
|
|
38
39
|
roles: ITeamUserRole[];
|
|
39
40
|
permissions: ITeamUserPermission[];
|
|
40
41
|
}>;
|
|
42
|
+
export interface ITeamStateUser extends ITeamUser {
|
|
43
|
+
groups?: GroupsState['groups'];
|
|
44
|
+
}
|
|
41
45
|
export interface TeamState {
|
|
42
46
|
loaders: LoaderIndicatorState<TeamStateKeys>;
|
|
43
47
|
errors: LoaderIndicatorState<TeamStateKeys>;
|
|
44
|
-
users:
|
|
48
|
+
users: ITeamStateUser[];
|
|
45
49
|
allUsers: ISubTenantUser[];
|
|
46
50
|
allUsersQueryParams: {
|
|
47
51
|
_offset: number;
|
package/auth/TeamState/saga.js
CHANGED
|
@@ -28,7 +28,20 @@ import { authStoreName } from '../../constants';
|
|
|
28
28
|
import { delay } from '../utils';
|
|
29
29
|
import { allUsersDemo, permissionsDemo, rolesDemo, usersDemo, userTeamDemo } from '../dummy';
|
|
30
30
|
import { v4 as uuidv4 } from 'uuid';
|
|
31
|
+
import { GroupRelations } from '../GroupsState/interfaces';
|
|
31
32
|
const selectTeamState = () => sagaSelect(_ => _[authStoreName].teamState);
|
|
33
|
+
function* getGroupsForUsers() {
|
|
34
|
+
try {
|
|
35
|
+
const {
|
|
36
|
+
groups
|
|
37
|
+
} = yield call(api.groups.getGroups, {
|
|
38
|
+
_groupsRelations: GroupRelations.roles
|
|
39
|
+
});
|
|
40
|
+
return groups;
|
|
41
|
+
} catch (e) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
32
45
|
|
|
33
46
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
47
|
function* loadUsers({
|
|
@@ -63,14 +76,23 @@ function* loadUsers({
|
|
|
63
76
|
items: roles
|
|
64
77
|
}, {
|
|
65
78
|
items: permissions
|
|
66
|
-
}] = yield all([call(api.teams.loadUsers, {
|
|
79
|
+
}, groups] = yield all([call(api.teams.loadUsers, {
|
|
67
80
|
pageSize,
|
|
68
81
|
pageOffset,
|
|
69
82
|
filter,
|
|
70
83
|
sort
|
|
71
|
-
}), call(api.teams.loadAvailableRoles), call(api.teams.loadAvailablePermissions)]);
|
|
84
|
+
}), call(api.teams.loadAvailableRoles), call(api.teams.loadAvailablePermissions), call(getGroupsForUsers)]);
|
|
85
|
+
|
|
86
|
+
//TODO: extend users type with groups in rest-api
|
|
87
|
+
const usersWithGroups = users.map(user => {
|
|
88
|
+
var _user$groups;
|
|
89
|
+
const userGroupsFullData = user == null ? void 0 : (_user$groups = user.groups) == null ? void 0 : _user$groups.map(group => groups.filter(g => g.id === group.id)).flat();
|
|
90
|
+
return _extends({}, user, {
|
|
91
|
+
groups: userGroupsFullData
|
|
92
|
+
});
|
|
93
|
+
});
|
|
72
94
|
yield put(actions.setTeamState({
|
|
73
|
-
users,
|
|
95
|
+
users: usersWithGroups,
|
|
74
96
|
totalPages,
|
|
75
97
|
totalItems,
|
|
76
98
|
roles,
|
|
@@ -377,6 +399,7 @@ function* updateUser({
|
|
|
377
399
|
callback == null ? void 0 : callback(newUser);
|
|
378
400
|
yield put(actions.setTeamState({
|
|
379
401
|
users: teamState.users.map(user => user.id === newUser.id ? _extends({}, user, newUser, {
|
|
402
|
+
groups: user.groups,
|
|
380
403
|
createdAt: user.createdAt,
|
|
381
404
|
customData: user.customData,
|
|
382
405
|
lastLogin: user.lastLogin
|
package/auth/dummy.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { IGroup } from '../auth/GroupsState/interfaces';
|
|
|
4
4
|
import { User } from './interfaces';
|
|
5
5
|
import { ProfileState } from './ProfileState/interfaces';
|
|
6
6
|
import { SSOState } from './SSOState/interfaces';
|
|
7
|
+
import { ITeamStateUser } from './TeamState/interfaces';
|
|
7
8
|
export declare const apiTokensDataDemo: IApiTokensData;
|
|
8
9
|
export declare const apiTokensDataTenantDemo: ITenantApiTokensData;
|
|
9
10
|
export declare const rolesAdminViewerDemo: IRole[];
|
|
@@ -22,8 +23,8 @@ export declare const samlMetadataDemo: ISamlMetadata;
|
|
|
22
23
|
export declare const rolesDemo: ITeamUserRole[];
|
|
23
24
|
export declare const ssoStateDemo: SSOState;
|
|
24
25
|
export declare const permissionsDemo: ITeamUserPermission[];
|
|
25
|
-
export declare const userTeamDemo2:
|
|
26
|
-
export declare const userTeamDemo:
|
|
26
|
+
export declare const userTeamDemo2: ITeamStateUser;
|
|
27
|
+
export declare const userTeamDemo: ITeamStateUser;
|
|
27
28
|
export declare const userSubTenantDemo: ISubTenantUser;
|
|
28
29
|
export declare const usersDemo: ITeamUser[];
|
|
29
30
|
export declare const allUsersDemo: ISubTenantUser[];
|
package/auth/dummy.js
CHANGED
|
@@ -216,7 +216,14 @@ export const userTeamDemo2 = {
|
|
|
216
216
|
customData: undefined,
|
|
217
217
|
lastLogin: undefined,
|
|
218
218
|
mfaEnabled: undefined,
|
|
219
|
-
roles: [rolesAdminViewerDemo[0]]
|
|
219
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
220
|
+
groups: [{
|
|
221
|
+
id: 'id2',
|
|
222
|
+
name: 'Developers',
|
|
223
|
+
color: '#03A9F4',
|
|
224
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
225
|
+
managedBy: GroupManagedByEnum.FRONTEGG
|
|
226
|
+
}]
|
|
220
227
|
}; // TODO add verified to ITeamUser
|
|
221
228
|
|
|
222
229
|
export const userTeamDemo = {
|
|
@@ -235,7 +242,14 @@ export const userTeamDemo = {
|
|
|
235
242
|
customData: undefined,
|
|
236
243
|
lastLogin: new Date(2022, 5, 25).toISOString(),
|
|
237
244
|
mfaEnabled: undefined,
|
|
238
|
-
roles: [rolesAdminViewerDemo[1]]
|
|
245
|
+
roles: [rolesAdminViewerDemo[1]],
|
|
246
|
+
groups: [{
|
|
247
|
+
id: 'id1',
|
|
248
|
+
name: 'Designers',
|
|
249
|
+
color: '#E1F5E2',
|
|
250
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
251
|
+
managedBy: GroupManagedByEnum.FRONTEGG
|
|
252
|
+
}]
|
|
239
253
|
};
|
|
240
254
|
export const userSubTenantDemo = {
|
|
241
255
|
metadata: '',
|
package/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var _constants = require("../../constants");
|
|
|
16
16
|
var _utils = require("../utils");
|
|
17
17
|
var _dummy = require("../dummy");
|
|
18
18
|
var _uuid = require("uuid");
|
|
19
|
+
var _interfaces2 = require("../GroupsState/interfaces");
|
|
19
20
|
const _excluded = ["callback"],
|
|
20
21
|
_excluded2 = ["roles"],
|
|
21
22
|
_excluded3 = ["callback"],
|
|
@@ -37,6 +38,18 @@ const _excluded = ["callback"],
|
|
|
37
38
|
_excluded19 = ["callback"],
|
|
38
39
|
_excluded20 = ["callback"];
|
|
39
40
|
const selectTeamState = () => (0, _effects.select)(_ => _[_constants.authStoreName].teamState);
|
|
41
|
+
function* getGroupsForUsers() {
|
|
42
|
+
try {
|
|
43
|
+
const {
|
|
44
|
+
groups
|
|
45
|
+
} = yield (0, _effects.call)(_restApi.api.groups.getGroups, {
|
|
46
|
+
_groupsRelations: _interfaces2.GroupRelations.roles
|
|
47
|
+
});
|
|
48
|
+
return groups;
|
|
49
|
+
} catch (e) {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
40
53
|
|
|
41
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
55
|
function* loadUsers({
|
|
@@ -71,14 +84,23 @@ function* loadUsers({
|
|
|
71
84
|
items: roles
|
|
72
85
|
}, {
|
|
73
86
|
items: permissions
|
|
74
|
-
}] = yield (0, _effects.all)([(0, _effects.call)(_restApi.api.teams.loadUsers, {
|
|
87
|
+
}, groups] = yield (0, _effects.all)([(0, _effects.call)(_restApi.api.teams.loadUsers, {
|
|
75
88
|
pageSize,
|
|
76
89
|
pageOffset,
|
|
77
90
|
filter,
|
|
78
91
|
sort
|
|
79
|
-
}), (0, _effects.call)(_restApi.api.teams.loadAvailableRoles), (0, _effects.call)(_restApi.api.teams.loadAvailablePermissions)]);
|
|
92
|
+
}), (0, _effects.call)(_restApi.api.teams.loadAvailableRoles), (0, _effects.call)(_restApi.api.teams.loadAvailablePermissions), (0, _effects.call)(getGroupsForUsers)]);
|
|
93
|
+
|
|
94
|
+
//TODO: extend users type with groups in rest-api
|
|
95
|
+
const usersWithGroups = users.map(user => {
|
|
96
|
+
var _user$groups;
|
|
97
|
+
const userGroupsFullData = user == null ? void 0 : (_user$groups = user.groups) == null ? void 0 : _user$groups.map(group => groups.filter(g => g.id === group.id)).flat();
|
|
98
|
+
return (0, _extends2.default)({}, user, {
|
|
99
|
+
groups: userGroupsFullData
|
|
100
|
+
});
|
|
101
|
+
});
|
|
80
102
|
yield (0, _effects.put)(_reducer.actions.setTeamState({
|
|
81
|
-
users,
|
|
103
|
+
users: usersWithGroups,
|
|
82
104
|
totalPages,
|
|
83
105
|
totalItems,
|
|
84
106
|
roles,
|
|
@@ -385,6 +407,7 @@ function* updateUser({
|
|
|
385
407
|
callback == null ? void 0 : callback(newUser);
|
|
386
408
|
yield (0, _effects.put)(_reducer.actions.setTeamState({
|
|
387
409
|
users: teamState.users.map(user => user.id === newUser.id ? (0, _extends2.default)({}, user, newUser, {
|
|
410
|
+
groups: user.groups,
|
|
388
411
|
createdAt: user.createdAt,
|
|
389
412
|
customData: user.customData,
|
|
390
413
|
lastLogin: user.lastLogin
|
package/node/auth/dummy.js
CHANGED
|
@@ -241,7 +241,14 @@ const userTeamDemo2 = {
|
|
|
241
241
|
customData: undefined,
|
|
242
242
|
lastLogin: undefined,
|
|
243
243
|
mfaEnabled: undefined,
|
|
244
|
-
roles: [rolesAdminViewerDemo[0]]
|
|
244
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
245
|
+
groups: [{
|
|
246
|
+
id: 'id2',
|
|
247
|
+
name: 'Developers',
|
|
248
|
+
color: '#03A9F4',
|
|
249
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
250
|
+
managedBy: _restApi.GroupManagedByEnum.FRONTEGG
|
|
251
|
+
}]
|
|
245
252
|
}; // TODO add verified to ITeamUser
|
|
246
253
|
exports.userTeamDemo2 = userTeamDemo2;
|
|
247
254
|
const userTeamDemo = {
|
|
@@ -260,7 +267,14 @@ const userTeamDemo = {
|
|
|
260
267
|
customData: undefined,
|
|
261
268
|
lastLogin: new Date(2022, 5, 25).toISOString(),
|
|
262
269
|
mfaEnabled: undefined,
|
|
263
|
-
roles: [rolesAdminViewerDemo[1]]
|
|
270
|
+
roles: [rolesAdminViewerDemo[1]],
|
|
271
|
+
groups: [{
|
|
272
|
+
id: 'id1',
|
|
273
|
+
name: 'Designers',
|
|
274
|
+
color: '#E1F5E2',
|
|
275
|
+
roles: [rolesAdminViewerDemo[0]],
|
|
276
|
+
managedBy: _restApi.GroupManagedByEnum.FRONTEGG
|
|
277
|
+
}]
|
|
264
278
|
};
|
|
265
279
|
exports.userTeamDemo = userTeamDemo;
|
|
266
280
|
const userSubTenantDemo = {
|
package/node/index.js
CHANGED