@authup/client-web-kit 1.0.0-beta.19 → 1.0.0-beta.21

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 (182) hide show
  1. package/dist/components/AEntityDelete.d.ts +6 -6
  2. package/dist/components/AEntityDelete.d.ts.map +1 -1
  3. package/dist/components/client/AClient.d.ts +4 -4
  4. package/dist/components/client/AClient.d.ts.map +1 -1
  5. package/dist/components/client/AClientForm.d.ts +7 -7
  6. package/dist/components/client/AClientForm.d.ts.map +1 -1
  7. package/dist/components/client/AClientRedirectUris.d.ts +6 -6
  8. package/dist/components/client/AClientRedirectUris.d.ts.map +1 -1
  9. package/dist/components/client/AClientRedirectUrisItem.d.ts +6 -6
  10. package/dist/components/client/AClientRedirectUrisItem.d.ts.map +1 -1
  11. package/dist/components/client/AClients.d.ts +6 -6
  12. package/dist/components/client/AClients.d.ts.map +1 -1
  13. package/dist/components/client-scope/AClientScope.d.ts +4 -4
  14. package/dist/components/client-scope/AClientScope.d.ts.map +1 -1
  15. package/dist/components/client-scope/AClientScopeAssignment.d.ts +5 -5
  16. package/dist/components/client-scope/AClientScopeAssignment.d.ts.map +1 -1
  17. package/dist/components/client-scope/AClientScopeAssignments.d.ts +4 -4
  18. package/dist/components/client-scope/AClientScopeAssignments.d.ts.map +1 -1
  19. package/dist/components/client-scope/AClientScopes.d.ts +6 -6
  20. package/dist/components/client-scope/AClientScopes.d.ts.map +1 -1
  21. package/dist/components/identity-provider/AIdentityProvider.d.ts +4 -4
  22. package/dist/components/identity-provider/AIdentityProvider.d.ts.map +1 -1
  23. package/dist/components/identity-provider/AIdentityProviderBasicFields.d.ts +5 -5
  24. package/dist/components/identity-provider/AIdentityProviderBasicFields.d.ts.map +1 -1
  25. package/dist/components/identity-provider/AIdentityProviderForm.d.ts +5 -5
  26. package/dist/components/identity-provider/AIdentityProviderForm.d.ts.map +1 -1
  27. package/dist/components/identity-provider/AIdentityProviderIcon.d.ts +4 -4
  28. package/dist/components/identity-provider/AIdentityProviderIcon.d.ts.map +1 -1
  29. package/dist/components/identity-provider/AIdentityProviderLdapConnectionFields.d.ts +6 -6
  30. package/dist/components/identity-provider/AIdentityProviderLdapConnectionFields.d.ts.map +1 -1
  31. package/dist/components/identity-provider/AIdentityProviderLdapCredentialsFields.d.ts +6 -6
  32. package/dist/components/identity-provider/AIdentityProviderLdapCredentialsFields.d.ts.map +1 -1
  33. package/dist/components/identity-provider/AIdentityProviderLdapForm.d.ts +6 -6
  34. package/dist/components/identity-provider/AIdentityProviderLdapForm.d.ts.map +1 -1
  35. package/dist/components/identity-provider/AIdentityProviderLdapGroupFields.d.ts +6 -6
  36. package/dist/components/identity-provider/AIdentityProviderLdapGroupFields.d.ts.map +1 -1
  37. package/dist/components/identity-provider/AIdentityProviderLdapUserFields.d.ts +6 -6
  38. package/dist/components/identity-provider/AIdentityProviderLdapUserFields.d.ts.map +1 -1
  39. package/dist/components/identity-provider/AIdentityProviderOAuth2ClientFields.d.ts +5 -5
  40. package/dist/components/identity-provider/AIdentityProviderOAuth2ClientFields.d.ts.map +1 -1
  41. package/dist/components/identity-provider/AIdentityProviderOAuth2Discovery.d.ts +2 -2
  42. package/dist/components/identity-provider/AIdentityProviderOAuth2Discovery.d.ts.map +1 -1
  43. package/dist/components/identity-provider/AIdentityProviderOAuth2EndpointFields.d.ts +5 -5
  44. package/dist/components/identity-provider/AIdentityProviderOAuth2EndpointFields.d.ts.map +1 -1
  45. package/dist/components/identity-provider/AIdentityProviderOAuth2Form.d.ts +35 -8
  46. package/dist/components/identity-provider/AIdentityProviderOAuth2Form.d.ts.map +1 -1
  47. package/dist/components/identity-provider/AIdentityProviderPicker.d.ts +4 -4
  48. package/dist/components/identity-provider/AIdentityProviderPicker.d.ts.map +1 -1
  49. package/dist/components/identity-provider/AIdentityProviderPreset.d.ts +4 -4
  50. package/dist/components/identity-provider/AIdentityProviderPreset.d.ts.map +1 -1
  51. package/dist/components/identity-provider/AIdentityProviderProtocol.d.ts +4 -4
  52. package/dist/components/identity-provider/AIdentityProviderProtocol.d.ts.map +1 -1
  53. package/dist/components/identity-provider/AIdentityProviders.d.ts +6 -6
  54. package/dist/components/identity-provider/AIdentityProviders.d.ts.map +1 -1
  55. package/dist/components/identity-provider-role/AIdentityProviderRoleAssignment.d.ts +5 -5
  56. package/dist/components/identity-provider-role/AIdentityProviderRoleAssignment.d.ts.map +1 -1
  57. package/dist/components/identity-provider-role/AIdentityProviderRoleAssignments.d.ts +4 -4
  58. package/dist/components/identity-provider-role/AIdentityProviderRoleAssignments.d.ts.map +1 -1
  59. package/dist/components/permission/APermission.d.ts +4 -4
  60. package/dist/components/permission/APermission.d.ts.map +1 -1
  61. package/dist/components/permission/APermissionCheck.d.ts +30 -0
  62. package/dist/components/permission/APermissionCheck.d.ts.map +1 -0
  63. package/dist/components/permission/APermissionForm.d.ts +5 -5
  64. package/dist/components/permission/APermissionForm.d.ts.map +1 -1
  65. package/dist/components/permission/APermissions.d.ts +6 -6
  66. package/dist/components/permission/APermissions.d.ts.map +1 -1
  67. package/dist/components/permission/index.d.ts +1 -0
  68. package/dist/components/permission/index.d.ts.map +1 -1
  69. package/dist/components/permission-robot/APermissionRobotAssignments.d.ts +4 -4
  70. package/dist/components/permission-robot/APermissionRobotAssignments.d.ts.map +1 -1
  71. package/dist/components/permission-role/APermissionRoleAssignments.d.ts +4 -4
  72. package/dist/components/permission-role/APermissionRoleAssignments.d.ts.map +1 -1
  73. package/dist/components/permission-user/APermissionUserAssignments.d.ts +4 -4
  74. package/dist/components/permission-user/APermissionUserAssignments.d.ts.map +1 -1
  75. package/dist/components/realm/ARealm.d.ts +4 -4
  76. package/dist/components/realm/ARealm.d.ts.map +1 -1
  77. package/dist/components/realm/ARealmForm.d.ts +6 -6
  78. package/dist/components/realm/ARealmForm.d.ts.map +1 -1
  79. package/dist/components/realm/ARealms.d.ts +6 -6
  80. package/dist/components/realm/ARealms.d.ts.map +1 -1
  81. package/dist/components/robot/ARobot.d.ts +4 -4
  82. package/dist/components/robot/ARobot.d.ts.map +1 -1
  83. package/dist/components/robot/ARobotForm.d.ts +7 -7
  84. package/dist/components/robot/ARobotForm.d.ts.map +1 -1
  85. package/dist/components/robot/ARobots.d.ts +6 -6
  86. package/dist/components/robot/ARobots.d.ts.map +1 -1
  87. package/dist/components/robot-permission/ARobotPermissionAssignment.d.ts +5 -5
  88. package/dist/components/robot-permission/ARobotPermissionAssignment.d.ts.map +1 -1
  89. package/dist/components/robot-permission/ARobotPermissionAssignments.d.ts +4 -4
  90. package/dist/components/robot-permission/ARobotPermissionAssignments.d.ts.map +1 -1
  91. package/dist/components/robot-role/ARobotRoleAssignment.d.ts +5 -5
  92. package/dist/components/robot-role/ARobotRoleAssignment.d.ts.map +1 -1
  93. package/dist/components/robot-role/ARobotRoleAssignments.d.ts +4 -4
  94. package/dist/components/robot-role/ARobotRoleAssignments.d.ts.map +1 -1
  95. package/dist/components/role/ARole.d.ts +4 -4
  96. package/dist/components/role/ARole.d.ts.map +1 -1
  97. package/dist/components/role/ARoleForm.d.ts +6 -6
  98. package/dist/components/role/ARoleForm.d.ts.map +1 -1
  99. package/dist/components/role/ARoles.d.ts +6 -6
  100. package/dist/components/role/ARoles.d.ts.map +1 -1
  101. package/dist/components/role-permission/ARolePermissionAssignment.d.ts +5 -5
  102. package/dist/components/role-permission/ARolePermissionAssignment.d.ts.map +1 -1
  103. package/dist/components/role-permission/ARolePermissionAssignments.d.ts +4 -4
  104. package/dist/components/role-permission/ARolePermissionAssignments.d.ts.map +1 -1
  105. package/dist/components/role-robot/ARoleRobotAssignments.d.ts +4 -4
  106. package/dist/components/role-robot/ARoleRobotAssignments.d.ts.map +1 -1
  107. package/dist/components/role-user/ARoleUserAssignments.d.ts +4 -4
  108. package/dist/components/role-user/ARoleUserAssignments.d.ts.map +1 -1
  109. package/dist/components/scope/AScope.d.ts +4 -4
  110. package/dist/components/scope/AScope.d.ts.map +1 -1
  111. package/dist/components/scope/AScopeForm.d.ts +6 -6
  112. package/dist/components/scope/AScopeForm.d.ts.map +1 -1
  113. package/dist/components/scope/AScopes.d.ts +6 -6
  114. package/dist/components/scope/AScopes.d.ts.map +1 -1
  115. package/dist/components/scope-client/AScopeClientAssignments.d.ts +4 -4
  116. package/dist/components/scope-client/AScopeClientAssignments.d.ts.map +1 -1
  117. package/dist/components/user/AUser.d.ts +4 -4
  118. package/dist/components/user/AUser.d.ts.map +1 -1
  119. package/dist/components/user/AUserForm.d.ts +6 -6
  120. package/dist/components/user/AUserForm.d.ts.map +1 -1
  121. package/dist/components/user/AUserPasswordForm.d.ts +5 -5
  122. package/dist/components/user/AUserPasswordForm.d.ts.map +1 -1
  123. package/dist/components/user/AUsers.d.ts +6 -6
  124. package/dist/components/user/AUsers.d.ts.map +1 -1
  125. package/dist/components/user-permission/AUserPermissionAssignment.d.ts +5 -5
  126. package/dist/components/user-permission/AUserPermissionAssignment.d.ts.map +1 -1
  127. package/dist/components/user-permission/AUserPermissionAssignments.d.ts +4 -4
  128. package/dist/components/user-permission/AUserPermissionAssignments.d.ts.map +1 -1
  129. package/dist/components/user-role/AUserRoleAssignment.d.ts +5 -5
  130. package/dist/components/user-role/AUserRoleAssignment.d.ts.map +1 -1
  131. package/dist/components/user-role/AUserRoleAssignments.d.ts +4 -4
  132. package/dist/components/user-role/AUserRoleAssignments.d.ts.map +1 -1
  133. package/dist/components/utility/LanguageSwitcherDropdown.d.ts +5 -5
  134. package/dist/components/utility/LanguageSwitcherDropdown.d.ts.map +1 -1
  135. package/dist/components/utility/pagination/APagination.d.ts +4 -4
  136. package/dist/components/utility/pagination/APagination.d.ts.map +1 -1
  137. package/dist/components/utility/search/ASearch.d.ts +5 -5
  138. package/dist/components/utility/search/ASearch.d.ts.map +1 -1
  139. package/dist/components/utility/title/ATitle.d.ts +5 -5
  140. package/dist/components/utility/title/ATitle.d.ts.map +1 -1
  141. package/dist/composables/index.d.ts +1 -1
  142. package/dist/composables/index.d.ts.map +1 -1
  143. package/dist/composables/use-permission-check.d.ts +4 -0
  144. package/dist/composables/use-permission-check.d.ts.map +1 -0
  145. package/dist/core/http-client/install.d.ts.map +1 -1
  146. package/dist/core/http-client/types.d.ts +1 -0
  147. package/dist/core/http-client/types.d.ts.map +1 -1
  148. package/dist/core/index.d.ts +1 -0
  149. package/dist/core/index.d.ts.map +1 -1
  150. package/dist/core/permission-check/index.d.ts +3 -0
  151. package/dist/core/permission-check/index.d.ts.map +1 -0
  152. package/dist/core/permission-check/module.d.ts +3 -0
  153. package/dist/core/permission-check/module.d.ts.map +1 -0
  154. package/dist/core/permission-check/types.d.ts +11 -0
  155. package/dist/core/permission-check/types.d.ts.map +1 -0
  156. package/dist/core/store/create.d.ts +84 -39
  157. package/dist/core/store/create.d.ts.map +1 -1
  158. package/dist/core/store/install.d.ts.map +1 -1
  159. package/dist/core/store/singleton.d.ts +3 -3
  160. package/dist/core/store/singleton.d.ts.map +1 -1
  161. package/dist/core/store/utils.d.ts +1 -2
  162. package/dist/core/store/utils.d.ts.map +1 -1
  163. package/dist/index.cjs +800 -448
  164. package/dist/index.cjs.map +1 -1
  165. package/dist/index.mjs +603 -258
  166. package/dist/index.mjs.map +1 -1
  167. package/dist/module.d.ts.map +1 -1
  168. package/dist/security/index.d.ts +2 -0
  169. package/dist/security/index.d.ts.map +1 -0
  170. package/dist/security/policy/index.d.ts +3 -0
  171. package/dist/security/policy/index.d.ts.map +1 -0
  172. package/dist/security/policy/module.d.ts +5 -0
  173. package/dist/security/policy/module.d.ts.map +1 -0
  174. package/dist/security/policy/variants/evaluator.d.ts +11 -0
  175. package/dist/security/policy/variants/evaluator.d.ts.map +1 -0
  176. package/dist/security/policy/variants/index.d.ts +2 -0
  177. package/dist/security/policy/variants/index.d.ts.map +1 -0
  178. package/dist/types.d.ts +13 -2
  179. package/dist/types.d.ts.map +1 -1
  180. package/package.json +21 -20
  181. package/dist/composables/use-ability-check.d.ts +0 -3
  182. package/dist/composables/use-ability-check.d.ts.map +0 -1
package/dist/index.cjs CHANGED
@@ -65,6 +65,52 @@ function injectHTTPClient(app) {
65
65
  * view the LICENSE file that was distributed with this source code.
66
66
  */ const STORE_ID = 'authup';
67
67
 
68
+ class PermissionBindingPolicyEvaluator {
69
+ async can(ctx) {
70
+ return ctx.spec.type === kit.BuiltInPolicyType.PERMISSION_BINDING;
71
+ }
72
+ async validateSpecification(ctx) {
73
+ return this.validator.run(ctx.spec);
74
+ }
75
+ async validateData(ctx) {
76
+ if (!smob.isObject(ctx.data.identity) && !smob.isObject(ctx.data.permission)) {
77
+ throw kit.PolicyError.evaluatorContextInvalid();
78
+ }
79
+ return ctx.data;
80
+ }
81
+ async evaluate(ctx) {
82
+ // todo: this must be changed when the permission-checker not only checks owned permissions.
83
+ return kit.maybeInvertPolicyOutcome(true, ctx.spec.invert);
84
+ }
85
+ constructor(){
86
+ this.validator = new kit.PermissionBindingPolicyValidator();
87
+ }
88
+ }
89
+
90
+ class PolicyEngine extends kit.PolicyEngine {
91
+ constructor(){
92
+ super();
93
+ this.registerEvaluator(kit.BuiltInPolicyType.PERMISSION_BINDING, new PermissionBindingPolicyEvaluator());
94
+ }
95
+ }
96
+
97
+ function createPromiseShareWrapperFn(fn) {
98
+ let promise;
99
+ return (...args)=>{
100
+ if (promise) {
101
+ return promise;
102
+ }
103
+ promise = new Promise((resolve, reject)=>{
104
+ fn(...args).then((r)=>resolve(r)).catch((e)=>reject(e));
105
+ });
106
+ promise.finally(()=>{
107
+ setTimeout(()=>{
108
+ promise = undefined;
109
+ }, 0);
110
+ });
111
+ return promise;
112
+ };
113
+ }
68
114
  function createStore(context = {}) {
69
115
  const client = new coreHttpKit.Client({
70
116
  baseURL: context.baseURL
@@ -93,38 +139,10 @@ function createStore(context = {}) {
93
139
  refreshToken.value = input;
94
140
  };
95
141
  // --------------------------------------------------------------------
96
- const handleTokenGrantResponse = (response)=>{
97
- const expireDate = new Date(Date.now() + response.expires_in * 1000);
98
- setAccessTokenExpireDate(expireDate);
99
- setAccessToken(response.access_token);
100
- setRefreshToken(response.refresh_token);
101
- };
102
- // --------------------------------------------------------------------
103
- let refreshTokenPromise;
104
- const attemptRefreshToken = ()=>{
105
- if (!refreshToken.value) {
106
- return Promise.reject(new Error('No refresh token is present.'));
107
- }
108
- if (refreshTokenPromise) {
109
- return refreshTokenPromise;
110
- }
111
- refreshTokenPromise = client.token.createWithRefreshToken({
112
- refresh_token: refreshToken.value
113
- }).then((r)=>{
114
- handleTokenGrantResponse(r);
115
- return r;
116
- }).finally(()=>{
117
- refreshTokenPromise = undefined;
118
- });
119
- return refreshTokenPromise;
120
- };
121
- // --------------------------------------------------------------------
122
142
  const user = vue.ref(undefined);
123
143
  const userId = vue.computed(()=>user.value ? user.value.id : undefined);
124
- const userResolved = vue.ref(false);
125
144
  const setUser = (entity)=>{
126
145
  user.value = entity;
127
- userResolved.value = !!entity;
128
146
  };
129
147
  // --------------------------------------------------------------------
130
148
  const realm = vue.ref(undefined);
@@ -145,68 +163,100 @@ function createStore(context = {}) {
145
163
  const setRealmManagement = (entity)=>{
146
164
  realmManagement.value = entity;
147
165
  };
148
- const abilities = new kit.Abilities();
149
- const tokenInfo = vue.ref(undefined);
150
- const tokenResolved = vue.ref(false);
151
- const setTokenInfo = (entity)=>{
152
- tokenResolved.value = !!entity;
153
- tokenInfo.value = entity;
154
- if (!entity) {
155
- setRealm(undefined);
156
- setRealmManagement(undefined);
157
- abilities.set([]);
158
- return;
166
+ // --------------------------------------------------------------------
167
+ const permissionRepository = new kit.PermissionMemoryProvider();
168
+ const permissionChecker = new kit.PermissionChecker({
169
+ provider: permissionRepository,
170
+ policyEngine: new PolicyEngine()
171
+ });
172
+ // --------------------------------------------------------------------
173
+ const userResolved = vue.ref(false);
174
+ const resolveUser = async ()=>{
175
+ if (!accessToken.value || userResolved.value) {
176
+ return Promise.resolve();
159
177
  }
160
- if (entity.exp) {
161
- const expireDate = new Date(entity.exp * 1000);
162
- setAccessTokenExpireDate(expireDate);
178
+ userResolved.value = true;
179
+ return client.userInfo.get(`Bearer ${accessToken.value}`).then((response)=>{
180
+ setUser(response);
181
+ });
182
+ };
183
+ // --------------------------------------------------------------------
184
+ const tokenResolved = vue.ref(false);
185
+ const resolveToken = async ()=>{
186
+ if (!accessToken.value || tokenResolved.value) {
187
+ return Promise.resolve();
163
188
  }
164
- if (entity.realm_id && entity.realm_name) {
165
- realm.value = {
166
- id: entity.realm_id,
167
- name: entity.realm_name
168
- };
169
- if (typeof realmManagement.value === 'undefined') {
170
- setRealmManagement(realm.value);
189
+ tokenResolved.value = true;
190
+ return client.token.introspect({
191
+ token: accessToken.value
192
+ }, {
193
+ authorizationHeader: {
194
+ type: 'Bearer',
195
+ token: accessToken.value
171
196
  }
172
- }
173
- if (entity.permissions) {
174
- abilities.set(entity.permissions);
175
- }
197
+ }).then((response)=>{
198
+ if (response.exp) {
199
+ const expireDate = new Date(response.exp * 1000);
200
+ setAccessTokenExpireDate(expireDate);
201
+ }
202
+ if (response.realm_id && response.realm_name) {
203
+ realm.value = {
204
+ id: response.realm_id,
205
+ name: response.realm_name
206
+ };
207
+ if (!realmManagement.value) {
208
+ setRealmManagement(realm.value);
209
+ }
210
+ }
211
+ if (response.permissions) {
212
+ permissionRepository.setMany(response.permissions);
213
+ }
214
+ });
176
215
  };
177
216
  // --------------------------------------------------------------------
178
- const resolve = async (ctx = {})=>{
179
- if (!accessToken.value || ctx.attempts && ctx.attempts > 3) return;
217
+ const handleTokenGrantResponse = (response)=>{
218
+ const expireDate = new Date(Date.now() + response.expires_in * 1000);
219
+ setAccessTokenExpireDate(expireDate);
220
+ setAccessToken(response.access_token);
221
+ setRefreshToken(response.refresh_token);
222
+ };
223
+ // --------------------------------------------------------------------
224
+ const refreshSession = createPromiseShareWrapperFn(async ()=>{
225
+ if (!refreshToken.value) {
226
+ throw new kit.TokenError('The access token can not be renewed.');
227
+ }
228
+ return client.token.createWithRefreshToken({
229
+ refresh_token: refreshToken.value
230
+ }).then((r)=>handleTokenGrantResponse(r)).catch((e)=>{
231
+ logout();
232
+ return Promise.reject(e);
233
+ }).finally(()=>{
234
+ tokenResolved.value = false;
235
+ userResolved.value = false;
236
+ });
237
+ });
238
+ // --------------------------------------------------------------------
239
+ const resolveInternal = async ()=>{
180
240
  try {
181
- if (!tokenResolved.value || ctx.refresh) {
182
- const token = await client.token.introspect({
183
- token: accessToken.value
184
- }, {
185
- authorizationHeader: {
186
- type: 'Bearer',
187
- token: accessToken.value
188
- }
189
- });
190
- setTokenInfo(token);
191
- tokenResolved.value = true;
241
+ if (!accessToken.value && refreshToken.value) {
242
+ await refreshSession();
192
243
  }
193
- if (!userResolved.value || ctx.refresh) {
194
- const entity = await client.userInfo.get(`Bearer ${accessToken.value}`);
195
- setUser(entity);
196
- userResolved.value = true;
244
+ if (accessToken.value) {
245
+ await resolveToken();
246
+ if (!user.value) {
247
+ await resolveUser();
248
+ }
197
249
  }
198
250
  } catch (e) {
199
- if (coreHttpKit.isClientTokenExpiredError(e)) {
200
- await attemptRefreshToken();
201
- await resolve({
202
- refresh: true,
203
- attempts: ctx.attempts ? ctx.attempts++ : 1
204
- });
205
- return;
251
+ if (coreHttpKit.isClientTokenExpiredError(e) && refreshToken.value) {
252
+ await refreshSession();
253
+ return resolveInternal();
206
254
  }
207
255
  throw e;
208
256
  }
257
+ return Promise.resolve();
209
258
  };
259
+ const resolve = createPromiseShareWrapperFn(resolveInternal);
210
260
  const loggedIn = vue.computed(()=>!!accessToken.value);
211
261
  const login = async (ctx)=>{
212
262
  try {
@@ -220,7 +270,7 @@ function createStore(context = {}) {
220
270
  handleTokenGrantResponse(response);
221
271
  await resolve();
222
272
  } catch (e) {
223
- setUser(undefined);
273
+ logout();
224
274
  throw e;
225
275
  }
226
276
  };
@@ -229,12 +279,15 @@ function createStore(context = {}) {
229
279
  setAccessTokenExpireDate(undefined);
230
280
  setRefreshToken(undefined);
231
281
  setUser(undefined);
232
- setTokenInfo(undefined);
282
+ setRealm(undefined);
283
+ setRealmManagement(undefined);
284
+ tokenResolved.value = false;
285
+ userResolved.value = false;
233
286
  };
234
287
  return {
235
288
  initialized,
236
289
  setInitialized,
237
- abilities,
290
+ permissionChecker,
238
291
  login,
239
292
  logout,
240
293
  loggedIn,
@@ -246,8 +299,6 @@ function createStore(context = {}) {
246
299
  setAccessTokenExpireDate,
247
300
  refreshToken,
248
301
  setRefreshToken,
249
- tokenInfo,
250
- setTokenInfo,
251
302
  realm,
252
303
  realmId,
253
304
  realmIsRoot,
@@ -330,34 +381,34 @@ function shouldUpdate(dependencies, newCookies, oldCookies) {
330
381
 
331
382
  const StoreSymbol = Symbol.for('AuthupStore');
332
383
  function useStore(pinia, app) {
333
- const instance = injectStore(app);
384
+ const instance = injectStoreFactory(app);
334
385
  if (!instance) {
335
386
  throw new Error('The store has not been injected in the app context.');
336
387
  }
337
388
  return instance(pinia);
338
389
  }
339
- function injectStore(app) {
390
+ function injectStoreFactory(app) {
340
391
  const instance = inject$1(StoreSymbol, app);
341
392
  if (!instance) {
342
- throw new Error('The store has not been injected in the app context.');
393
+ throw new Error('The store factory has not been injected in the app context.');
343
394
  }
344
395
  return instance;
345
396
  }
346
- function hasStore(app) {
397
+ function hasStoreFactory(app) {
347
398
  return !!inject$1(StoreSymbol, app);
348
399
  }
349
- function provideStore(store, app) {
400
+ function provideStoreFactory(store, app) {
350
401
  provide(StoreSymbol, store, app);
351
402
  }
352
403
 
353
404
  function installStore(app, options = {}) {
354
- if (hasStore(app)) {
405
+ if (hasStoreFactory(app)) {
355
406
  return;
356
407
  }
357
- const storeCreator = pinia.defineStore(STORE_ID, ()=>createStore({
408
+ const storeFactory = pinia.defineStore(STORE_ID, ()=>createStore({
358
409
  baseURL: options.baseURL
359
410
  }));
360
- const store = storeCreator(options.pinia);
411
+ const store = storeFactory(options.pinia);
361
412
  let cookieGet;
362
413
  if (options.cookieGet) {
363
414
  cookieGet = options.cookieGet;
@@ -376,8 +427,8 @@ function installStore(app, options = {}) {
376
427
  if (options.cookieUnset) {
377
428
  cookieUnset = options.cookieUnset;
378
429
  } else if (options.cookieSet) {
379
- cookieUnset = (key)=>{
380
- options.cookieSet(key, null);
430
+ cookieUnset = (key, opts)=>{
431
+ options.cookieSet(key, null, opts);
381
432
  };
382
433
  } else {
383
434
  const cookies = useCookies();
@@ -434,12 +485,12 @@ function installStore(app, options = {}) {
434
485
  return;
435
486
  }
436
487
  if (action.name === 'logout') {
437
- cookieUnset(coreHttpKit.CookieName.ACCESS_TOKEN);
438
- cookieUnset(coreHttpKit.CookieName.ACCESS_TOKEN_EXPIRE_DATE);
439
- cookieUnset(coreHttpKit.CookieName.REFRESH_TOKEN);
440
- cookieUnset(coreHttpKit.CookieName.USER);
441
- cookieUnset(coreHttpKit.CookieName.REALM);
442
- cookieUnset(coreHttpKit.CookieName.REALM_MANAGEMENT);
488
+ cookieUnset(coreHttpKit.CookieName.ACCESS_TOKEN, {});
489
+ cookieUnset(coreHttpKit.CookieName.ACCESS_TOKEN_EXPIRE_DATE, {});
490
+ cookieUnset(coreHttpKit.CookieName.REFRESH_TOKEN, {});
491
+ cookieUnset(coreHttpKit.CookieName.USER, {});
492
+ cookieUnset(coreHttpKit.CookieName.REALM, {});
493
+ cookieUnset(coreHttpKit.CookieName.REALM_MANAGEMENT, {});
443
494
  }
444
495
  });
445
496
  initStore();
@@ -447,26 +498,34 @@ function installStore(app, options = {}) {
447
498
  if (mutation.storeId !== STORE_ID) {
448
499
  return;
449
500
  }
501
+ let maxAge;
502
+ if (state.accessTokenExpireDate) {
503
+ maxAge = Math.floor(Math.max(1000, new Date(`${state.accessTokenExpireDate}`).getTime() - Date.now()) / 1000);
504
+ }
450
505
  if (state.accessToken) {
451
- cookieSet(coreHttpKit.CookieName.ACCESS_TOKEN, state.accessToken);
506
+ cookieSet(coreHttpKit.CookieName.ACCESS_TOKEN, state.accessToken, {
507
+ maxAge
508
+ });
452
509
  }
453
510
  if (state.accessTokenExpireDate) {
454
- cookieSet(coreHttpKit.CookieName.ACCESS_TOKEN_EXPIRE_DATE, state.accessTokenExpireDate);
511
+ cookieSet(coreHttpKit.CookieName.ACCESS_TOKEN_EXPIRE_DATE, state.accessTokenExpireDate, {
512
+ maxAge
513
+ });
455
514
  }
456
515
  if (state.refreshToken) {
457
- cookieSet(coreHttpKit.CookieName.REFRESH_TOKEN, state.refreshToken);
516
+ cookieSet(coreHttpKit.CookieName.REFRESH_TOKEN, state.refreshToken, {});
458
517
  }
459
518
  if (state.user) {
460
- cookieSet(coreHttpKit.CookieName.USER, state.user);
519
+ cookieSet(coreHttpKit.CookieName.USER, state.user, {});
461
520
  }
462
521
  if (state.realm) {
463
- cookieSet(coreHttpKit.CookieName.REALM, state.realm);
522
+ cookieSet(coreHttpKit.CookieName.REALM, state.realm, {});
464
523
  }
465
524
  if (state.realmManagement) {
466
- cookieSet(coreHttpKit.CookieName.REALM_MANAGEMENT, state.realmManagement);
525
+ cookieSet(coreHttpKit.CookieName.REALM_MANAGEMENT, state.realmManagement, {});
467
526
  }
468
527
  });
469
- provideStore(storeCreator, app);
528
+ provideStoreFactory(storeFactory, app);
470
529
  }
471
530
 
472
531
  function storeToRefs(store) {
@@ -489,8 +548,8 @@ function installHTTPClient(app, options = {}) {
489
548
  const client = new coreHttpKit.Client({
490
549
  baseURL: options.baseURL
491
550
  });
492
- const storeCreator = injectStore(app);
493
- const store = storeCreator(options.pinia);
551
+ const storeFactory = injectStoreFactory(app);
552
+ const store = storeFactory(options.pinia);
494
553
  const { refreshToken } = pinia.storeToRefs(store);
495
554
  const tokenHook = new coreHttpKit.ClientResponseErrorTokenHook(client, {
496
555
  baseURL: options.baseURL,
@@ -507,7 +566,8 @@ function installHTTPClient(app, options = {}) {
507
566
  },
508
567
  tokenFailed: ()=>{
509
568
  store.logout();
510
- }
569
+ },
570
+ timer: !options.isServer
511
571
  });
512
572
  store.$subscribe((mutation, state)=>{
513
573
  if (mutation.storeId !== STORE_ID) return;
@@ -523,10 +583,7 @@ function installHTTPClient(app, options = {}) {
523
583
  }
524
584
  if (state.refreshToken && state.accessTokenExpireDate) {
525
585
  const expiresIn = Math.floor((state.accessTokenExpireDate.getTime() - Date.now()) / 1000);
526
- tokenHook.setTimer({
527
- refresh_token: ()=>refreshToken.value,
528
- expires_in: expiresIn
529
- });
586
+ tokenHook.setTimer(expiresIn, ()=>refreshToken.value);
530
587
  }
531
588
  });
532
589
  provideHTTPClient(client, app);
@@ -744,7 +801,7 @@ function injectSocketManager(app) {
744
801
  }
745
802
 
746
803
  function installSocketManager(app, options) {
747
- const storeCreator = injectStore(app);
804
+ const storeCreator = injectStoreFactory(app);
748
805
  const store = storeCreator(options.pinia);
749
806
  const { accessToken } = storeToRefs(store);
750
807
  const manager = new coreRealtimeKit.ClientManager({
@@ -1510,26 +1567,25 @@ function createEntityManager(ctx) {
1510
1567
  * Author Peter Placzek (tada5hi)
1511
1568
  * For the full copyright and license information,
1512
1569
  * view the LICENSE file that was distributed with this source code.
1513
- */ exports.TranslatorTranslationGroup = void 0;
1514
- (function(TranslatorTranslationGroup) {
1570
+ */ var TranslatorTranslationGroup = /*#__PURE__*/ function(TranslatorTranslationGroup) {
1515
1571
  TranslatorTranslationGroup["DEFAULT"] = "default";
1516
1572
  TranslatorTranslationGroup["CLIENT"] = "authupClient";
1517
1573
  TranslatorTranslationGroup["VUECS"] = "vuecs";
1518
1574
  TranslatorTranslationGroup["VUELIDATE"] = "vuelidate";
1519
- })(exports.TranslatorTranslationGroup || (exports.TranslatorTranslationGroup = {}));
1520
- exports.TranslatorTranslationVuecsKey = void 0;
1521
- (function(TranslatorTranslationVuecsKey) {
1575
+ return TranslatorTranslationGroup;
1576
+ }({});
1577
+ var TranslatorTranslationVuecsKey = /*#__PURE__*/ function(TranslatorTranslationVuecsKey) {
1522
1578
  TranslatorTranslationVuecsKey["NO_MORE"] = "noMore";
1523
- })(exports.TranslatorTranslationVuecsKey || (exports.TranslatorTranslationVuecsKey = {}));
1524
- exports.TranslatorTranslationClientKey = void 0;
1525
- (function(TranslatorTranslationClientKey) {
1579
+ return TranslatorTranslationVuecsKey;
1580
+ }({});
1581
+ var TranslatorTranslationClientKey = /*#__PURE__*/ function(TranslatorTranslationClientKey) {
1526
1582
  TranslatorTranslationClientKey["NAME_HINT"] = "nameHint";
1527
1583
  TranslatorTranslationClientKey["DESCRIPTION_HINT"] = "descriptionHint";
1528
1584
  TranslatorTranslationClientKey["REDIRECT_URI_HINT"] = "redirectURIHint";
1529
1585
  TranslatorTranslationClientKey["IS_CONFIDENTIAL"] = "isConfidential";
1530
- })(exports.TranslatorTranslationClientKey || (exports.TranslatorTranslationClientKey = {}));
1531
- exports.TranslatorTranslationDefaultKey = void 0;
1532
- (function(TranslatorTranslationDefaultKey) {
1586
+ return TranslatorTranslationClientKey;
1587
+ }({});
1588
+ var TranslatorTranslationDefaultKey = /*#__PURE__*/ function(TranslatorTranslationDefaultKey) {
1533
1589
  TranslatorTranslationDefaultKey["ADD"] = "add";
1534
1590
  TranslatorTranslationDefaultKey["CREATE"] = "create";
1535
1591
  TranslatorTranslationDefaultKey["DELETE"] = "delete";
@@ -1560,40 +1616,118 @@ exports.TranslatorTranslationDefaultKey = void 0;
1560
1616
  TranslatorTranslationDefaultKey["SECRET"] = "secret";
1561
1617
  TranslatorTranslationDefaultKey["REDIRECT_URIS"] = "redirectUris";
1562
1618
  TranslatorTranslationDefaultKey["USERS"] = "users";
1563
- })(exports.TranslatorTranslationDefaultKey || (exports.TranslatorTranslationDefaultKey = {}));
1619
+ return TranslatorTranslationDefaultKey;
1620
+ }({});
1564
1621
 
1565
- function setObjectPathProperty(record, key, value) {
1566
- const parts = key.split('.');
1567
- if (parts.length === 1) {
1568
- record[key] = value;
1569
- return;
1570
- }
1571
- const prefix = parts.shift();
1572
- if (prefix) {
1573
- if (!Object.prototype.hasOwnProperty.call(record, prefix) || !smob.isObject(record[prefix])) {
1574
- record[prefix] = {};
1622
+ /*
1623
+ * Copyright (c) 2024-2024.
1624
+ * Author Peter Placzek (tada5hi)
1625
+ * For the full copyright and license information,
1626
+ * view the LICENSE file that was distributed with this source code.
1627
+ */ const BRACKET_NUMBER_REGEX = RegExp("(?<!\\\\)\\[(\\d+)]$");
1628
+ /**
1629
+ * Convert string to property path array.
1630
+ *
1631
+ * @see https://github.com/lodash/lodash/blob/main/src/.internal/stringToPath.ts
1632
+ * @see https://github.com/chaijs/pathval
1633
+ *
1634
+ * @param segment
1635
+ */ function pathToArray(segment) {
1636
+ const str = segment.replace(/([^\\])\[/g, '$1.[');
1637
+ const parts = str.match(/(\\\.|[^.]+?)+/g);
1638
+ if (!parts) {
1639
+ return [];
1640
+ }
1641
+ const result = [];
1642
+ for(let i = 0; i < parts.length; i++){
1643
+ if (parts[i] === 'constructor' || parts[i] === '__proto__' || parts[i] === 'prototype') {
1644
+ continue;
1645
+ }
1646
+ const regex = BRACKET_NUMBER_REGEX.exec(parts[i]);
1647
+ if (regex) {
1648
+ result.push(regex[1]);
1649
+ } else {
1650
+ result.push(parts[i].replace(/\\([.[\]])/g, '$1'));
1575
1651
  }
1576
- setObjectPathProperty(record[prefix], parts.join('.'), value);
1577
1652
  }
1653
+ return result;
1578
1654
  }
1579
- function getObjectPathProperty(data, key) {
1580
- const dotIndex = key.indexOf('.');
1581
- const currentKey = dotIndex === -1 ? key : key.substring(0, dotIndex);
1582
- if (dotIndex === -1) {
1583
- return data[currentKey];
1655
+ /*
1656
+ * Copyright (c) 2024.
1657
+ * Author Peter Placzek (tada5hi)
1658
+ * For the full copyright and license information,
1659
+ * view the LICENSE file that was distributed with this source code.
1660
+ */ var Character;
1661
+ (function(Character) {
1662
+ Character["WILDCARD"] = "*";
1663
+ Character["GLOBSTAR"] = "**";
1664
+ })(Character || (Character = {}));
1665
+ /*
1666
+ * Copyright (c) 2024.
1667
+ * Author Peter Placzek (tada5hi)
1668
+ * For the full copyright and license information,
1669
+ * view the LICENSE file that was distributed with this source code.
1670
+ */ function isObject(input) {
1671
+ return !!input && typeof input === 'object' && !Array.isArray(input);
1672
+ }
1673
+ function getPathValue(data, path) {
1674
+ const parts = Array.isArray(path) ? path : pathToArray(path);
1675
+ let res;
1676
+ let temp = data;
1677
+ let index = 0;
1678
+ while(index < parts.length){
1679
+ if (temp === null || typeof temp === 'undefined') {
1680
+ break;
1681
+ }
1682
+ if (parts[index] in Object(temp)) {
1683
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1684
+ // @ts-expect-error
1685
+ temp = temp[parts[index]];
1686
+ } else {
1687
+ break;
1688
+ }
1689
+ if (index === parts.length - 1) {
1690
+ res = temp;
1691
+ }
1692
+ index++;
1584
1693
  }
1585
- if (!smob.isObject(data[currentKey])) {
1586
- return undefined;
1694
+ return res;
1695
+ }
1696
+ const NUMBER_REGEX = /^\d+$/;
1697
+ function setPathValue(data, path, value) {
1698
+ const parts = Array.isArray(path) ? path : pathToArray(path);
1699
+ let temp = data;
1700
+ let index = 0;
1701
+ while(index < parts.length){
1702
+ /* istanbul ignore next */ if (!Array.isArray(temp) && !isObject(temp)) {
1703
+ break;
1704
+ }
1705
+ const key = parts[index];
1706
+ // [foo, '0']
1707
+ if (typeof temp[key] === 'undefined') {
1708
+ const match = NUMBER_REGEX.test(key);
1709
+ if (match) {
1710
+ temp[key] = [];
1711
+ } else {
1712
+ temp[key] = {};
1713
+ }
1714
+ }
1715
+ if (index === parts.length - 1) {
1716
+ temp[key] = value;
1717
+ break;
1718
+ }
1719
+ index++;
1720
+ temp = temp[key];
1587
1721
  }
1588
- const nextKey = key.substring(currentKey.length + 1);
1589
- return getObjectPathProperty(data[currentKey], nextKey);
1722
+ return data;
1590
1723
  }
1724
+
1591
1725
  class MemoryStore {
1592
1726
  async get(context) {
1593
1727
  if (!this.data[context.locale] || !this.data[context.locale][context.group]) {
1594
1728
  return undefined;
1595
1729
  }
1596
- const output = getObjectPathProperty(this.data[context.locale][context.group], context.key);
1730
+ const output = getPathValue(this.data[context.locale][context.group], context.key);
1597
1731
  if (typeof output === 'string') {
1598
1732
  return output;
1599
1733
  }
@@ -1601,7 +1735,7 @@ class MemoryStore {
1601
1735
  }
1602
1736
  async set(context) {
1603
1737
  this.initLines(context.group, context.locale);
1604
- setObjectPathProperty(this.data[context.locale][context.group], context.key, context.value);
1738
+ setPathValue(this.data[context.locale][context.group], context.key, context.value);
1605
1739
  }
1606
1740
  initLines(group, locale) {
1607
1741
  if (typeof this.data[locale] === 'undefined') {
@@ -1771,49 +1905,49 @@ function useTranslationsForGroup(group, elements) {
1771
1905
  }
1772
1906
 
1773
1907
  const TranslatorTranslationClientGerman = {
1774
- [exports.TranslatorTranslationClientKey.NAME_HINT]: 'Etwas, das Benutzer erkennen und vertrauen werden',
1775
- [exports.TranslatorTranslationClientKey.DESCRIPTION_HINT]: 'Dies wird allen Benutzern dieser Anwendung angezeigt',
1776
- [exports.TranslatorTranslationClientKey.REDIRECT_URI_HINT]: 'URI-Muster, zu dem ein Browser nach einem erfolgreichen Login weiterleiten kann',
1777
- [exports.TranslatorTranslationClientKey.IS_CONFIDENTIAL]: 'Ist vertraulich?'
1908
+ [TranslatorTranslationClientKey.NAME_HINT]: 'Etwas, das Benutzer erkennen und vertrauen werden',
1909
+ [TranslatorTranslationClientKey.DESCRIPTION_HINT]: 'Dies wird allen Benutzern dieser Anwendung angezeigt',
1910
+ [TranslatorTranslationClientKey.REDIRECT_URI_HINT]: 'URI-Muster, zu dem ein Browser nach einem erfolgreichen Login weiterleiten kann',
1911
+ [TranslatorTranslationClientKey.IS_CONFIDENTIAL]: 'Ist vertraulich?'
1778
1912
  };
1779
1913
 
1780
1914
  const TranslatorTranslationDefaultGerman = {
1781
- [exports.TranslatorTranslationDefaultKey.ADD]: 'hinzufügen',
1782
- [exports.TranslatorTranslationDefaultKey.CREATE]: 'erstellen',
1783
- [exports.TranslatorTranslationDefaultKey.DELETE]: 'löschen',
1784
- [exports.TranslatorTranslationDefaultKey.GENERATE]: 'generieren',
1785
- [exports.TranslatorTranslationDefaultKey.UPDATE]: 'aktualisieren',
1786
- [exports.TranslatorTranslationDefaultKey.ACTIVE]: 'aktiv',
1787
- [exports.TranslatorTranslationDefaultKey.INACTIVE]: 'inaktiv',
1788
- [exports.TranslatorTranslationDefaultKey.LOCKED]: 'gesperrt',
1789
- [exports.TranslatorTranslationDefaultKey.NOT_LOCKED]: 'nicht gesperrt',
1790
- [exports.TranslatorTranslationDefaultKey.VALUE_IS_REGEX]: 'Wert ist regex pattern?',
1791
- [exports.TranslatorTranslationDefaultKey.CLIENT]: 'Client',
1792
- [exports.TranslatorTranslationDefaultKey.CLIENTS]: 'Clients',
1793
- [exports.TranslatorTranslationDefaultKey.CLIENT_SCOPES]: 'Client-Bereiche',
1794
- [exports.TranslatorTranslationDefaultKey.DISPLAY_NAME]: 'Anzeigename',
1795
- [exports.TranslatorTranslationDefaultKey.EMAIL]: 'E-Mail',
1796
- [exports.TranslatorTranslationDefaultKey.EXTERNAL_ID]: 'externe ID',
1797
- [exports.TranslatorTranslationDefaultKey.HASHED]: 'gehasht',
1798
- [exports.TranslatorTranslationDefaultKey.OVERVIEW]: 'Überblick',
1799
- [exports.TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS]: 'Identitätsanbieter',
1800
- [exports.TranslatorTranslationDefaultKey.NAME]: 'Name',
1801
- [exports.TranslatorTranslationDefaultKey.DESCRIPTION]: 'Beschreibung',
1802
- [exports.TranslatorTranslationDefaultKey.PERMISSIONS]: 'Berechtigungen',
1803
- [exports.TranslatorTranslationDefaultKey.REALM]: 'Organisation',
1804
- [exports.TranslatorTranslationDefaultKey.REALMS]: 'Organisationen',
1805
- [exports.TranslatorTranslationDefaultKey.ROLES]: 'Rollen',
1806
- [exports.TranslatorTranslationDefaultKey.SCOPES]: 'Bereiche',
1807
- [exports.TranslatorTranslationDefaultKey.SECRET]: 'Geheimnis',
1808
- [exports.TranslatorTranslationDefaultKey.REDIRECT_URIS]: 'Weiterleitungs-URIs',
1809
- [exports.TranslatorTranslationDefaultKey.USERS]: 'Benutzer'
1915
+ [TranslatorTranslationDefaultKey.ADD]: 'hinzufügen',
1916
+ [TranslatorTranslationDefaultKey.CREATE]: 'erstellen',
1917
+ [TranslatorTranslationDefaultKey.DELETE]: 'löschen',
1918
+ [TranslatorTranslationDefaultKey.GENERATE]: 'generieren',
1919
+ [TranslatorTranslationDefaultKey.UPDATE]: 'aktualisieren',
1920
+ [TranslatorTranslationDefaultKey.ACTIVE]: 'aktiv',
1921
+ [TranslatorTranslationDefaultKey.INACTIVE]: 'inaktiv',
1922
+ [TranslatorTranslationDefaultKey.LOCKED]: 'gesperrt',
1923
+ [TranslatorTranslationDefaultKey.NOT_LOCKED]: 'nicht gesperrt',
1924
+ [TranslatorTranslationDefaultKey.VALUE_IS_REGEX]: 'Wert ist regex pattern?',
1925
+ [TranslatorTranslationDefaultKey.CLIENT]: 'Client',
1926
+ [TranslatorTranslationDefaultKey.CLIENTS]: 'Clients',
1927
+ [TranslatorTranslationDefaultKey.CLIENT_SCOPES]: 'Client-Bereiche',
1928
+ [TranslatorTranslationDefaultKey.DISPLAY_NAME]: 'Anzeigename',
1929
+ [TranslatorTranslationDefaultKey.EMAIL]: 'E-Mail',
1930
+ [TranslatorTranslationDefaultKey.EXTERNAL_ID]: 'externe ID',
1931
+ [TranslatorTranslationDefaultKey.HASHED]: 'gehasht',
1932
+ [TranslatorTranslationDefaultKey.OVERVIEW]: 'Überblick',
1933
+ [TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS]: 'Identitätsanbieter',
1934
+ [TranslatorTranslationDefaultKey.NAME]: 'Name',
1935
+ [TranslatorTranslationDefaultKey.DESCRIPTION]: 'Beschreibung',
1936
+ [TranslatorTranslationDefaultKey.PERMISSIONS]: 'Berechtigungen',
1937
+ [TranslatorTranslationDefaultKey.REALM]: 'Organisation',
1938
+ [TranslatorTranslationDefaultKey.REALMS]: 'Organisationen',
1939
+ [TranslatorTranslationDefaultKey.ROLES]: 'Rollen',
1940
+ [TranslatorTranslationDefaultKey.SCOPES]: 'Bereiche',
1941
+ [TranslatorTranslationDefaultKey.SECRET]: 'Geheimnis',
1942
+ [TranslatorTranslationDefaultKey.REDIRECT_URIS]: 'Weiterleitungs-URIs',
1943
+ [TranslatorTranslationDefaultKey.USERS]: 'Benutzer'
1810
1944
  };
1811
1945
 
1812
- exports.VuelidateCustomRuleKey = void 0;
1813
- (function(VuelidateCustomRuleKey) {
1946
+ var VuelidateCustomRuleKey = /*#__PURE__*/ function(VuelidateCustomRuleKey) {
1814
1947
  VuelidateCustomRuleKey["ALPHA_NUM_HYPHEN_UNDERSCORE"] = "alphaNumHyphenUnderscore";
1815
1948
  VuelidateCustomRuleKey["ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE"] = "alphaUpperNumHyphenUnderscore";
1816
- })(exports.VuelidateCustomRuleKey || (exports.VuelidateCustomRuleKey = {}));
1949
+ return VuelidateCustomRuleKey;
1950
+ }({});
1817
1951
  const VuelidateCustomRule = {
1818
1952
  ["alphaNumHyphenUnderscore"]: validators.helpers.regex(/^[a-z0-9-_]*$/),
1819
1953
  ["alphaUpperNumHyphenUnderscore"]: validators.helpers.regex(/^[a-zA-Z0-9-_]*$/)
@@ -1837,76 +1971,76 @@ function extractVuelidateResultsFromChild(vuelidate, child, keys) {
1837
1971
  }
1838
1972
 
1839
1973
  const TranslatorTranslationVuelidateGerman = {
1840
- [exports.VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: 'Der Eingabewert darf nur aus folgenden Zeichen bestehen: [0-9a-z-_]+',
1841
- [exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: 'Der Eingabewert darf nur aus folgenden Zeichen bestehen: [0-9a-zA-Z-_]+'
1974
+ [VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: 'Der Eingabewert darf nur aus folgenden Zeichen bestehen: [0-9a-z-_]+',
1975
+ [VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: 'Der Eingabewert darf nur aus folgenden Zeichen bestehen: [0-9a-zA-Z-_]+'
1842
1976
  };
1843
1977
 
1844
1978
  const TranslatorTranslationVuecsGerman = {
1845
- [exports.TranslatorTranslationVuecsKey.NO_MORE]: 'Keine weiteren {{name}} verfügbar'
1979
+ [TranslatorTranslationVuecsKey.NO_MORE]: 'Keine weiteren {{name}} verfügbar'
1846
1980
  };
1847
1981
 
1848
1982
  const TranslatorTranslationClientEnglish = {
1849
- [exports.TranslatorTranslationClientKey.NAME_HINT]: 'Something users will recognize and trust',
1850
- [exports.TranslatorTranslationClientKey.DESCRIPTION_HINT]: 'Displayed to all users of this application',
1851
- [exports.TranslatorTranslationClientKey.REDIRECT_URI_HINT]: 'URI pattern a browser can redirect to after a successful login',
1852
- [exports.TranslatorTranslationClientKey.IS_CONFIDENTIAL]: 'Is confidential?'
1983
+ [TranslatorTranslationClientKey.NAME_HINT]: 'Something users will recognize and trust',
1984
+ [TranslatorTranslationClientKey.DESCRIPTION_HINT]: 'Displayed to all users of this application',
1985
+ [TranslatorTranslationClientKey.REDIRECT_URI_HINT]: 'URI pattern a browser can redirect to after a successful login',
1986
+ [TranslatorTranslationClientKey.IS_CONFIDENTIAL]: 'Is confidential?'
1853
1987
  };
1854
1988
 
1855
1989
  const TranslatorTranslationDefaultEnglish = {
1856
- [exports.TranslatorTranslationDefaultKey.ADD]: 'add',
1857
- [exports.TranslatorTranslationDefaultKey.CREATE]: 'create',
1858
- [exports.TranslatorTranslationDefaultKey.DELETE]: 'delete',
1859
- [exports.TranslatorTranslationDefaultKey.GENERATE]: 'generate',
1860
- [exports.TranslatorTranslationDefaultKey.UPDATE]: 'update',
1861
- [exports.TranslatorTranslationDefaultKey.ACTIVE]: 'active',
1862
- [exports.TranslatorTranslationDefaultKey.INACTIVE]: 'inactive',
1863
- [exports.TranslatorTranslationDefaultKey.LOCKED]: 'locked',
1864
- [exports.TranslatorTranslationDefaultKey.NOT_LOCKED]: 'not locked',
1865
- [exports.TranslatorTranslationDefaultKey.VALUE_IS_REGEX]: 'Value is regex pattern?',
1866
- [exports.TranslatorTranslationDefaultKey.CLIENT]: 'update',
1867
- [exports.TranslatorTranslationDefaultKey.CLIENTS]: 'clients',
1868
- [exports.TranslatorTranslationDefaultKey.CLIENT_SCOPES]: 'client scopes',
1869
- [exports.TranslatorTranslationDefaultKey.DISPLAY_NAME]: 'display name',
1870
- [exports.TranslatorTranslationDefaultKey.EMAIL]: 'email',
1871
- [exports.TranslatorTranslationDefaultKey.EXTERNAL_ID]: 'external id',
1872
- [exports.TranslatorTranslationDefaultKey.HASHED]: 'hashed',
1873
- [exports.TranslatorTranslationDefaultKey.OVERVIEW]: 'overview',
1874
- [exports.TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS]: 'identity providers',
1875
- [exports.TranslatorTranslationDefaultKey.NAME]: 'name',
1876
- [exports.TranslatorTranslationDefaultKey.DESCRIPTION]: 'description',
1877
- [exports.TranslatorTranslationDefaultKey.PERMISSIONS]: 'permissions',
1878
- [exports.TranslatorTranslationDefaultKey.REALM]: 'realm',
1879
- [exports.TranslatorTranslationDefaultKey.REALMS]: 'realms',
1880
- [exports.TranslatorTranslationDefaultKey.ROLES]: 'roles',
1881
- [exports.TranslatorTranslationDefaultKey.SCOPES]: 'scopes',
1882
- [exports.TranslatorTranslationDefaultKey.SECRET]: 'secret',
1883
- [exports.TranslatorTranslationDefaultKey.REDIRECT_URIS]: 'redirect uri(s)',
1884
- [exports.TranslatorTranslationDefaultKey.USERS]: 'users'
1990
+ [TranslatorTranslationDefaultKey.ADD]: 'add',
1991
+ [TranslatorTranslationDefaultKey.CREATE]: 'create',
1992
+ [TranslatorTranslationDefaultKey.DELETE]: 'delete',
1993
+ [TranslatorTranslationDefaultKey.GENERATE]: 'generate',
1994
+ [TranslatorTranslationDefaultKey.UPDATE]: 'update',
1995
+ [TranslatorTranslationDefaultKey.ACTIVE]: 'active',
1996
+ [TranslatorTranslationDefaultKey.INACTIVE]: 'inactive',
1997
+ [TranslatorTranslationDefaultKey.LOCKED]: 'locked',
1998
+ [TranslatorTranslationDefaultKey.NOT_LOCKED]: 'not locked',
1999
+ [TranslatorTranslationDefaultKey.VALUE_IS_REGEX]: 'Value is regex pattern?',
2000
+ [TranslatorTranslationDefaultKey.CLIENT]: 'update',
2001
+ [TranslatorTranslationDefaultKey.CLIENTS]: 'clients',
2002
+ [TranslatorTranslationDefaultKey.CLIENT_SCOPES]: 'client scopes',
2003
+ [TranslatorTranslationDefaultKey.DISPLAY_NAME]: 'display name',
2004
+ [TranslatorTranslationDefaultKey.EMAIL]: 'email',
2005
+ [TranslatorTranslationDefaultKey.EXTERNAL_ID]: 'external id',
2006
+ [TranslatorTranslationDefaultKey.HASHED]: 'hashed',
2007
+ [TranslatorTranslationDefaultKey.OVERVIEW]: 'overview',
2008
+ [TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS]: 'identity providers',
2009
+ [TranslatorTranslationDefaultKey.NAME]: 'name',
2010
+ [TranslatorTranslationDefaultKey.DESCRIPTION]: 'description',
2011
+ [TranslatorTranslationDefaultKey.PERMISSIONS]: 'permissions',
2012
+ [TranslatorTranslationDefaultKey.REALM]: 'realm',
2013
+ [TranslatorTranslationDefaultKey.REALMS]: 'realms',
2014
+ [TranslatorTranslationDefaultKey.ROLES]: 'roles',
2015
+ [TranslatorTranslationDefaultKey.SCOPES]: 'scopes',
2016
+ [TranslatorTranslationDefaultKey.SECRET]: 'secret',
2017
+ [TranslatorTranslationDefaultKey.REDIRECT_URIS]: 'redirect uri(s)',
2018
+ [TranslatorTranslationDefaultKey.USERS]: 'users'
1885
2019
  };
1886
2020
 
1887
2021
  const TranslatorTranslationVuelidateEnglish = {
1888
- [exports.VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: 'The input value is only allowed to consist of the following characters: [0-9a-z-_]+',
1889
- [exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: 'The input value is only allowed to consist of the following characters: [0-9a-zA-Z-_]+'
2022
+ [VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: 'The input value is only allowed to consist of the following characters: [0-9a-z-_]+',
2023
+ [VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: 'The input value is only allowed to consist of the following characters: [0-9a-zA-Z-_]+'
1890
2024
  };
1891
2025
 
1892
2026
  const TranslatorTranslationVuecsEnglish = {
1893
- [exports.TranslatorTranslationVuecsKey.NO_MORE]: 'No more {{name}} available'
2027
+ [TranslatorTranslationVuecsKey.NO_MORE]: 'No more {{name}} available'
1894
2028
  };
1895
2029
 
1896
2030
  function installTranslator(app, options = {}) {
1897
2031
  const store = new MemoryStore({
1898
2032
  data: {
1899
2033
  de: {
1900
- [exports.TranslatorTranslationGroup.CLIENT]: TranslatorTranslationClientGerman,
1901
- [exports.TranslatorTranslationGroup.DEFAULT]: TranslatorTranslationDefaultGerman,
1902
- [exports.TranslatorTranslationGroup.VUECS]: TranslatorTranslationVuecsGerman,
1903
- [exports.TranslatorTranslationGroup.VUELIDATE]: TranslatorTranslationVuelidateGerman
2034
+ [TranslatorTranslationGroup.CLIENT]: TranslatorTranslationClientGerman,
2035
+ [TranslatorTranslationGroup.DEFAULT]: TranslatorTranslationDefaultGerman,
2036
+ [TranslatorTranslationGroup.VUECS]: TranslatorTranslationVuecsGerman,
2037
+ [TranslatorTranslationGroup.VUELIDATE]: TranslatorTranslationVuelidateGerman
1904
2038
  },
1905
2039
  en: {
1906
- [exports.TranslatorTranslationGroup.CLIENT]: TranslatorTranslationClientEnglish,
1907
- [exports.TranslatorTranslationGroup.DEFAULT]: TranslatorTranslationDefaultEnglish,
1908
- [exports.TranslatorTranslationGroup.VUECS]: TranslatorTranslationVuecsEnglish,
1909
- [exports.TranslatorTranslationGroup.VUELIDATE]: TranslatorTranslationVuelidateEnglish
2040
+ [TranslatorTranslationGroup.CLIENT]: TranslatorTranslationClientEnglish,
2041
+ [TranslatorTranslationGroup.DEFAULT]: TranslatorTranslationDefaultEnglish,
2042
+ [TranslatorTranslationGroup.VUECS]: TranslatorTranslationVuecsEnglish,
2043
+ [TranslatorTranslationGroup.VUELIDATE]: TranslatorTranslationVuelidateEnglish
1910
2044
  }
1911
2045
  }
1912
2046
  });
@@ -1918,12 +2052,12 @@ function installTranslator(app, options = {}) {
1918
2052
 
1919
2053
  function createFormSubmitTranslations() {
1920
2054
  const updateText = useTranslation({
1921
- group: exports.TranslatorTranslationGroup.DEFAULT,
1922
- key: exports.TranslatorTranslationDefaultKey.UPDATE
2055
+ group: TranslatorTranslationGroup.DEFAULT,
2056
+ key: TranslatorTranslationDefaultKey.UPDATE
1923
2057
  });
1924
2058
  const createText = useTranslation({
1925
- group: exports.TranslatorTranslationGroup.DEFAULT,
1926
- key: exports.TranslatorTranslationDefaultKey.CREATE
2059
+ group: TranslatorTranslationGroup.DEFAULT,
2060
+ key: TranslatorTranslationDefaultKey.CREATE
1927
2061
  });
1928
2062
  return {
1929
2063
  createText,
@@ -1953,6 +2087,65 @@ function buildFormSubmitWithTranslations(options, translations) {
1953
2087
  };
1954
2088
  }
1955
2089
 
2090
+ function createPermissionCheckerReactiveFn(ctx = {}) {
2091
+ let store;
2092
+ if (ctx.store) {
2093
+ store = ctx.store;
2094
+ } else {
2095
+ store = useStore(ctx.pinia, ctx.app);
2096
+ }
2097
+ const storeRefs = storeToRefs(store);
2098
+ return (ctx)=>{
2099
+ const data = vue.ref(false);
2100
+ let computePromise;
2101
+ const compute = async ()=>{
2102
+ if (computePromise) {
2103
+ return computePromise;
2104
+ }
2105
+ let identity;
2106
+ if (storeRefs.userId.value) {
2107
+ identity = {
2108
+ type: 'user',
2109
+ id: storeRefs.userId.value
2110
+ };
2111
+ }
2112
+ let outcome;
2113
+ try {
2114
+ computePromise = store.permissionChecker.preCheckOneOf({
2115
+ ...ctx,
2116
+ data: {
2117
+ ...ctx.data || {},
2118
+ identity
2119
+ }
2120
+ }).then(()=>true).catch(()=>false);
2121
+ outcome = await computePromise;
2122
+ } catch (e) {
2123
+ outcome = false;
2124
+ } finally{
2125
+ computePromise = undefined;
2126
+ }
2127
+ return outcome;
2128
+ };
2129
+ Promise.resolve().then(()=>compute()).then((outcome)=>{
2130
+ data.value = outcome;
2131
+ });
2132
+ let removeListener;
2133
+ vue.onMounted(()=>{
2134
+ removeListener = vue.watch(storeRefs.loggedIn, ()=>{
2135
+ Promise.resolve().then(()=>compute()).then((outcome)=>{
2136
+ data.value = outcome;
2137
+ });
2138
+ });
2139
+ });
2140
+ vue.onUnmounted(()=>{
2141
+ if (typeof removeListener !== 'undefined') {
2142
+ removeListener();
2143
+ }
2144
+ });
2145
+ return data;
2146
+ };
2147
+ }
2148
+
1956
2149
  const AClient = vue.defineComponent({
1957
2150
  props: defineEntityManagerProps(),
1958
2151
  emits: defineEntityManagerEvents(),
@@ -2000,22 +2193,9 @@ function useUpdatedAt(input) {
2000
2193
  });
2001
2194
  }
2002
2195
 
2003
- function useAbilityCheck(name) {
2004
- const { abilities } = useStore();
2005
- const data = vue.ref(false);
2006
- data.value = abilities.has(name);
2007
- let removeListener;
2008
- vue.onMounted(()=>{
2009
- removeListener = abilities.on('updated', ()=>{
2010
- data.value = abilities.has(name);
2011
- });
2012
- });
2013
- vue.onUnmounted(()=>{
2014
- if (typeof removeListener !== 'undefined') {
2015
- removeListener();
2016
- }
2017
- });
2018
- return data;
2196
+ function usePermissionCheck(ctx) {
2197
+ const checkFn = createPermissionCheckerReactiveFn();
2198
+ return checkFn(ctx);
2019
2199
  }
2020
2200
 
2021
2201
  function useRealmResourceWritableCheck(realmId) {
@@ -2059,6 +2239,7 @@ const ARealmForm = vue.defineComponent({
2059
2239
  const busy = vue.ref(false);
2060
2240
  const form = vue.reactive({
2061
2241
  name: '',
2242
+ display_name: '',
2062
2243
  description: ''
2063
2244
  });
2064
2245
  const $v = useVuelidate({
@@ -2067,6 +2248,10 @@ const ARealmForm = vue.defineComponent({
2067
2248
  minLength: validators.minLength(3),
2068
2249
  maxLength: validators.maxLength(128)
2069
2250
  },
2251
+ display_name: {
2252
+ minLength: validators.minLength(3),
2253
+ maxLength: validators.maxLength(256)
2254
+ },
2070
2255
  description: {
2071
2256
  minLength: validators.minLength(5),
2072
2257
  maxLength: validators.maxLength(4096)
@@ -2104,23 +2289,27 @@ const ARealmForm = vue.defineComponent({
2104
2289
  };
2105
2290
  const translationsValidation = useTranslationsForNestedValidation($v.value);
2106
2291
  const translationsSubmit = createFormSubmitTranslations();
2107
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
2292
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
2293
+ {
2294
+ key: TranslatorTranslationDefaultKey.GENERATE
2295
+ },
2108
2296
  {
2109
- key: exports.TranslatorTranslationDefaultKey.GENERATE
2297
+ key: TranslatorTranslationDefaultKey.NAME
2110
2298
  },
2111
2299
  {
2112
- key: exports.TranslatorTranslationDefaultKey.NAME
2300
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
2113
2301
  },
2114
2302
  {
2115
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
2303
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
2116
2304
  }
2117
2305
  ]);
2118
2306
  const render = ()=>{
2119
- const id = formControls.buildFormGroup({
2307
+ const children = [];
2308
+ children.push(formControls.buildFormGroup({
2120
2309
  validationMessages: translationsValidation.name.value,
2121
2310
  validationSeverity: getVuelidateSeverity($v.value.name),
2122
2311
  label: true,
2123
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
2312
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
2124
2313
  content: formControls.buildFormInput({
2125
2314
  value: $v.value.name.$model,
2126
2315
  onChange (input) {
@@ -2130,10 +2319,9 @@ const ARealmForm = vue.defineComponent({
2130
2319
  disabled: manager.data.value && manager.data.value.name === coreKit.REALM_MASTER_NAME
2131
2320
  }
2132
2321
  })
2133
- });
2134
- let idHint = [];
2322
+ }));
2135
2323
  if (!manager.data.value || !manager.data.value.id) {
2136
- idHint = [
2324
+ children.push([
2137
2325
  vue.h('div', {
2138
2326
  class: 'mb-3'
2139
2327
  }, [
@@ -2154,16 +2342,28 @@ const ARealmForm = vue.defineComponent({
2154
2342
  class: 'fa fa-wrench'
2155
2343
  }),
2156
2344
  ' ',
2157
- translationsDefault[exports.TranslatorTranslationDefaultKey.GENERATE].value
2345
+ translationsDefault[TranslatorTranslationDefaultKey.GENERATE].value
2158
2346
  ])
2159
2347
  ])
2160
- ];
2348
+ ]);
2161
2349
  }
2162
- const description = formControls.buildFormGroup({
2350
+ children.push(formControls.buildFormGroup({
2351
+ validationMessages: translationsValidation.display_name.value,
2352
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
2353
+ label: true,
2354
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
2355
+ content: formControls.buildFormInput({
2356
+ value: $v.value.display_name.$model,
2357
+ onChange (input) {
2358
+ $v.value.display_name.$model = input;
2359
+ }
2360
+ })
2361
+ }));
2362
+ children.push(formControls.buildFormGroup({
2163
2363
  validationMessages: translationsValidation.description.value,
2164
2364
  validationSeverity: getVuelidateSeverity($v.value.description),
2165
2365
  label: true,
2166
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DESCRIPTION].value,
2366
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
2167
2367
  content: formControls.buildFormTextarea({
2168
2368
  value: $v.value.description.$model,
2169
2369
  onChange (input) {
@@ -2173,26 +2373,19 @@ const ARealmForm = vue.defineComponent({
2173
2373
  rows: 4
2174
2374
  }
2175
2375
  })
2176
- });
2177
- const submitButton = buildFormSubmitWithTranslations({
2376
+ }));
2377
+ children.push(buildFormSubmitWithTranslations({
2178
2378
  submit,
2179
2379
  busy: busy.value,
2180
2380
  isEditing: isEditing.value,
2181
2381
  invalid: $v.value.$invalid
2182
- }, translationsSubmit);
2382
+ }, translationsSubmit));
2183
2383
  return vue.h('form', {
2184
2384
  onSubmit ($event) {
2185
2385
  $event.preventDefault();
2186
2386
  return submit.apply(null);
2187
2387
  }
2188
- }, [
2189
- id,
2190
- idHint,
2191
- vue.h('hr'),
2192
- description,
2193
- vue.h('hr'),
2194
- submitButton
2195
- ]);
2388
+ }, children);
2196
2389
  };
2197
2390
  return ()=>render();
2198
2391
  }
@@ -2209,12 +2402,12 @@ const ARealms = vue.defineComponent({
2209
2402
  setup: ctx
2210
2403
  });
2211
2404
  const translationsName = useTranslation({
2212
- group: exports.TranslatorTranslationGroup.VUECS,
2213
- key: exports.TranslatorTranslationDefaultKey.REALMS
2405
+ group: TranslatorTranslationGroup.VUECS,
2406
+ key: TranslatorTranslationDefaultKey.REALMS
2214
2407
  });
2215
2408
  const translation = useTranslation({
2216
- group: exports.TranslatorTranslationGroup.VUECS,
2217
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
2409
+ group: TranslatorTranslationGroup.VUECS,
2410
+ key: TranslatorTranslationVuecsKey.NO_MORE,
2218
2411
  data: {
2219
2412
  name: translationsName
2220
2413
  }
@@ -2313,8 +2506,8 @@ const AClientRedirectUris = vue.defineComponent({
2313
2506
  return lastEl && lastEl.trim() !== '';
2314
2507
  });
2315
2508
  const addTranslation = useTranslation({
2316
- group: exports.TranslatorTranslationGroup.DEFAULT,
2317
- key: exports.TranslatorTranslationDefaultKey.ADD
2509
+ group: TranslatorTranslationGroup.DEFAULT,
2510
+ key: TranslatorTranslationDefaultKey.ADD
2318
2511
  });
2319
2512
  const render = ()=>{
2320
2513
  const elements = items.value.map((item, index)=>vue.h(AClientRedirectUrisItem, {
@@ -2373,6 +2566,7 @@ const AClientForm = vue.defineComponent({
2373
2566
  const busy = vue.ref(false);
2374
2567
  const form = vue.reactive({
2375
2568
  name: '',
2569
+ display_name: '',
2376
2570
  description: '',
2377
2571
  realm_id: '',
2378
2572
  redirect_uri: '',
@@ -2384,7 +2578,11 @@ const AClientForm = vue.defineComponent({
2384
2578
  const $v = useVuelidate({
2385
2579
  name: {
2386
2580
  required: validators.required,
2387
- [exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
2581
+ [VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
2582
+ minLength: validators.minLength(3),
2583
+ maxLength: validators.maxLength(256)
2584
+ },
2585
+ display_name: {
2388
2586
  minLength: validators.minLength(3),
2389
2587
  maxLength: validators.maxLength(256)
2390
2588
  },
@@ -2444,38 +2642,41 @@ const AClientForm = vue.defineComponent({
2444
2642
  };
2445
2643
  const translationsValidation = useTranslationsForNestedValidation($v.value);
2446
2644
  const translationsSubmit = createFormSubmitTranslations();
2447
- const translationsClient = useTranslationsForGroup(exports.TranslatorTranslationGroup.CLIENT, [
2645
+ const translationsClient = useTranslationsForGroup(TranslatorTranslationGroup.CLIENT, [
2448
2646
  {
2449
- key: exports.TranslatorTranslationClientKey.NAME_HINT
2647
+ key: TranslatorTranslationClientKey.NAME_HINT
2450
2648
  },
2451
2649
  {
2452
- key: exports.TranslatorTranslationClientKey.DESCRIPTION_HINT
2650
+ key: TranslatorTranslationClientKey.DESCRIPTION_HINT
2453
2651
  },
2454
2652
  {
2455
- key: exports.TranslatorTranslationClientKey.REDIRECT_URI_HINT
2653
+ key: TranslatorTranslationClientKey.REDIRECT_URI_HINT
2456
2654
  },
2457
2655
  {
2458
- key: exports.TranslatorTranslationClientKey.IS_CONFIDENTIAL
2656
+ key: TranslatorTranslationClientKey.IS_CONFIDENTIAL
2459
2657
  }
2460
2658
  ]);
2461
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
2659
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
2660
+ {
2661
+ key: TranslatorTranslationDefaultKey.GENERATE
2662
+ },
2462
2663
  {
2463
- key: exports.TranslatorTranslationDefaultKey.GENERATE
2664
+ key: TranslatorTranslationDefaultKey.NAME
2464
2665
  },
2465
2666
  {
2466
- key: exports.TranslatorTranslationDefaultKey.NAME
2667
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
2467
2668
  },
2468
2669
  {
2469
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
2670
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
2470
2671
  },
2471
2672
  {
2472
- key: exports.TranslatorTranslationDefaultKey.REALM
2673
+ key: TranslatorTranslationDefaultKey.REALM
2473
2674
  },
2474
2675
  {
2475
- key: exports.TranslatorTranslationDefaultKey.REDIRECT_URIS
2676
+ key: TranslatorTranslationDefaultKey.REDIRECT_URIS
2476
2677
  },
2477
2678
  {
2478
- key: exports.TranslatorTranslationDefaultKey.SECRET
2679
+ key: TranslatorTranslationDefaultKey.SECRET
2479
2680
  }
2480
2681
  ]);
2481
2682
  const render = ()=>{
@@ -2484,7 +2685,7 @@ const AClientForm = vue.defineComponent({
2484
2685
  validationMessages: translationsValidation.name.value,
2485
2686
  validationSeverity: getVuelidateSeverity($v.value.name),
2486
2687
  label: true,
2487
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
2688
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
2488
2689
  content: formControls.buildFormInput({
2489
2690
  value: $v.value.name.$model,
2490
2691
  onChange (input) {
@@ -2495,46 +2696,62 @@ const AClientForm = vue.defineComponent({
2495
2696
  }
2496
2697
  })
2497
2698
  }),
2498
- vue.h('small', translationsClient[exports.TranslatorTranslationClientKey.NAME_HINT].value)
2699
+ vue.h('small', translationsClient[TranslatorTranslationClientKey.NAME_HINT].value)
2499
2700
  ];
2701
+ const displayName = formControls.buildFormGroup({
2702
+ validationMessages: translationsValidation.display_name.value,
2703
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
2704
+ label: true,
2705
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
2706
+ content: formControls.buildFormInput({
2707
+ value: $v.value.display_name.$model,
2708
+ onChange (input) {
2709
+ $v.value.display_name.$model = input;
2710
+ }
2711
+ })
2712
+ });
2500
2713
  const description = [
2501
- formControls.buildFormGroup({
2502
- validationMessages: translationsValidation.description.value,
2503
- validationSeverity: getVuelidateSeverity($v.value.description),
2504
- label: true,
2505
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DESCRIPTION].value,
2506
- content: formControls.buildFormTextarea({
2507
- value: $v.value.description.$model,
2508
- onChange (input) {
2509
- $v.value.description.$model = input;
2510
- },
2511
- props: {
2512
- rows: 7
2513
- }
2514
- })
2515
- }),
2516
- vue.h('small', translationsClient[exports.TranslatorTranslationClientKey.DESCRIPTION_HINT].value)
2714
+ vue.h('div', [
2715
+ formControls.buildFormGroup({
2716
+ validationMessages: translationsValidation.description.value,
2717
+ validationSeverity: getVuelidateSeverity($v.value.description),
2718
+ label: true,
2719
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
2720
+ content: formControls.buildFormTextarea({
2721
+ value: $v.value.description.$model,
2722
+ onChange (input) {
2723
+ $v.value.description.$model = input;
2724
+ },
2725
+ props: {
2726
+ rows: 7
2727
+ }
2728
+ })
2729
+ }),
2730
+ vue.h('small', translationsClient[TranslatorTranslationClientKey.DESCRIPTION_HINT].value)
2731
+ ])
2517
2732
  ];
2518
2733
  const redirectUri = [
2519
- vue.h('label', {
2520
- class: 'form-label'
2521
- }, [
2522
- translationsDefault[exports.TranslatorTranslationDefaultKey.REDIRECT_URIS].value
2523
- ]),
2524
- vue.h(AClientRedirectUris, {
2525
- uri: form.redirect_uri,
2526
- onUpdated: (value)=>{
2527
- form.redirect_uri = value;
2528
- }
2529
- }),
2530
- vue.h('small', translationsClient[exports.TranslatorTranslationClientKey.REDIRECT_URI_HINT].value)
2734
+ vue.h('div', [
2735
+ vue.h('label', {
2736
+ class: 'form-label'
2737
+ }, [
2738
+ translationsDefault[TranslatorTranslationDefaultKey.REDIRECT_URIS].value
2739
+ ]),
2740
+ vue.h(AClientRedirectUris, {
2741
+ uri: form.redirect_uri,
2742
+ onUpdated: (value)=>{
2743
+ form.redirect_uri = value;
2744
+ }
2745
+ }),
2746
+ vue.h('small', translationsClient[TranslatorTranslationClientKey.REDIRECT_URI_HINT].value)
2747
+ ])
2531
2748
  ];
2532
2749
  const isConfidential = formControls.buildFormGroup({
2533
2750
  validationMessages: translationsValidation.is_confidential.value,
2534
2751
  validationSeverity: getVuelidateSeverity($v.value.is_confidential),
2535
2752
  content: formControls.buildFormInputCheckbox({
2536
2753
  groupClass: 'form-switch mt-3',
2537
- labelContent: translationsClient[exports.TranslatorTranslationClientKey.IS_CONFIDENTIAL].value,
2754
+ labelContent: translationsClient[TranslatorTranslationClientKey.IS_CONFIDENTIAL].value,
2538
2755
  value: $v.value.is_confidential.$model,
2539
2756
  onChange (input) {
2540
2757
  $v.value.is_confidential.$model = input;
@@ -2553,7 +2770,8 @@ const AClientForm = vue.defineComponent({
2553
2770
  disabled: true
2554
2771
  }
2555
2772
  })
2556
- })
2773
+ }),
2774
+ vue.h('hr')
2557
2775
  ];
2558
2776
  }
2559
2777
  const secret = [
@@ -2561,7 +2779,7 @@ const AClientForm = vue.defineComponent({
2561
2779
  validationMessages: translationsValidation.secret.value,
2562
2780
  validationSeverity: getVuelidateSeverity($v.value.secret),
2563
2781
  label: true,
2564
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.SECRET].value,
2782
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.SECRET].value,
2565
2783
  content: formControls.buildFormInput({
2566
2784
  value: $v.value.secret.$model,
2567
2785
  onChange (input) {
@@ -2583,7 +2801,7 @@ const AClientForm = vue.defineComponent({
2583
2801
  class: 'fa fa-wrench'
2584
2802
  }),
2585
2803
  ' ',
2586
- translationsDefault[exports.TranslatorTranslationDefaultKey.GENERATE].value
2804
+ translationsDefault[TranslatorTranslationDefaultKey.GENERATE].value
2587
2805
  ])
2588
2806
  ])
2589
2807
  ];
@@ -2599,7 +2817,7 @@ const AClientForm = vue.defineComponent({
2599
2817
  vue.h('hr'),
2600
2818
  vue.h('label', {
2601
2819
  class: 'form-label'
2602
- }, translationsDefault[exports.TranslatorTranslationDefaultKey.REALM].value),
2820
+ }, translationsDefault[TranslatorTranslationDefaultKey.REALM].value),
2603
2821
  vue.h(ARealms, {
2604
2822
  headerTitle: false
2605
2823
  }, {
@@ -2620,9 +2838,10 @@ const AClientForm = vue.defineComponent({
2620
2838
  class: 'col'
2621
2839
  }, [
2622
2840
  id,
2623
- vue.h('hr'),
2624
2841
  name,
2625
2842
  vue.h('hr'),
2843
+ displayName,
2844
+ vue.h('hr'),
2626
2845
  secret,
2627
2846
  realm
2628
2847
  ]);
@@ -2630,11 +2849,11 @@ const AClientForm = vue.defineComponent({
2630
2849
  vue.h('div', {
2631
2850
  class: 'col'
2632
2851
  }, [
2633
- description,
2852
+ isConfidential,
2634
2853
  vue.h('hr'),
2635
2854
  redirectUri,
2636
2855
  vue.h('hr'),
2637
- isConfidential,
2856
+ description,
2638
2857
  submitForm
2639
2858
  ])
2640
2859
  ];
@@ -2667,12 +2886,12 @@ const AClients = vue.defineComponent({
2667
2886
  setup: ctx
2668
2887
  });
2669
2888
  const translationName = useTranslation({
2670
- group: exports.TranslatorTranslationGroup.DEFAULT,
2671
- key: exports.TranslatorTranslationDefaultKey.CLIENTS
2889
+ group: TranslatorTranslationGroup.DEFAULT,
2890
+ key: TranslatorTranslationDefaultKey.CLIENTS
2672
2891
  });
2673
2892
  const translation = useTranslation({
2674
- group: exports.TranslatorTranslationGroup.VUECS,
2675
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
2893
+ group: TranslatorTranslationGroup.VUECS,
2894
+ key: TranslatorTranslationVuecsKey.NO_MORE,
2676
2895
  data: {
2677
2896
  name: translationName
2678
2897
  }
@@ -2715,12 +2934,12 @@ const AClientScopes = vue.defineComponent({
2715
2934
  setup: ctx
2716
2935
  });
2717
2936
  const translationClientScopes = useTranslation({
2718
- group: exports.TranslatorTranslationGroup.DEFAULT,
2719
- key: exports.TranslatorTranslationDefaultKey.CLIENT_SCOPES
2937
+ group: TranslatorTranslationGroup.DEFAULT,
2938
+ key: TranslatorTranslationDefaultKey.CLIENT_SCOPES
2720
2939
  });
2721
2940
  const translation = useTranslation({
2722
- group: exports.TranslatorTranslationGroup.VUECS,
2723
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
2941
+ group: TranslatorTranslationGroup.VUECS,
2942
+ key: TranslatorTranslationVuecsKey.NO_MORE,
2724
2943
  data: {
2725
2944
  name: translationClientScopes
2726
2945
  }
@@ -2767,13 +2986,18 @@ const AScopeForm = vue.defineComponent({
2767
2986
  const busy = vue.ref(false);
2768
2987
  const form = vue.reactive({
2769
2988
  name: '',
2989
+ display_name: '',
2770
2990
  description: '',
2771
2991
  realm_id: ''
2772
2992
  });
2773
2993
  const $v = useVuelidate({
2774
2994
  name: {
2775
2995
  required: validators.required,
2776
- [exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
2996
+ [VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
2997
+ minLength: validators.minLength(3),
2998
+ maxLength: validators.maxLength(256)
2999
+ },
3000
+ display_name: {
2777
3001
  minLength: validators.minLength(3),
2778
3002
  maxLength: validators.maxLength(256)
2779
3003
  },
@@ -2825,15 +3049,18 @@ const AScopeForm = vue.defineComponent({
2825
3049
  };
2826
3050
  const translationsValidation = useTranslationsForNestedValidation($v.value);
2827
3051
  const translationsSubmit = createFormSubmitTranslations();
2828
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
3052
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
2829
3053
  {
2830
- key: exports.TranslatorTranslationDefaultKey.NAME
3054
+ key: TranslatorTranslationDefaultKey.NAME
2831
3055
  },
2832
3056
  {
2833
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
3057
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
2834
3058
  },
2835
3059
  {
2836
- key: exports.TranslatorTranslationDefaultKey.REALM
3060
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
3061
+ },
3062
+ {
3063
+ key: TranslatorTranslationDefaultKey.REALM
2837
3064
  }
2838
3065
  ]);
2839
3066
  return ()=>{
@@ -2842,7 +3069,7 @@ const AScopeForm = vue.defineComponent({
2842
3069
  validationMessages: translationsValidation.name.value,
2843
3070
  validationSeverity: getVuelidateSeverity($v.value.name),
2844
3071
  label: true,
2845
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
3072
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
2846
3073
  content: formControls.buildFormInput({
2847
3074
  value: $v.value.name.$model,
2848
3075
  onChange (input) {
@@ -2853,11 +3080,23 @@ const AScopeForm = vue.defineComponent({
2853
3080
  }
2854
3081
  })
2855
3082
  }),
3083
+ formControls.buildFormGroup({
3084
+ validationMessages: translationsValidation.display_name.value,
3085
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
3086
+ label: true,
3087
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
3088
+ content: formControls.buildFormInput({
3089
+ value: $v.value.display_name.$model,
3090
+ onChange (input) {
3091
+ $v.value.display_name.$model = input;
3092
+ }
3093
+ })
3094
+ }),
2856
3095
  formControls.buildFormGroup({
2857
3096
  validationMessages: translationsValidation.description.value,
2858
3097
  validationSeverity: getVuelidateSeverity($v.value.description),
2859
3098
  label: true,
2860
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DESCRIPTION].value,
3099
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
2861
3100
  content: formControls.buildFormTextarea({
2862
3101
  value: $v.value.description.$model,
2863
3102
  onChange (input) {
@@ -2899,12 +3138,12 @@ const AScopes = vue.defineComponent({
2899
3138
  setup: ctx
2900
3139
  });
2901
3140
  const translationName = useTranslation({
2902
- group: exports.TranslatorTranslationGroup.DEFAULT,
2903
- key: exports.TranslatorTranslationDefaultKey.SCOPES
3141
+ group: TranslatorTranslationGroup.DEFAULT,
3142
+ key: TranslatorTranslationDefaultKey.SCOPES
2904
3143
  });
2905
3144
  const translation = useTranslation({
2906
- group: exports.TranslatorTranslationGroup.VUECS,
2907
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
3145
+ group: TranslatorTranslationGroup.VUECS,
3146
+ key: TranslatorTranslationVuecsKey.NO_MORE,
2908
3147
  data: {
2909
3148
  name: translationName
2910
3149
  }
@@ -3022,6 +3261,7 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3022
3261
  setup (props, setup) {
3023
3262
  const form = vue.reactive({
3024
3263
  name: '',
3264
+ display_name: '',
3025
3265
  slug: '',
3026
3266
  enabled: true
3027
3267
  });
@@ -3031,9 +3271,13 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3031
3271
  minLength: validators.minLength(5),
3032
3272
  maxLength: validators.maxLength(128)
3033
3273
  },
3274
+ display_name: {
3275
+ minLength: validators.minLength(3),
3276
+ maxLength: validators.maxLength(256)
3277
+ },
3034
3278
  slug: {
3035
3279
  required: validators.required,
3036
- [exports.VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[exports.VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE],
3280
+ [VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE],
3037
3281
  minLength: validators.minLength(3),
3038
3282
  maxLength: validators.maxLength(36)
3039
3283
  },
@@ -3058,7 +3302,7 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3058
3302
  valid: !$v.value.$invalid
3059
3303
  });
3060
3304
  };
3061
- function assign(data) {
3305
+ function assign(data = {}) {
3062
3306
  extendObjectProperties(form, data);
3063
3307
  if (isSlugEmpty.value) {
3064
3308
  generateId();
@@ -3070,13 +3314,24 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3070
3314
  const updatedAt = useUpdatedAt(props.entity);
3071
3315
  onChange(updatedAt, ()=>assign(props.entity));
3072
3316
  assign(props.entity);
3073
- const validationMessages = useTranslationsForNestedValidation($v.value);
3317
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
3318
+ {
3319
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
3320
+ },
3321
+ {
3322
+ key: TranslatorTranslationDefaultKey.NAME
3323
+ },
3324
+ {
3325
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
3326
+ }
3327
+ ]);
3328
+ const translationsValidation = useTranslationsForNestedValidation($v.value);
3074
3329
  return ()=>{
3075
3330
  const name = formControls.buildFormGroup({
3076
- validationMessages: validationMessages.name.value,
3331
+ validationMessages: translationsValidation.name.value,
3077
3332
  validationSeverity: getVuelidateSeverity($v.value.name),
3078
3333
  label: true,
3079
- labelContent: 'Name',
3334
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
3080
3335
  content: formControls.buildFormInput({
3081
3336
  value: $v.value.name.$model,
3082
3337
  onChange (input) {
@@ -3084,8 +3339,20 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3084
3339
  }
3085
3340
  })
3086
3341
  });
3342
+ const displayName = formControls.buildFormGroup({
3343
+ validationMessages: translationsValidation.display_name.value,
3344
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
3345
+ label: true,
3346
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
3347
+ content: formControls.buildFormInput({
3348
+ value: $v.value.display_name.$model,
3349
+ onChange (input) {
3350
+ $v.value.display_name.$model = input;
3351
+ }
3352
+ })
3353
+ });
3087
3354
  const slug = formControls.buildFormGroup({
3088
- validationMessages: validationMessages.slug.value,
3355
+ validationMessages: translationsValidation.slug.value,
3089
3356
  validationSeverity: getVuelidateSeverity($v.value.slug),
3090
3357
  label: true,
3091
3358
  labelContent: 'Slug',
@@ -3126,6 +3393,7 @@ const AIdentityProviderBasicFields = vue.defineComponent({
3126
3393
  });
3127
3394
  return [
3128
3395
  name,
3396
+ displayName,
3129
3397
  slug,
3130
3398
  slugGenerator,
3131
3399
  enabled
@@ -4552,12 +4820,12 @@ const AIdentityProviders = vue.defineComponent({
4552
4820
  setup: ctx
4553
4821
  });
4554
4822
  const translationName = useTranslation({
4555
- group: exports.TranslatorTranslationGroup.DEFAULT,
4556
- key: exports.TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS
4823
+ group: TranslatorTranslationGroup.DEFAULT,
4824
+ key: TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS
4557
4825
  });
4558
4826
  const translation = useTranslation({
4559
- group: exports.TranslatorTranslationGroup.VUECS,
4560
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
4827
+ group: TranslatorTranslationGroup.VUECS,
4828
+ key: TranslatorTranslationVuecsKey.NO_MORE,
4561
4829
  data: {
4562
4830
  name: translationName
4563
4831
  }
@@ -4637,9 +4905,9 @@ const AIdentityProviderRoleAssignment = vue.defineComponent({
4637
4905
  value_is_regex: {}
4638
4906
  }, form);
4639
4907
  const validationMessages = useTranslationsForNestedValidation($v.value);
4640
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
4908
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
4641
4909
  {
4642
- key: exports.TranslatorTranslationDefaultKey.VALUE_IS_REGEX
4910
+ key: TranslatorTranslationDefaultKey.VALUE_IS_REGEX
4643
4911
  }
4644
4912
  ]);
4645
4913
  const manager = createEntityManager({
@@ -4828,6 +5096,7 @@ const ARoleForm = vue.defineComponent({
4828
5096
  const busy = vue.ref(false);
4829
5097
  const form = vue.reactive({
4830
5098
  name: '',
5099
+ display_name: '',
4831
5100
  description: '',
4832
5101
  realm_id: ''
4833
5102
  });
@@ -4837,6 +5106,10 @@ const ARoleForm = vue.defineComponent({
4837
5106
  minLength: validators.minLength(3),
4838
5107
  maxLength: validators.maxLength(30)
4839
5108
  },
5109
+ display_name: {
5110
+ minLength: validators.minLength(3),
5111
+ maxLength: validators.maxLength(256)
5112
+ },
4840
5113
  description: {
4841
5114
  minLength: validators.minLength(5),
4842
5115
  maxLength: validators.maxLength(4096)
@@ -4876,12 +5149,15 @@ const ARoleForm = vue.defineComponent({
4876
5149
  };
4877
5150
  const translationsValidation = useTranslationsForNestedValidation($v.value);
4878
5151
  const translationsSubmit = createFormSubmitTranslations();
4879
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
5152
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
5153
+ {
5154
+ key: TranslatorTranslationDefaultKey.NAME
5155
+ },
4880
5156
  {
4881
- key: exports.TranslatorTranslationDefaultKey.NAME
5157
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
4882
5158
  },
4883
5159
  {
4884
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
5160
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
4885
5161
  }
4886
5162
  ]);
4887
5163
  const render = ()=>{
@@ -4890,7 +5166,7 @@ const ARoleForm = vue.defineComponent({
4890
5166
  validationMessages: translationsValidation.name.value,
4891
5167
  validationSeverity: getVuelidateSeverity($v.value.name),
4892
5168
  label: true,
4893
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
5169
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
4894
5170
  content: formControls.buildFormInput({
4895
5171
  value: $v.value.name.$model,
4896
5172
  onChange (input) {
@@ -4898,11 +5174,23 @@ const ARoleForm = vue.defineComponent({
4898
5174
  }
4899
5175
  })
4900
5176
  }));
5177
+ children.push(formControls.buildFormGroup({
5178
+ validationMessages: translationsValidation.display_name.value,
5179
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
5180
+ label: true,
5181
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
5182
+ content: formControls.buildFormInput({
5183
+ value: $v.value.display_name.$model,
5184
+ onChange (input) {
5185
+ $v.value.display_name.$model = input;
5186
+ }
5187
+ })
5188
+ }));
4901
5189
  children.push(formControls.buildFormGroup({
4902
5190
  validationMessages: translationsValidation.description.value,
4903
5191
  validationSeverity: getVuelidateSeverity($v.value.description),
4904
5192
  label: true,
4905
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DESCRIPTION].value,
5193
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
4906
5194
  content: formControls.buildFormTextarea({
4907
5195
  value: $v.value.description.$model,
4908
5196
  onChange (input) {
@@ -4944,12 +5232,12 @@ const ARoles = vue.defineComponent({
4944
5232
  setup: ctx
4945
5233
  });
4946
5234
  const translationName = useTranslation({
4947
- group: exports.TranslatorTranslationGroup.VUECS,
4948
- key: exports.TranslatorTranslationDefaultKey.ROLES
5235
+ group: TranslatorTranslationGroup.VUECS,
5236
+ key: TranslatorTranslationDefaultKey.ROLES
4949
5237
  });
4950
5238
  const translation = useTranslation({
4951
- group: exports.TranslatorTranslationGroup.VUECS,
4952
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
5239
+ group: TranslatorTranslationGroup.VUECS,
5240
+ key: TranslatorTranslationVuecsKey.NO_MORE,
4953
5241
  data: {
4954
5242
  name: translationName
4955
5243
  }
@@ -5021,6 +5309,38 @@ const APermission = vue.defineComponent({
5021
5309
  }
5022
5310
  });
5023
5311
 
5312
+ const APermissionCheck = vue.defineComponent({
5313
+ props: {
5314
+ name: {
5315
+ type: [
5316
+ String,
5317
+ Array
5318
+ ],
5319
+ required: true
5320
+ },
5321
+ data: {
5322
+ type: Object
5323
+ },
5324
+ options: {
5325
+ type: Object
5326
+ }
5327
+ },
5328
+ setup (props, { slots }) {
5329
+ const fn = createPermissionCheckerReactiveFn();
5330
+ const isPermitted = vue.computed(()=>fn({
5331
+ name: props.name,
5332
+ data: props.data,
5333
+ options: props.options
5334
+ }));
5335
+ return ()=>{
5336
+ if (isPermitted.value && hasNormalizedSlot(listControls.SlotName.DEFAULT, slots)) {
5337
+ return normalizeSlot(listControls.SlotName.DEFAULT, {}, slots);
5338
+ }
5339
+ return [];
5340
+ };
5341
+ }
5342
+ });
5343
+
5024
5344
  const APermissionForm = vue.defineComponent({
5025
5345
  props: {
5026
5346
  entity: {
@@ -5032,6 +5352,7 @@ const APermissionForm = vue.defineComponent({
5032
5352
  const busy = vue.ref(false);
5033
5353
  const form = vue.reactive({
5034
5354
  name: '',
5355
+ display_name: '',
5035
5356
  description: '',
5036
5357
  realm_id: ''
5037
5358
  });
@@ -5041,6 +5362,10 @@ const APermissionForm = vue.defineComponent({
5041
5362
  minLength: validators.minLength(3),
5042
5363
  maxLength: validators.maxLength(128)
5043
5364
  },
5365
+ display_name: {
5366
+ minLength: validators.minLength(3),
5367
+ maxLength: validators.maxLength(256)
5368
+ },
5044
5369
  description: {
5045
5370
  minLength: validators.minLength(5),
5046
5371
  maxLength: validators.maxLength(4096)
@@ -5080,12 +5405,15 @@ const APermissionForm = vue.defineComponent({
5080
5405
  };
5081
5406
  const translationsValidation = useTranslationsForNestedValidation($v.value);
5082
5407
  const translationsSubmit = createFormSubmitTranslations();
5083
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
5408
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
5409
+ {
5410
+ key: TranslatorTranslationDefaultKey.NAME
5411
+ },
5084
5412
  {
5085
- key: exports.TranslatorTranslationDefaultKey.NAME
5413
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
5086
5414
  },
5087
5415
  {
5088
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
5416
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
5089
5417
  }
5090
5418
  ]);
5091
5419
  const render = ()=>{
@@ -5094,7 +5422,7 @@ const APermissionForm = vue.defineComponent({
5094
5422
  validationMessages: translationsValidation.name.value,
5095
5423
  validationSeverity: getVuelidateSeverity($v.value.name),
5096
5424
  label: true,
5097
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
5425
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
5098
5426
  content: formControls.buildFormInput({
5099
5427
  value: $v.value.name.$model,
5100
5428
  onChange (input) {
@@ -5105,11 +5433,23 @@ const APermissionForm = vue.defineComponent({
5105
5433
  }
5106
5434
  })
5107
5435
  }));
5436
+ children.push(formControls.buildFormGroup({
5437
+ validationMessages: translationsValidation.display_name.value,
5438
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
5439
+ label: true,
5440
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
5441
+ content: formControls.buildFormInput({
5442
+ value: $v.value.display_name.$model,
5443
+ onChange (input) {
5444
+ $v.value.display_name.$model = input;
5445
+ }
5446
+ })
5447
+ }));
5108
5448
  children.push(formControls.buildFormGroup({
5109
5449
  validationMessages: translationsValidation.description.value,
5110
5450
  validationSeverity: getVuelidateSeverity($v.value.description),
5111
5451
  label: true,
5112
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DESCRIPTION].value,
5452
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
5113
5453
  content: formControls.buildFormTextarea({
5114
5454
  value: $v.value.description.$model,
5115
5455
  onChange (input) {
@@ -5151,12 +5491,12 @@ const APermissions = vue.defineComponent({
5151
5491
  setup
5152
5492
  });
5153
5493
  const translationName = useTranslation({
5154
- group: exports.TranslatorTranslationGroup.DEFAULT,
5155
- key: exports.TranslatorTranslationDefaultKey.PERMISSIONS
5494
+ group: TranslatorTranslationGroup.DEFAULT,
5495
+ key: TranslatorTranslationDefaultKey.PERMISSIONS
5156
5496
  });
5157
5497
  const translation = useTranslation({
5158
- group: exports.TranslatorTranslationGroup.VUECS,
5159
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
5498
+ group: TranslatorTranslationGroup.VUECS,
5499
+ key: TranslatorTranslationVuecsKey.NO_MORE,
5160
5500
  data: {
5161
5501
  name: translationName
5162
5502
  }
@@ -5244,15 +5584,20 @@ const ARobotForm = vue.defineComponent({
5244
5584
  const busy = vue.ref(false);
5245
5585
  const form = vue.reactive({
5246
5586
  name: '',
5587
+ display_name: '',
5247
5588
  realm_id: '',
5248
5589
  secret: ''
5249
5590
  });
5250
5591
  const $v = useVuelidate({
5251
5592
  name: {
5252
- [exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[exports.VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
5593
+ [VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[VuelidateCustomRuleKey.ALPHA_UPPER_NUM_HYPHEN_UNDERSCORE],
5253
5594
  minLength: validators.minLength(3),
5254
5595
  maxLength: validators.maxLength(128)
5255
5596
  },
5597
+ display_name: {
5598
+ minLength: validators.minLength(3),
5599
+ maxLength: validators.maxLength(256)
5600
+ },
5256
5601
  realm_id: {
5257
5602
  required: validators.required
5258
5603
  },
@@ -5272,7 +5617,7 @@ const ARobotForm = vue.defineComponent({
5272
5617
  const isRealmLocked = vue.computed(()=>!!props.realmId);
5273
5618
  const isSecretHashed = vue.computed(()=>manager.data.value && manager.data.value.secret === form.secret && form.secret.startsWith('$'));
5274
5619
  const generateSecret = ()=>{
5275
- form.secret = kit.createNanoID('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_!.', 64);
5620
+ form.secret = kit.createNanoID(64);
5276
5621
  };
5277
5622
  function initForm() {
5278
5623
  if (props.name) {
@@ -5304,21 +5649,24 @@ const ARobotForm = vue.defineComponent({
5304
5649
  };
5305
5650
  const translationsValidation = useTranslationsForNestedValidation($v.value);
5306
5651
  const translationsSubmit = createFormSubmitTranslations();
5307
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
5652
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
5653
+ {
5654
+ key: TranslatorTranslationDefaultKey.GENERATE
5655
+ },
5308
5656
  {
5309
- key: exports.TranslatorTranslationDefaultKey.GENERATE
5657
+ key: TranslatorTranslationDefaultKey.HASHED
5310
5658
  },
5311
5659
  {
5312
- key: exports.TranslatorTranslationDefaultKey.HASHED
5660
+ key: TranslatorTranslationDefaultKey.NAME
5313
5661
  },
5314
5662
  {
5315
- key: exports.TranslatorTranslationDefaultKey.NAME
5663
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
5316
5664
  },
5317
5665
  {
5318
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
5666
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
5319
5667
  },
5320
5668
  {
5321
- key: exports.TranslatorTranslationDefaultKey.SECRET
5669
+ key: TranslatorTranslationDefaultKey.SECRET
5322
5670
  }
5323
5671
  ]);
5324
5672
  const render = ()=>{
@@ -5326,7 +5674,7 @@ const ARobotForm = vue.defineComponent({
5326
5674
  validationMessages: translationsValidation.name.value,
5327
5675
  validationSeverity: getVuelidateSeverity($v.value.name),
5328
5676
  label: true,
5329
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
5677
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
5330
5678
  content: formControls.buildFormInput({
5331
5679
  value: $v.value.name.$model,
5332
5680
  onChange (input) {
@@ -5337,6 +5685,18 @@ const ARobotForm = vue.defineComponent({
5337
5685
  }
5338
5686
  })
5339
5687
  });
5688
+ const displayName = formControls.buildFormGroup({
5689
+ validationMessages: translationsValidation.display_name.value,
5690
+ validationSeverity: getVuelidateSeverity($v.value.display_name),
5691
+ label: true,
5692
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
5693
+ content: formControls.buildFormInput({
5694
+ value: $v.value.display_name.$model,
5695
+ onChange (input) {
5696
+ $v.value.display_name.$model = input;
5697
+ }
5698
+ })
5699
+ });
5340
5700
  let id = [];
5341
5701
  if (manager.data.value) {
5342
5702
  id = [
@@ -5357,11 +5717,11 @@ const ARobotForm = vue.defineComponent({
5357
5717
  validationSeverity: getVuelidateSeverity($v.value.secret),
5358
5718
  label: true,
5359
5719
  labelContent: [
5360
- translationsDefault[exports.TranslatorTranslationDefaultKey.SECRET].value,
5720
+ translationsDefault[TranslatorTranslationDefaultKey.SECRET].value,
5361
5721
  isSecretHashed.value ? vue.h('span', {
5362
5722
  class: 'text-danger font-weight-bold ps-1'
5363
5723
  }, [
5364
- translationsDefault[exports.TranslatorTranslationDefaultKey.HASHED].value,
5724
+ translationsDefault[TranslatorTranslationDefaultKey.HASHED].value,
5365
5725
  ' ',
5366
5726
  vue.h('i', {
5367
5727
  class: 'fa fa-exclamation-triangle ps-1'
@@ -5387,7 +5747,7 @@ const ARobotForm = vue.defineComponent({
5387
5747
  class: 'fa fa-wrench'
5388
5748
  }),
5389
5749
  ' ',
5390
- translationsDefault[exports.TranslatorTranslationDefaultKey.GENERATE].value
5750
+ translationsDefault[TranslatorTranslationDefaultKey.GENERATE].value
5391
5751
  ])
5392
5752
  ]);
5393
5753
  const submitForm = buildFormSubmitWithTranslations({
@@ -5401,6 +5761,7 @@ const ARobotForm = vue.defineComponent({
5401
5761
  }, [
5402
5762
  id,
5403
5763
  name,
5764
+ displayName,
5404
5765
  secret,
5405
5766
  secretInfo,
5406
5767
  vue.h('hr'),
@@ -5457,12 +5818,12 @@ const ARobots = vue.defineComponent({
5457
5818
  setup: ctx
5458
5819
  });
5459
5820
  const translationName = useTranslation({
5460
- group: exports.TranslatorTranslationGroup.VUECS,
5461
- key: exports.TranslatorTranslationDefaultKey.ROBOTS
5821
+ group: TranslatorTranslationGroup.VUECS,
5822
+ key: TranslatorTranslationDefaultKey.ROBOTS
5462
5823
  });
5463
5824
  const translation = useTranslation({
5464
- group: exports.TranslatorTranslationGroup.VUECS,
5465
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
5825
+ group: TranslatorTranslationGroup.VUECS,
5826
+ key: TranslatorTranslationVuecsKey.NO_MORE,
5466
5827
  data: {
5467
5828
  name: translationName
5468
5829
  }
@@ -5660,7 +6021,6 @@ const AUserForm = vue.defineComponent({
5660
6021
  emits: defineEntityManagerEvents(),
5661
6022
  async setup (props, ctx) {
5662
6023
  const busy = vue.ref(false);
5663
- const displayNameChanged = vue.ref(false);
5664
6024
  const form = vue.reactive({
5665
6025
  active: true,
5666
6026
  name: '',
@@ -5678,9 +6038,8 @@ const AUserForm = vue.defineComponent({
5678
6038
  },
5679
6039
  name_locked: {},
5680
6040
  display_name: {
5681
- required: validators.required,
5682
6041
  minLength: validators.minLength(3),
5683
- maxLength: validators.maxLength(128)
6042
+ maxLength: validators.maxLength(256)
5684
6043
  },
5685
6044
  email: {
5686
6045
  minLength: validators.minLength(5),
@@ -5721,40 +6080,32 @@ const AUserForm = vue.defineComponent({
5721
6080
  }
5722
6081
  await manager.createOrUpdate(form);
5723
6082
  };
5724
- const updateDisplayName = (value)=>{
5725
- if (!displayNameChanged.value) {
5726
- form.display_name = value;
5727
- }
5728
- };
5729
- const handleDisplayNameChanged = (value)=>{
5730
- displayNameChanged.value = value.length !== 0;
5731
- };
5732
6083
  const translationsValidation = useTranslationsForNestedValidation($v.value);
5733
6084
  const translationsSubmit = createFormSubmitTranslations();
5734
- const translationsDefault = useTranslationsForGroup(exports.TranslatorTranslationGroup.DEFAULT, [
6085
+ const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
5735
6086
  {
5736
- key: exports.TranslatorTranslationDefaultKey.ACTIVE
6087
+ key: TranslatorTranslationDefaultKey.ACTIVE
5737
6088
  },
5738
6089
  {
5739
- key: exports.TranslatorTranslationDefaultKey.INACTIVE
6090
+ key: TranslatorTranslationDefaultKey.INACTIVE
5740
6091
  },
5741
6092
  {
5742
- key: exports.TranslatorTranslationDefaultKey.DISPLAY_NAME
6093
+ key: TranslatorTranslationDefaultKey.DISPLAY_NAME
5743
6094
  },
5744
6095
  {
5745
- key: exports.TranslatorTranslationDefaultKey.EMAIL
6096
+ key: TranslatorTranslationDefaultKey.EMAIL
5746
6097
  },
5747
6098
  {
5748
- key: exports.TranslatorTranslationDefaultKey.LOCKED
6099
+ key: TranslatorTranslationDefaultKey.LOCKED
5749
6100
  },
5750
6101
  {
5751
- key: exports.TranslatorTranslationDefaultKey.NOT_LOCKED
6102
+ key: TranslatorTranslationDefaultKey.NOT_LOCKED
5752
6103
  },
5753
6104
  {
5754
- key: exports.TranslatorTranslationDefaultKey.NAME
6105
+ key: TranslatorTranslationDefaultKey.NAME
5755
6106
  },
5756
6107
  {
5757
- key: exports.TranslatorTranslationDefaultKey.DESCRIPTION
6108
+ key: TranslatorTranslationDefaultKey.DESCRIPTION
5758
6109
  }
5759
6110
  ]);
5760
6111
  const render = ()=>{
@@ -5762,12 +6113,11 @@ const AUserForm = vue.defineComponent({
5762
6113
  validationMessages: translationsValidation.name.value,
5763
6114
  validationSeverity: getVuelidateSeverity($v.value.name),
5764
6115
  label: true,
5765
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.NAME].value,
6116
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
5766
6117
  content: formControls.buildFormInput({
5767
6118
  value: $v.value.name.$model,
5768
6119
  onChange (input) {
5769
6120
  $v.value.name.$model = input;
5770
- updateDisplayName.call(null, input);
5771
6121
  },
5772
6122
  props: {
5773
6123
  disabled: form.name_locked
@@ -5778,12 +6128,11 @@ const AUserForm = vue.defineComponent({
5778
6128
  validationMessages: translationsValidation.display_name.value,
5779
6129
  validationSeverity: getVuelidateSeverity($v.value.display_name),
5780
6130
  label: true,
5781
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
6131
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
5782
6132
  content: formControls.buildFormInput({
5783
6133
  value: $v.value.display_name.$model,
5784
6134
  onChange (input) {
5785
6135
  $v.value.display_name.$model = input;
5786
- handleDisplayNameChanged.call(null, input);
5787
6136
  }
5788
6137
  })
5789
6138
  });
@@ -5791,7 +6140,7 @@ const AUserForm = vue.defineComponent({
5791
6140
  validationMessages: translationsValidation.email.value,
5792
6141
  validationSeverity: getVuelidateSeverity($v.value.email),
5793
6142
  label: true,
5794
- labelContent: translationsDefault[exports.TranslatorTranslationDefaultKey.EMAIL].value,
6143
+ labelContent: translationsDefault[TranslatorTranslationDefaultKey.EMAIL].value,
5795
6144
  content: formControls.buildFormInput({
5796
6145
  value: $v.value.email.$model,
5797
6146
  props: {
@@ -5816,7 +6165,7 @@ const AUserForm = vue.defineComponent({
5816
6165
  'text-success': form.name_locked
5817
6166
  }
5818
6167
  }, [
5819
- form.name_locked ? translationsDefault[exports.TranslatorTranslationDefaultKey.LOCKED].value : translationsDefault[exports.TranslatorTranslationDefaultKey.NOT_LOCKED].value
6168
+ form.name_locked ? translationsDefault[TranslatorTranslationDefaultKey.LOCKED].value : translationsDefault[TranslatorTranslationDefaultKey.NOT_LOCKED].value
5820
6169
  ]),
5821
6170
  value: form.name_locked,
5822
6171
  onChange (input) {
@@ -5840,7 +6189,7 @@ const AUserForm = vue.defineComponent({
5840
6189
  'text-success': form.active
5841
6190
  }
5842
6191
  }, [
5843
- form.active ? translationsDefault[exports.TranslatorTranslationDefaultKey.ACTIVE].value : translationsDefault[exports.TranslatorTranslationDefaultKey.INACTIVE].value
6192
+ form.active ? translationsDefault[TranslatorTranslationDefaultKey.ACTIVE].value : translationsDefault[TranslatorTranslationDefaultKey.INACTIVE].value
5844
6193
  ]),
5845
6194
  value: form.active,
5846
6195
  onChange (input) {
@@ -5923,12 +6272,12 @@ const AUsers = vue.defineComponent({
5923
6272
  setup: ctx
5924
6273
  });
5925
6274
  const translationName = useTranslation({
5926
- group: exports.TranslatorTranslationGroup.DEFAULT,
5927
- key: exports.TranslatorTranslationDefaultKey.USERS
6275
+ group: TranslatorTranslationGroup.DEFAULT,
6276
+ key: TranslatorTranslationDefaultKey.USERS
5928
6277
  });
5929
6278
  const translation = useTranslation({
5930
- group: exports.TranslatorTranslationGroup.VUECS,
5931
- key: exports.TranslatorTranslationVuecsKey.NO_MORE,
6279
+ group: TranslatorTranslationGroup.VUECS,
6280
+ key: TranslatorTranslationVuecsKey.NO_MORE,
5932
6281
  data: {
5933
6282
  name: translationName
5934
6283
  }
@@ -6294,11 +6643,11 @@ const APagination = vue.defineComponent({
6294
6643
  * Author Peter Placzek (tada5hi)
6295
6644
  * For the full copyright and license information,
6296
6645
  * view the LICENSE file that was distributed with this source code.
6297
- */ var TitleSlotName;
6298
- (function(TitleSlotName) {
6646
+ */ var TitleSlotName = /*#__PURE__*/ function(TitleSlotName) {
6299
6647
  TitleSlotName["DEFAULT"] = "default";
6300
6648
  TitleSlotName["ICON"] = "icon";
6301
- })(TitleSlotName || (TitleSlotName = {}));
6649
+ return TitleSlotName;
6650
+ }({});
6302
6651
 
6303
6652
  function buildTitle(ctx) {
6304
6653
  ctx.tag = ctx.tag || 'h6';
@@ -6367,8 +6716,8 @@ const ATitle = vue.defineComponent({
6367
6716
  slots: Object,
6368
6717
  setup (props, { slots }) {
6369
6718
  const translation = useTranslation({
6370
- group: exports.TranslatorTranslationGroup.DEFAULT,
6371
- key: exports.TranslatorTranslationDefaultKey.OVERVIEW
6719
+ group: TranslatorTranslationGroup.DEFAULT,
6720
+ key: TranslatorTranslationDefaultKey.OVERVIEW
6372
6721
  });
6373
6722
  return ()=>buildTitle({
6374
6723
  slots,
@@ -6384,11 +6733,11 @@ const ATitle = vue.defineComponent({
6384
6733
  * Author Peter Placzek (tada5hi)
6385
6734
  * For the full copyright and license information,
6386
6735
  * view the LICENSE file that was distributed with this source code.
6387
- */ var ListSearchSlotName;
6388
- (function(ListSearchSlotName) {
6736
+ */ var ListSearchSlotName = /*#__PURE__*/ function(ListSearchSlotName) {
6389
6737
  ListSearchSlotName["DEFAULT"] = "default";
6390
6738
  ListSearchSlotName["ICON"] = "icon";
6391
- })(ListSearchSlotName || (ListSearchSlotName = {}));
6739
+ return ListSearchSlotName;
6740
+ }({});
6392
6741
 
6393
6742
  function debounce(func, timeout = 200) {
6394
6743
  let timer;
@@ -6558,12 +6907,6 @@ const LanguageSwitcherDropdown = vue.defineComponent({
6558
6907
  }
6559
6908
  });
6560
6909
 
6561
- var ElementType;
6562
- (function(ElementType) {
6563
- ElementType["BUTTON"] = "button";
6564
- ElementType["LINK"] = "link";
6565
- ElementType["DROP_DOWN_ITEM"] = "dropDownItem";
6566
- })(ElementType || (ElementType = {}));
6567
6910
  const AEntityDelete = vue.defineComponent({
6568
6911
  props: {
6569
6912
  elementIcon: {
@@ -6616,8 +6959,8 @@ const AEntityDelete = vue.defineComponent({
6616
6959
  }
6617
6960
  });
6618
6961
  const translation = useTranslation({
6619
- group: exports.TranslatorTranslationGroup.DEFAULT,
6620
- key: exports.TranslatorTranslationDefaultKey.DELETE
6962
+ group: TranslatorTranslationGroup.DEFAULT,
6963
+ key: TranslatorTranslationDefaultKey.DELETE
6621
6964
  });
6622
6965
  const render = ()=>{
6623
6966
  let tag = 'button';
@@ -6690,6 +7033,7 @@ var components = /*#__PURE__*/Object.freeze({
6690
7033
  AIdentityProviders: AIdentityProviders,
6691
7034
  APagination: APagination,
6692
7035
  APermission: APermission,
7036
+ APermissionCheck: APermissionCheck,
6693
7037
  APermissionForm: APermissionForm,
6694
7038
  APermissionRobotAssignments: APermissionRobotAssignments,
6695
7039
  APermissionRoleAssignments: APermissionRoleAssignments,
@@ -6761,7 +7105,8 @@ function install(app1, options) {
6761
7105
  });
6762
7106
  installHTTPClient(app1, {
6763
7107
  pinia: options.pinia,
6764
- baseURL: options.baseURL
7108
+ baseURL: options.baseURL,
7109
+ isServer: options.isServer
6765
7110
  });
6766
7111
  installTranslator(app1, {
6767
7112
  locale: options.translatorLocale
@@ -6795,6 +7140,7 @@ exports.AIdentityProviderRoleAssignments = AIdentityProviderRoleAssignments;
6795
7140
  exports.AIdentityProviders = AIdentityProviders;
6796
7141
  exports.APagination = APagination;
6797
7142
  exports.APermission = APermission;
7143
+ exports.APermissionCheck = APermissionCheck;
6798
7144
  exports.APermissionForm = APermissionForm;
6799
7145
  exports.APermissionRobotAssignments = APermissionRobotAssignments;
6800
7146
  exports.APermissionRoleAssignments = APermissionRoleAssignments;
@@ -6837,7 +7183,12 @@ exports.LanguageSwitcherDropdown = LanguageSwitcherDropdown;
6837
7183
  exports.STORE_ID = STORE_ID;
6838
7184
  exports.SocketClientSymbol = SocketClientSymbol;
6839
7185
  exports.StoreSymbol = StoreSymbol;
7186
+ exports.TranslatorTranslationClientKey = TranslatorTranslationClientKey;
7187
+ exports.TranslatorTranslationDefaultKey = TranslatorTranslationDefaultKey;
7188
+ exports.TranslatorTranslationGroup = TranslatorTranslationGroup;
7189
+ exports.TranslatorTranslationVuecsKey = TranslatorTranslationVuecsKey;
6840
7190
  exports.VuelidateCustomRule = VuelidateCustomRule;
7191
+ exports.VuelidateCustomRuleKey = VuelidateCustomRuleKey;
6841
7192
  exports.buildEntityManagerSlotProps = buildEntityManagerSlotProps;
6842
7193
  exports.buildFormSubmitWithTranslations = buildFormSubmitWithTranslations;
6843
7194
  exports.buildListCreatedHandler = buildListCreatedHandler;
@@ -6846,6 +7197,7 @@ exports.buildListUpdatedHandler = buildListUpdatedHandler;
6846
7197
  exports.createEntityManager = createEntityManager;
6847
7198
  exports.createFormSubmitTranslations = createFormSubmitTranslations;
6848
7199
  exports.createList = createList;
7200
+ exports.createPermissionCheckerReactiveFn = createPermissionCheckerReactiveFn;
6849
7201
  exports.createStore = createStore;
6850
7202
  exports.default = index;
6851
7203
  exports.defineEntityManagerEvents = defineEntityManagerEvents;
@@ -6857,12 +7209,12 @@ exports.extractVuelidateResultsFromChild = extractVuelidateResultsFromChild;
6857
7209
  exports.getVuelidateSeverity = getVuelidateSeverity;
6858
7210
  exports.hasHTTPClient = hasHTTPClient;
6859
7211
  exports.hasNormalizedSlot = hasNormalizedSlot;
6860
- exports.hasStore = hasStore;
7212
+ exports.hasStoreFactory = hasStoreFactory;
6861
7213
  exports.initFormAttributesFromSource = initFormAttributesFromSource;
6862
7214
  exports.inject = inject$1;
6863
7215
  exports.injectHTTPClient = injectHTTPClient;
6864
7216
  exports.injectSocketManager = injectSocketManager;
6865
- exports.injectStore = injectStore;
7217
+ exports.injectStoreFactory = injectStoreFactory;
6866
7218
  exports.injectTranslatorLocale = injectTranslatorLocale;
6867
7219
  exports.install = install;
6868
7220
  exports.installHTTPClient = installHTTPClient;
@@ -6877,11 +7229,11 @@ exports.onChange = onChange;
6877
7229
  exports.provide = provide;
6878
7230
  exports.provideHTTPClient = provideHTTPClient;
6879
7231
  exports.provideSocketManager = provideSocketManager;
6880
- exports.provideStore = provideStore;
7232
+ exports.provideStoreFactory = provideStoreFactory;
6881
7233
  exports.renderEntityAssignAction = renderEntityAssignAction;
6882
7234
  exports.storeToRefs = storeToRefs;
6883
- exports.useAbilityCheck = useAbilityCheck;
6884
7235
  exports.useIsEditing = useIsEditing;
7236
+ exports.usePermissionCheck = usePermissionCheck;
6885
7237
  exports.useRealmResourceWritableCheck = useRealmResourceWritableCheck;
6886
7238
  exports.useStore = useStore;
6887
7239
  exports.useTranslation = useTranslation;