@yuuvis/user-management-app 2.2.1 → 2.3.1
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/README.md +5 -4
- package/extensions/README.md +1 -1
- package/extensions/lib/assets/i18n/de.json +1 -1
- package/extensions/lib/assets/i18n/en.json +1 -1
- package/fesm2022/yuuvis-user-management-app-extensions.mjs +3 -3
- package/fesm2022/yuuvis-user-management-app-extensions.mjs.map +1 -1
- package/fesm2022/yuuvis-user-management-app.mjs +2064 -1064
- package/fesm2022/yuuvis-user-management-app.mjs.map +1 -1
- package/lib/assets/i18n/de.json +155 -110
- package/lib/assets/i18n/en.json +155 -110
- package/package.json +1 -1
- package/types/yuuvis-user-management-app.d.ts +84 -21
- package/yuv-manifest.json +1 -1
package/lib/assets/i18n/en.json
CHANGED
|
@@ -1,111 +1,156 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
2
|
+
"yuv.app.user-management.common.action.add.label": "Add",
|
|
3
|
+
"yuv.app.user-management.common.action.copy.error": "Unable to copy to the clipboard. Please copy it manually.",
|
|
4
|
+
"yuv.app.user-management.common.action.copy.label": "Copy to clipboard",
|
|
5
|
+
"yuv.app.user-management.common.action.copy.success": "Copied to clipboard.",
|
|
6
|
+
"yuv.app.user-management.common.action.more.label": "More actions",
|
|
7
|
+
"yuv.app.user-management.content.label.aria": "",
|
|
8
|
+
"yuv.app.user-management.label.list.groupMembersTitle": "Group members",
|
|
9
|
+
"yuv.app.user-management.label.list.title": "Users",
|
|
10
|
+
"yuv.app.user-management.label.filter.disabled": "Disabled users",
|
|
11
|
+
"yuv.app.user-management.label.filter.enabled": "Enabled users",
|
|
12
|
+
"yuv.app.user-management.label.filter.tooltip": "Filter by status",
|
|
13
|
+
"yuv.app.user-management.label.pane.hideGroups.tooltip": "Hide groups",
|
|
14
|
+
"yuv.app.user-management.label.pane.hideUserDetails.tooltip": "Hide account details",
|
|
15
|
+
"yuv.app.user-management.label.pane.showGroups.tooltip": "Show groups",
|
|
16
|
+
"yuv.app.user-management.label.pane.showUserDetails.tooltip": "Show account details",
|
|
17
|
+
"yuv.app.user-management.label.rail.allUsers": "All users",
|
|
18
|
+
"yuv.app.user-management.label.rail.subtitle": "{{count}} groups",
|
|
19
|
+
"yuv.app.user-management.label.rail.title": "Groups",
|
|
20
|
+
"yuv.app.user-management.label.rail.usersEntry": "Users",
|
|
21
|
+
"yuv.app.user-management.label.search.filtered": "(filtered by \"{{term}}\")",
|
|
22
|
+
"yuv.app.user-management.label.emptyGroup.title": "No members yet",
|
|
23
|
+
"yuv.app.user-management.label.emptyGroup.description": "Add people to '{{name}}' so they can share its roles and access",
|
|
24
|
+
"yuv.app.user-management.navigation.action.settings.label": "Identity provider settings",
|
|
25
|
+
"yuv.app.user-management.navigation.action.settings.tooltip": "Identity provider settings",
|
|
26
|
+
"yuv.app.user-management.groups.action.create.success": "The group was successfully created.",
|
|
27
|
+
"yuv.app.user-management.groups.action.button.cancel": "Cancel",
|
|
28
|
+
"yuv.app.user-management.groups.action.button.create": "Create",
|
|
29
|
+
"yuv.app.user-management.groups.action.create.description": "",
|
|
30
|
+
"yuv.app.user-management.groups.action.create.error.forbidden": "You do not have the required permissions to create a group with these settings, e.g. because it would grant a role you are not permitted to assign.",
|
|
31
|
+
"yuv.app.user-management.groups.action.create.error.unknown": "Group could not be created due to an unknown error. Please try again later.",
|
|
32
|
+
"yuv.app.user-management.groups.action.create.label": "Create new group",
|
|
33
|
+
"yuv.app.user-management.groups.action.delete.confirm.message": "Do you really want to delete the group '{{name}}'?",
|
|
34
|
+
"yuv.app.user-management.groups.action.delete.error": "Group '{{name}}' could not be deleted.",
|
|
35
|
+
"yuv.app.user-management.groups.action.delete.label": "Delete group",
|
|
36
|
+
"yuv.app.user-management.groups.action.delete.success": "Group '{{name}}' deleted successfully.",
|
|
37
|
+
"yuv.app.user-management.groups.action.edit.error.forbidden": "You do not have the required permissions to edit this group with these settings, e.g. because it grants a role you are not permitted to assign or that is currently assigned to it.",
|
|
38
|
+
"yuv.app.user-management.groups.action.edit.error.unknown": "Group could not be edited due to an unknown error. Please try again later or change the values of your entry.",
|
|
39
|
+
"yuv.app.user-management.groups.action.edit.label": "Edit group",
|
|
40
|
+
"yuv.app.user-management.groups.action.edit.dialog.title": "Edit group '{{name}}'",
|
|
41
|
+
"yuv.app.user-management.groups.action.edit.success": "The group '{{name}}' was edited successfully.",
|
|
42
|
+
"yuv.app.user-management.groups.action.removeMember.label": "Remove user from group",
|
|
43
|
+
"yuv.app.user-management.groups.action.removeMember.confirm.label": "Remove",
|
|
44
|
+
"yuv.app.user-management.groups.action.removeMember.confirm.message": "Do you really want to remove '{{username}}' from the group '{{name}}'?",
|
|
45
|
+
"yuv.app.user-management.groups.action.removeMember.success": "'{{username}}' was removed from group '{{name}}'.",
|
|
46
|
+
"yuv.app.user-management.groups.action.removeMember.error": "Unable to remove '{{username}}' from group '{{name}}'.",
|
|
47
|
+
"yuv.app.user-management.groups.action.addMembers.label": "Add members",
|
|
48
|
+
"yuv.app.user-management.groups.action.addMembers.dialog.title": "Add members to '{{name}}'",
|
|
49
|
+
"yuv.app.user-management.groups.action.addMembers.search.placeholder": "Search user ...",
|
|
50
|
+
"yuv.app.user-management.groups.action.addMembers.empty.noResults": "No matching users found",
|
|
51
|
+
"yuv.app.user-management.groups.action.addMembers.empty.allAdded": "All users are already members of this group",
|
|
52
|
+
"yuv.app.user-management.groups.action.addMembers.empty.noneSelected": "No users selected yet",
|
|
53
|
+
"yuv.app.user-management.groups.action.addMembers.removeSelected.tooltip": "Remove from selection",
|
|
54
|
+
"yuv.app.user-management.groups.action.addMembers.button.add": "Add",
|
|
55
|
+
"yuv.app.user-management.groups.action.addMembers.success": "{{count}} user(s) were added to group '{{name}}'.",
|
|
56
|
+
"yuv.app.user-management.groups.action.addMembers.partialError": "{{count}} user(s) could not be added to group '{{name}}'.",
|
|
57
|
+
"yuv.app.user-management.groups.property.description": "Description",
|
|
58
|
+
"yuv.app.user-management.groups.property.members": "Members",
|
|
59
|
+
"yuv.app.user-management.groups.property.name": "Name",
|
|
60
|
+
"yuv.app.user-management.settings.action.button.cancel": "Cancel",
|
|
61
|
+
"yuv.app.user-management.settings.label.dialog.title": "Identity provider settings",
|
|
62
|
+
"yuv.app.user-management.settings.oidc.action.copy.error": "Unable to copy to the clipboard. Please copy it manually.",
|
|
63
|
+
"yuv.app.user-management.settings.oidc.action.copy.label": "Copy to clipboard",
|
|
64
|
+
"yuv.app.user-management.settings.oidc.action.copy.success": "Copied to clipboard.",
|
|
65
|
+
"yuv.app.user-management.settings.oidc.action.reset.confirm.message": "Do you really want to delete the external identity provider configuration? This action cannot be undone.",
|
|
66
|
+
"yuv.app.user-management.settings.oidc.action.reset.error": "Unable to delete the external identity provider configuration.",
|
|
67
|
+
"yuv.app.user-management.settings.oidc.action.reset.label": "Reset",
|
|
68
|
+
"yuv.app.user-management.settings.oidc.action.reset.success": "The external identity provider configuration was deleted successfully.",
|
|
69
|
+
"yuv.app.user-management.settings.oidc.action.update.success": "The external identity provider configuration was updated successfully.",
|
|
70
|
+
"yuv.app.user-management.settings.oidc.action.configure.error.discovery": "The external identity provider's endpoints could not be resolved from the discovery URL. Please check the discovery URL.",
|
|
71
|
+
"yuv.app.user-management.settings.oidc.action.configure.error.unknown": "The external identity provider could not be configured due to an unknown error. Please check your input and try again.",
|
|
72
|
+
"yuv.app.user-management.settings.oidc.action.configure.success": "The external identity provider was configured successfully.",
|
|
73
|
+
"yuv.app.user-management.settings.oidc.action.setup.label": "Connect identity provider",
|
|
74
|
+
"yuv.app.user-management.settings.oidc.action.save.label": "Save",
|
|
75
|
+
"yuv.app.user-management.settings.oidc.property.clientSecret": "Client secret",
|
|
76
|
+
"yuv.app.user-management.settings.oidc.property.discoveryUrl": "Discovery URL",
|
|
77
|
+
"yuv.app.user-management.settings.oidc.label.error.forbidden": "You do not have the required permissions to view or manage the external identity provider configuration.",
|
|
78
|
+
"yuv.app.user-management.settings.oidc.label.error.unknown": "Unable to load the external identity provider configuration due to an unknown error. Please try again later.",
|
|
79
|
+
"yuv.app.user-management.settings.oidc.label.notConfigured": "No external identity provider connected",
|
|
80
|
+
"yuv.app.user-management.settings.oidc.label.setup.description": "Connect an OIDC identity provider to let people sign in with their existing account, and provision users and groups automatically via SCIM.",
|
|
81
|
+
"yuv.app.user-management.settings.oidc.label.setup.hint": "Enter the values from your external identity provider's application registration. You'll find these in the provider's admin console, e.g. under application or client credentials.",
|
|
82
|
+
"yuv.app.user-management.settings.oidc.property.clientId": "Client ID",
|
|
83
|
+
"yuv.app.user-management.settings.oidc.property.displayName": "Display name",
|
|
84
|
+
"yuv.app.user-management.settings.oidc.property.redirectUri": "Redirect URI",
|
|
85
|
+
"yuv.app.user-management.settings.oidc.property.redirectUri.hint": "Register this URI as a valid redirect URI in your external identity provider's application settings, so it can send people back here after signing in.",
|
|
86
|
+
"yuv.app.user-management.settings.oidc.provisioning.property.clientName": "Client name",
|
|
87
|
+
"yuv.app.user-management.settings.oidc.provisioning.property.clientSecret": "Client secret",
|
|
88
|
+
"yuv.app.user-management.settings.oidc.provisioning.property.tenantUrl": "Tenant URL",
|
|
89
|
+
"yuv.app.user-management.settings.oidc.provisioning.property.tokenUrl": "Token URL",
|
|
90
|
+
"yuv.app.user-management.settings.oidc.label.provisioning.hint": "Enter these values in {{provider}}'s application settings to enable automatic user and group provisioning via SCIM.",
|
|
91
|
+
"yuv.app.user-management.settings.oidc.label.provisioning.unavailable": "SCIM provisioning is not available for this tenant.",
|
|
92
|
+
"yuv.app.user-management.settings.oidc.label.section.provisioning": "SCIM provisioning",
|
|
93
|
+
"yuv.app.user-management.settings.oidc.tab.authentication": "Authentication",
|
|
94
|
+
"yuv.app.user-management.users.action.activate.error": "User '{{username}}' could not be enabled.",
|
|
95
|
+
"yuv.app.user-management.users.action.activate.label": "Enable user",
|
|
96
|
+
"yuv.app.user-management.users.action.activate.success": "User '{{username}}' was successfully enabled.",
|
|
97
|
+
"yuv.app.user-management.users.action.button.cancel": "Cancel",
|
|
98
|
+
"yuv.app.user-management.users.action.button.create": "Create",
|
|
99
|
+
"yuv.app.user-management.users.action.button.save": "Save",
|
|
100
|
+
"yuv.app.user-management.users.action.create.description": "Create new user",
|
|
101
|
+
"yuv.app.user-management.users.action.create.error.conflict": "A user with this username or e-mail address already exists.",
|
|
102
|
+
"yuv.app.user-management.users.action.create.error.forbidden": "You do not have the required permissions to create a user with these settings, e.g. because it would assign a role or group you are not permitted to assign.",
|
|
103
|
+
"yuv.app.user-management.users.action.create.error.unknown": "Unable to create user due to an unknown error. Please try again later or change the values of your entry.",
|
|
104
|
+
"yuv.app.user-management.users.action.create.label": "Create new user",
|
|
105
|
+
"yuv.app.user-management.users.action.create.success": "The user was successfully created.",
|
|
106
|
+
"yuv.app.user-management.users.action.deactivate.confirm.label": "Disable",
|
|
107
|
+
"yuv.app.user-management.users.action.deactivate.confirm.message": "Do you really want to disable user '{{username}}'?",
|
|
108
|
+
"yuv.app.user-management.users.action.deactivate.error": "User '{{username}}' could not be disabled.",
|
|
109
|
+
"yuv.app.user-management.users.action.deactivate.label": "Disable user",
|
|
110
|
+
"yuv.app.user-management.users.action.deactivate.success": "User '{{username}}' was successfully disabled.",
|
|
111
|
+
"yuv.app.user-management.users.action.delete.confirm.label": "Delete",
|
|
112
|
+
"yuv.app.user-management.users.action.delete.confirm.message": "Do you really want to delete user '{{username}}'? This action cannot be undone.",
|
|
113
|
+
"yuv.app.user-management.users.action.delete.error": "Unable to delete user '{{username}}'.",
|
|
114
|
+
"yuv.app.user-management.users.action.delete.label": "Delete user",
|
|
115
|
+
"yuv.app.user-management.users.action.delete.success": "User '{{username}}' was successfully deleted.",
|
|
116
|
+
"yuv.app.user-management.users.action.edit.error.forbidden": "You do not have the required permissions to edit this user with these settings, e.g. because it would assign a role or group you are not permitted to assign, or the user currently holds a role you are not permitted to manage.",
|
|
117
|
+
"yuv.app.user-management.users.action.edit.error.unknown": "Unable to edit user due to an unknown error. Please try again later or change the values of your entry.",
|
|
118
|
+
"yuv.app.user-management.users.action.edit.identitySource.external.hint": "This user is managed by an external identity provider (e.g. Entra ID). Only roles can be edited.",
|
|
119
|
+
"yuv.app.user-management.users.action.edit.label": "Edit user",
|
|
120
|
+
"yuv.app.user-management.users.action.edit.dialog.title": "Edit user '{{username}}'",
|
|
121
|
+
"yuv.app.user-management.users.action.edit.success": "The user '{{username}}' was edited successfully.",
|
|
122
|
+
"yuv.app.user-management.users.label.details.empty": "Select a user from the list to see their details.",
|
|
123
|
+
"yuv.app.user-management.users.label.details.groups.empty": "Not a member of any group",
|
|
124
|
+
"yuv.app.user-management.users.label.details.groups.open.tooltip": "Go to this group",
|
|
125
|
+
"yuv.app.user-management.users.label.details.groups.title": "Group membership",
|
|
126
|
+
"yuv.app.user-management.users.label.details.roles.direct.empty": "No roles assigned directly",
|
|
127
|
+
"yuv.app.user-management.users.label.details.roles.direct.title": "Assigned roles",
|
|
128
|
+
"yuv.app.user-management.users.label.details.roles.inherited.currentGroup.tooltip": "Inherited via the current group",
|
|
129
|
+
"yuv.app.user-management.users.label.details.roles.inherited.empty": "No roles inherited from groups",
|
|
130
|
+
"yuv.app.user-management.users.label.details.roles.inherited.title": "Inherited roles",
|
|
131
|
+
"yuv.app.user-management.users.label.details.title": "Account details",
|
|
132
|
+
"yuv.app.user-management.users.label.identitySource.external.tooltip": "Managed by an external identity provider (e.g. Entra ID)",
|
|
133
|
+
"yuv.app.user-management.users.label.navigation.pagination.aria": "Select page",
|
|
134
|
+
"yuv.app.user-management.users.label.navigation.pagination.itemsPerPage": "Users per page",
|
|
135
|
+
"yuv.app.user-management.users.action.refresh.tooltip": "Refresh",
|
|
136
|
+
"yuv.app.user-management.users.property.disabled": "Disabled",
|
|
137
|
+
"yuv.app.user-management.users.property.email": "E-mail",
|
|
138
|
+
"yuv.app.user-management.users.property.enabled": "Enabled",
|
|
139
|
+
"yuv.app.user-management.users.property.firstname": "First name",
|
|
140
|
+
"yuv.app.user-management.users.property.groups": "Groups",
|
|
141
|
+
"yuv.app.user-management.users.property.id": "ID",
|
|
142
|
+
"yuv.app.user-management.users.property.identitySource.external": "External",
|
|
143
|
+
"yuv.app.user-management.users.property.lastname": "Last name",
|
|
144
|
+
"yuv.app.user-management.users.property.roles": "Roles",
|
|
145
|
+
"yuv.app.user-management.users.property.user": "Username",
|
|
146
|
+
"yuv.app.user-management.users.property.username": "Username",
|
|
147
|
+
"yuv.app.user-management.common.action.roles.assign": "Assign selected roles",
|
|
148
|
+
"yuv.app.user-management.common.action.roles.assignAll": "Assign all roles",
|
|
149
|
+
"yuv.app.user-management.common.label.roles.assigned": "Assigned roles",
|
|
150
|
+
"yuv.app.user-management.common.label.roles.available": "Available roles",
|
|
151
|
+
"yuv.app.user-management.common.label.roles.noAssigned": "No roles assigned",
|
|
152
|
+
"yuv.app.user-management.common.label.roles.noAvailable": "No roles available",
|
|
153
|
+
"yuv.app.user-management.common.action.roles.remove": "Remove selected roles",
|
|
154
|
+
"yuv.app.user-management.common.action.roles.removeAll": "Remove all roles",
|
|
155
|
+
"yuv.app.user-management.users.label.title": "User Overview"
|
|
156
|
+
}
|
package/package.json
CHANGED
|
@@ -4,6 +4,11 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
|
|
5
5
|
declare const YuvUserManagementRoutes: Route[];
|
|
6
6
|
|
|
7
|
+
interface PagedResponse<T> {
|
|
8
|
+
hasMoreItems: boolean;
|
|
9
|
+
objects: T[];
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
interface GroupObject {
|
|
8
13
|
id: string;
|
|
9
14
|
name: string;
|
|
@@ -13,17 +18,15 @@ interface GroupDetailsObject extends GroupObject {
|
|
|
13
18
|
members: string[];
|
|
14
19
|
roles: string[];
|
|
15
20
|
}
|
|
16
|
-
interface GroupsSearchResponse {
|
|
17
|
-
hasMoreItems: boolean;
|
|
21
|
+
interface GroupsSearchResponse extends PagedResponse<GroupObject> {
|
|
18
22
|
numItems: number;
|
|
19
23
|
totalNumItems: number;
|
|
20
|
-
objects: GroupObject[];
|
|
21
24
|
}
|
|
22
25
|
interface UserObject {
|
|
23
26
|
id: string;
|
|
24
27
|
username: string;
|
|
25
|
-
firstName
|
|
26
|
-
lastName
|
|
28
|
+
firstName?: string;
|
|
29
|
+
lastName?: string;
|
|
27
30
|
email: string;
|
|
28
31
|
enabled: boolean;
|
|
29
32
|
/** Read-only flag set by the backend for users provisioned via an external identity provider (e.g. SCIM from Entra ID). */
|
|
@@ -34,31 +37,47 @@ interface UserDetailsObject extends UserObject {
|
|
|
34
37
|
roles: string[];
|
|
35
38
|
effectiveRoles: string[];
|
|
36
39
|
}
|
|
37
|
-
interface UsersSearchResponse {
|
|
38
|
-
hasMoreItems: boolean;
|
|
40
|
+
interface UsersSearchResponse extends PagedResponse<UserObject> {
|
|
39
41
|
numItems: number;
|
|
40
42
|
totalNumItems: number;
|
|
41
|
-
objects: UserObject[];
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* OIDC identity provider configuration of the current tenant (e.g. Microsoft Entra ID) as
|
|
45
46
|
* returned by `/tenant-management/api/admin/identity-provider/oidc`. Sensitive config values
|
|
46
47
|
* (e.g. clientSecret) are removed by the backend before delivery.
|
|
48
|
+
*
|
|
49
|
+
* `redirectUri`/`scimProvisioning` used to live on this type too, but are now deprecated and
|
|
50
|
+
* hidden from this endpoint's published schema in favor of `IdentityProviderSetupInfo`, which
|
|
51
|
+
* exposes them independent of whether a provider is configured at all - use that instead.
|
|
47
52
|
*/
|
|
48
53
|
interface OIDCProviderConfig {
|
|
49
54
|
/** Display name shown on the login page. */
|
|
50
55
|
displayName?: string;
|
|
51
56
|
/** Provider-specific configuration (clientId, metadataDescriptorUrl, defaultScope, ...). */
|
|
52
57
|
config?: Record<string, string>;
|
|
53
|
-
|
|
58
|
+
}
|
|
59
|
+
/** SCIM provisioning settings to configure at the external IdP. */
|
|
60
|
+
interface ScimProvisioning {
|
|
61
|
+
/** SCIM base URL (tenant URL) of the realm. */
|
|
62
|
+
tenantUrl?: string;
|
|
63
|
+
/** OAuth2 token endpoint used by the external IdP to authenticate SCIM requests. */
|
|
64
|
+
tokenEndpoint?: string;
|
|
65
|
+
/** Client id of the SCIM client. */
|
|
66
|
+
clientId?: string;
|
|
67
|
+
/** Client secret of the SCIM client. */
|
|
68
|
+
clientSecret?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tenant-specific values needed to configure an external identity provider, as returned by
|
|
72
|
+
* `/tenant-management/api/admin/identity-provider/setup-info`. Available independent of whether
|
|
73
|
+
* an OIDC identity provider has already been configured for this tenant, since both values are
|
|
74
|
+
* derived from the tenant alone.
|
|
75
|
+
*/
|
|
76
|
+
interface IdentityProviderSetupInfo {
|
|
77
|
+
/** Redirect URI to register with the external IdP for OIDC authentication. */
|
|
54
78
|
redirectUri?: string;
|
|
55
|
-
/**
|
|
56
|
-
scimProvisioning?:
|
|
57
|
-
tenantUrl?: string;
|
|
58
|
-
tokenEndpoint?: string;
|
|
59
|
-
clientId?: string;
|
|
60
|
-
clientSecret?: string;
|
|
61
|
-
};
|
|
79
|
+
/** Null if the tenant has no SCIM client provisioned. */
|
|
80
|
+
scimProvisioning?: ScimProvisioning;
|
|
62
81
|
}
|
|
63
82
|
|
|
64
83
|
declare class UserRequest {
|
|
@@ -76,15 +95,52 @@ declare class GroupRequest {
|
|
|
76
95
|
name?: string;
|
|
77
96
|
description?: string;
|
|
78
97
|
roles?: string[];
|
|
79
|
-
|
|
80
|
-
constructor(id: string, name: string, description: string, roles: string[], members: string[]);
|
|
98
|
+
constructor(id: string, name: string, description: string, roles: string[]);
|
|
81
99
|
}
|
|
82
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Maps an HTTP error status to an i18n key under `${keyPrefix}.error.*`, e.g.
|
|
103
|
+
* "yuv.app.user-management.users.action.create.error.forbidden" for a 403.
|
|
104
|
+
* `extraStatusSuffixes` lets a caller opt in to additional statuses beyond the
|
|
105
|
+
* universal 403/"forbidden" and default/"unknown" (e.g. `{ 409: 'conflict' }`).
|
|
106
|
+
*/
|
|
107
|
+
declare function resolveErrorMessageKey(keyPrefix: string, status: number, extraStatusSuffixes?: Record<number, string>): string;
|
|
83
108
|
declare class YuvUserManagementService {
|
|
84
109
|
#private;
|
|
110
|
+
/** Also the default in the page-size selector on the users/group-membership list - see `YuvUserManagementComponent.pageSizeOptions`. */
|
|
85
111
|
static DEFAULT_PAGE_SIZE: number;
|
|
86
|
-
|
|
87
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Page size used when walking *every* page of a list (see `aggregateAllPages`), which the
|
|
114
|
+
* backend only exposes paginated. Deliberately much larger than `DEFAULT_PAGE_SIZE`: those walks
|
|
115
|
+
* are sequential (each page's request only goes out once the previous one has answered), so the
|
|
116
|
+
* page size is what decides how many round trips a full list costs.
|
|
117
|
+
*/
|
|
118
|
+
static AGGREGATE_PAGE_SIZE: number;
|
|
119
|
+
/** `enabled` filters by user state: `true` for enabled-only, `false` for disabled-only, omitted for both. */
|
|
120
|
+
fetchUsers(page?: number, search?: string, enabled?: boolean, pageSize?: number): Observable<UsersSearchResponse>;
|
|
121
|
+
fetchGroups(page?: number, search?: string, pageSize?: number): Observable<GroupsSearchResponse>;
|
|
122
|
+
/**
|
|
123
|
+
* Fetches every group across all pages. Used for the groups rail, which needs the full list
|
|
124
|
+
* rather than one page at a time.
|
|
125
|
+
*/
|
|
126
|
+
fetchAllGroups(): Observable<GroupObject[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Fetches one server-paginated page of a group's members as full user records. Group
|
|
129
|
+
* membership search isn't supported by the backend - there's no `search` param here, see
|
|
130
|
+
* `YuvUserManagementComponent` for how the UI enforces that a search always scopes to "All users"
|
|
131
|
+
* instead.
|
|
132
|
+
*/
|
|
133
|
+
fetchGroupMembers(groupId: string, page?: number, pageSize?: number): Observable<UsersSearchResponse>;
|
|
134
|
+
/**
|
|
135
|
+
* Removes a user from a group (the user account itself is unaffected), after the user
|
|
136
|
+
* confirms the action.
|
|
137
|
+
*/
|
|
138
|
+
removeGroupMember(group: GroupObject, user: UserObject): Observable<boolean>;
|
|
139
|
+
/**
|
|
140
|
+
* Adds a user to a group (the user account itself is unaffected). Unlike `removeGroupMember`,
|
|
141
|
+
* adding isn't destructive, so no confirmation dialog - consistent with createUser/createGroup.
|
|
142
|
+
*/
|
|
143
|
+
addGroupMember(group: GroupObject, userId: string): Observable<void>;
|
|
88
144
|
fetchAllRoles(): Observable<string[]>;
|
|
89
145
|
createUser(createUserRequest: UserRequest, withInvitation?: boolean): Observable<string>;
|
|
90
146
|
updateUser(userId: string, updateUserRequest: UserRequest): Observable<void>;
|
|
@@ -98,6 +154,13 @@ declare class YuvUserManagementService {
|
|
|
98
154
|
* tenant. Emits a 404 error if no OIDC identity provider is configured.
|
|
99
155
|
*/
|
|
100
156
|
fetchOIDCProviderConfig(): Observable<OIDCProviderConfig>;
|
|
157
|
+
/**
|
|
158
|
+
* Fetches the tenant-specific values needed to configure an external identity provider (the
|
|
159
|
+
* OIDC redirect URI and the SCIM provisioning endpoint/credentials). Available independent of
|
|
160
|
+
* whether an OIDC identity provider has already been configured, since both values are derived
|
|
161
|
+
* from the tenant alone.
|
|
162
|
+
*/
|
|
163
|
+
fetchIdentityProviderSetupInfo(): Observable<IdentityProviderSetupInfo>;
|
|
101
164
|
/**
|
|
102
165
|
* Creates (or updates) the OIDC identity provider configuration of the current tenant. The
|
|
103
166
|
* discovery URL must be passed as `config.metadataDescriptorUrl` — the backend resolves the
|
|
@@ -114,4 +177,4 @@ declare class YuvUserManagementService {
|
|
|
114
177
|
static ɵprov: i0.ɵɵInjectableDeclaration<YuvUserManagementService>;
|
|
115
178
|
}
|
|
116
179
|
|
|
117
|
-
export { YuvUserManagementRoutes, YuvUserManagementService };
|
|
180
|
+
export { YuvUserManagementRoutes, YuvUserManagementService, resolveErrorMessageKey };
|
package/yuv-manifest.json
CHANGED