@authup/client-web-kit 1.0.0-beta.19 → 1.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AEntityDelete.d.ts +6 -6
- package/dist/components/AEntityDelete.d.ts.map +1 -1
- package/dist/components/client/AClient.d.ts +4 -4
- package/dist/components/client/AClient.d.ts.map +1 -1
- package/dist/components/client/AClientForm.d.ts +7 -7
- package/dist/components/client/AClientForm.d.ts.map +1 -1
- package/dist/components/client/AClientRedirectUris.d.ts +6 -6
- package/dist/components/client/AClientRedirectUris.d.ts.map +1 -1
- package/dist/components/client/AClientRedirectUrisItem.d.ts +6 -6
- package/dist/components/client/AClientRedirectUrisItem.d.ts.map +1 -1
- package/dist/components/client/AClients.d.ts +6 -6
- package/dist/components/client/AClients.d.ts.map +1 -1
- package/dist/components/client-scope/AClientScope.d.ts +4 -4
- package/dist/components/client-scope/AClientScope.d.ts.map +1 -1
- package/dist/components/client-scope/AClientScopeAssignment.d.ts +5 -5
- package/dist/components/client-scope/AClientScopeAssignment.d.ts.map +1 -1
- package/dist/components/client-scope/AClientScopeAssignments.d.ts +4 -4
- package/dist/components/client-scope/AClientScopeAssignments.d.ts.map +1 -1
- package/dist/components/client-scope/AClientScopes.d.ts +6 -6
- package/dist/components/client-scope/AClientScopes.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProvider.d.ts +4 -4
- package/dist/components/identity-provider/AIdentityProvider.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderBasicFields.d.ts +5 -5
- package/dist/components/identity-provider/AIdentityProviderBasicFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderForm.d.ts +5 -5
- package/dist/components/identity-provider/AIdentityProviderForm.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderIcon.d.ts +4 -4
- package/dist/components/identity-provider/AIdentityProviderIcon.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderLdapConnectionFields.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviderLdapConnectionFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderLdapCredentialsFields.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviderLdapCredentialsFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderLdapForm.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviderLdapForm.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderLdapGroupFields.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviderLdapGroupFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderLdapUserFields.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviderLdapUserFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderOAuth2ClientFields.d.ts +5 -5
- package/dist/components/identity-provider/AIdentityProviderOAuth2ClientFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderOAuth2Discovery.d.ts +2 -2
- package/dist/components/identity-provider/AIdentityProviderOAuth2Discovery.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderOAuth2EndpointFields.d.ts +5 -5
- package/dist/components/identity-provider/AIdentityProviderOAuth2EndpointFields.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderOAuth2Form.d.ts +35 -8
- package/dist/components/identity-provider/AIdentityProviderOAuth2Form.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderPicker.d.ts +4 -4
- package/dist/components/identity-provider/AIdentityProviderPicker.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderPreset.d.ts +4 -4
- package/dist/components/identity-provider/AIdentityProviderPreset.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviderProtocol.d.ts +4 -4
- package/dist/components/identity-provider/AIdentityProviderProtocol.d.ts.map +1 -1
- package/dist/components/identity-provider/AIdentityProviders.d.ts +6 -6
- package/dist/components/identity-provider/AIdentityProviders.d.ts.map +1 -1
- package/dist/components/identity-provider-role/AIdentityProviderRoleAssignment.d.ts +5 -5
- package/dist/components/identity-provider-role/AIdentityProviderRoleAssignment.d.ts.map +1 -1
- package/dist/components/identity-provider-role/AIdentityProviderRoleAssignments.d.ts +4 -4
- package/dist/components/identity-provider-role/AIdentityProviderRoleAssignments.d.ts.map +1 -1
- package/dist/components/permission/APermission.d.ts +4 -4
- package/dist/components/permission/APermission.d.ts.map +1 -1
- package/dist/components/permission/APermissionForm.d.ts +5 -5
- package/dist/components/permission/APermissionForm.d.ts.map +1 -1
- package/dist/components/permission/APermissions.d.ts +6 -6
- package/dist/components/permission/APermissions.d.ts.map +1 -1
- package/dist/components/permission-robot/APermissionRobotAssignments.d.ts +4 -4
- package/dist/components/permission-robot/APermissionRobotAssignments.d.ts.map +1 -1
- package/dist/components/permission-role/APermissionRoleAssignments.d.ts +4 -4
- package/dist/components/permission-role/APermissionRoleAssignments.d.ts.map +1 -1
- package/dist/components/permission-user/APermissionUserAssignments.d.ts +4 -4
- package/dist/components/permission-user/APermissionUserAssignments.d.ts.map +1 -1
- package/dist/components/realm/ARealm.d.ts +4 -4
- package/dist/components/realm/ARealm.d.ts.map +1 -1
- package/dist/components/realm/ARealmForm.d.ts +6 -6
- package/dist/components/realm/ARealmForm.d.ts.map +1 -1
- package/dist/components/realm/ARealms.d.ts +6 -6
- package/dist/components/realm/ARealms.d.ts.map +1 -1
- package/dist/components/robot/ARobot.d.ts +4 -4
- package/dist/components/robot/ARobot.d.ts.map +1 -1
- package/dist/components/robot/ARobotForm.d.ts +7 -7
- package/dist/components/robot/ARobotForm.d.ts.map +1 -1
- package/dist/components/robot/ARobots.d.ts +6 -6
- package/dist/components/robot/ARobots.d.ts.map +1 -1
- package/dist/components/robot-permission/ARobotPermissionAssignment.d.ts +5 -5
- package/dist/components/robot-permission/ARobotPermissionAssignment.d.ts.map +1 -1
- package/dist/components/robot-permission/ARobotPermissionAssignments.d.ts +4 -4
- package/dist/components/robot-permission/ARobotPermissionAssignments.d.ts.map +1 -1
- package/dist/components/robot-role/ARobotRoleAssignment.d.ts +5 -5
- package/dist/components/robot-role/ARobotRoleAssignment.d.ts.map +1 -1
- package/dist/components/robot-role/ARobotRoleAssignments.d.ts +4 -4
- package/dist/components/robot-role/ARobotRoleAssignments.d.ts.map +1 -1
- package/dist/components/role/ARole.d.ts +4 -4
- package/dist/components/role/ARole.d.ts.map +1 -1
- package/dist/components/role/ARoleForm.d.ts +6 -6
- package/dist/components/role/ARoleForm.d.ts.map +1 -1
- package/dist/components/role/ARoles.d.ts +6 -6
- package/dist/components/role/ARoles.d.ts.map +1 -1
- package/dist/components/role-permission/ARolePermissionAssignment.d.ts +5 -5
- package/dist/components/role-permission/ARolePermissionAssignment.d.ts.map +1 -1
- package/dist/components/role-permission/ARolePermissionAssignments.d.ts +4 -4
- package/dist/components/role-permission/ARolePermissionAssignments.d.ts.map +1 -1
- package/dist/components/role-robot/ARoleRobotAssignments.d.ts +4 -4
- package/dist/components/role-robot/ARoleRobotAssignments.d.ts.map +1 -1
- package/dist/components/role-user/ARoleUserAssignments.d.ts +4 -4
- package/dist/components/role-user/ARoleUserAssignments.d.ts.map +1 -1
- package/dist/components/scope/AScope.d.ts +4 -4
- package/dist/components/scope/AScope.d.ts.map +1 -1
- package/dist/components/scope/AScopeForm.d.ts +6 -6
- package/dist/components/scope/AScopeForm.d.ts.map +1 -1
- package/dist/components/scope/AScopes.d.ts +6 -6
- package/dist/components/scope/AScopes.d.ts.map +1 -1
- package/dist/components/scope-client/AScopeClientAssignments.d.ts +4 -4
- package/dist/components/scope-client/AScopeClientAssignments.d.ts.map +1 -1
- package/dist/components/user/AUser.d.ts +4 -4
- package/dist/components/user/AUser.d.ts.map +1 -1
- package/dist/components/user/AUserForm.d.ts +6 -6
- package/dist/components/user/AUserForm.d.ts.map +1 -1
- package/dist/components/user/AUserPasswordForm.d.ts +5 -5
- package/dist/components/user/AUserPasswordForm.d.ts.map +1 -1
- package/dist/components/user/AUsers.d.ts +6 -6
- package/dist/components/user/AUsers.d.ts.map +1 -1
- package/dist/components/user-permission/AUserPermissionAssignment.d.ts +5 -5
- package/dist/components/user-permission/AUserPermissionAssignment.d.ts.map +1 -1
- package/dist/components/user-permission/AUserPermissionAssignments.d.ts +4 -4
- package/dist/components/user-permission/AUserPermissionAssignments.d.ts.map +1 -1
- package/dist/components/user-role/AUserRoleAssignment.d.ts +5 -5
- package/dist/components/user-role/AUserRoleAssignment.d.ts.map +1 -1
- package/dist/components/user-role/AUserRoleAssignments.d.ts +4 -4
- package/dist/components/user-role/AUserRoleAssignments.d.ts.map +1 -1
- package/dist/components/utility/LanguageSwitcherDropdown.d.ts +5 -5
- package/dist/components/utility/LanguageSwitcherDropdown.d.ts.map +1 -1
- package/dist/components/utility/pagination/APagination.d.ts +4 -4
- package/dist/components/utility/pagination/APagination.d.ts.map +1 -1
- package/dist/components/utility/search/ASearch.d.ts +5 -5
- package/dist/components/utility/search/ASearch.d.ts.map +1 -1
- package/dist/components/utility/title/ATitle.d.ts +5 -5
- package/dist/components/utility/title/ATitle.d.ts.map +1 -1
- package/dist/composables/use-ability-check.d.ts.map +1 -1
- package/dist/core/store/create.d.ts +105 -9
- package/dist/core/store/create.d.ts.map +1 -1
- package/dist/index.cjs +378 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +388 -108
- package/dist/index.mjs.map +1 -1
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/policy/index.d.ts +3 -0
- package/dist/security/policy/index.d.ts.map +1 -0
- package/dist/security/policy/module.d.ts +5 -0
- package/dist/security/policy/module.d.ts.map +1 -0
- package/dist/security/policy/variants/evaluator.d.ts +11 -0
- package/dist/security/policy/variants/evaluator.d.ts.map +1 -0
- package/dist/security/policy/variants/index.d.ts +2 -0
- package/dist/security/policy/variants/index.d.ts.map +1 -0
- package/package.json +21 -20
package/dist/index.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { REALM_MASTER_NAME, DomainEventName, buildDomainChannelName, DomainType,
|
|
|
2
2
|
import { hasInjectionContext, inject as inject$2, provide as provide$1, ref, computed, getCurrentScope, onScopeDispose, toRaw, isRef, isReactive, toRef, unref, h, onMounted, onUnmounted, watch, shallowRef, watchEffect, defineComponent, reactive, nextTick, getCurrentInstance, resolveDynamicComponent, mergeProps } from 'vue';
|
|
3
3
|
import { Client, isClientTokenExpiredError, CookieName, ClientResponseErrorTokenHook } from '@authup/core-http-kit';
|
|
4
4
|
import { defineStore, storeToRefs as storeToRefs$1 } from 'pinia';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { BuiltInPolicyType, PolicyError, maybeInvertPolicyOutcome, PermissionBindingPolicyValidator, PolicyEngine as PolicyEngine$1, PermissionMemoryProvider, PermissionChecker, buildEventFullName, EventNameSuffix, hasOwnProperty, createNanoID, isOAuth2OpenIDProviderMetadata, isObject as isObject$2 } from '@authup/kit';
|
|
6
|
+
import { isObject as isObject$1, merge, createMerger } from 'smob';
|
|
7
7
|
import { buildList, SlotName } from '@vuecs/list-controls';
|
|
8
8
|
import { ClientManager } from '@authup/core-realtime-kit';
|
|
9
9
|
import { SortDirection } from 'rapiq';
|
|
@@ -61,6 +61,35 @@ function injectHTTPClient(app) {
|
|
|
61
61
|
* view the LICENSE file that was distributed with this source code.
|
|
62
62
|
*/ const STORE_ID = 'authup';
|
|
63
63
|
|
|
64
|
+
class PermissionBindingPolicyEvaluator {
|
|
65
|
+
async can(ctx) {
|
|
66
|
+
return ctx.spec.type === BuiltInPolicyType.PERMISSION_BINDING;
|
|
67
|
+
}
|
|
68
|
+
async validateSpecification(ctx) {
|
|
69
|
+
return this.validator.run(ctx.spec);
|
|
70
|
+
}
|
|
71
|
+
async validateData(ctx) {
|
|
72
|
+
if (!isObject$1(ctx.data.identity) && !isObject$1(ctx.data.permission)) {
|
|
73
|
+
throw PolicyError.evaluatorContextInvalid();
|
|
74
|
+
}
|
|
75
|
+
return ctx.data;
|
|
76
|
+
}
|
|
77
|
+
async evaluate(ctx) {
|
|
78
|
+
// todo: this must be changed when the permission-checker not only checks owned permissions.
|
|
79
|
+
return maybeInvertPolicyOutcome(true, ctx.spec.invert);
|
|
80
|
+
}
|
|
81
|
+
constructor(){
|
|
82
|
+
this.validator = new PermissionBindingPolicyValidator();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
class PolicyEngine extends PolicyEngine$1 {
|
|
87
|
+
constructor(){
|
|
88
|
+
super();
|
|
89
|
+
this.registerEvaluator(BuiltInPolicyType.PERMISSION_BINDING, new PermissionBindingPolicyEvaluator());
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
64
93
|
function createStore(context = {}) {
|
|
65
94
|
const client = new Client({
|
|
66
95
|
baseURL: context.baseURL
|
|
@@ -141,7 +170,11 @@ function createStore(context = {}) {
|
|
|
141
170
|
const setRealmManagement = (entity)=>{
|
|
142
171
|
realmManagement.value = entity;
|
|
143
172
|
};
|
|
144
|
-
const
|
|
173
|
+
const permissionRepository = new PermissionMemoryProvider();
|
|
174
|
+
const permissionChecker = new PermissionChecker({
|
|
175
|
+
provider: permissionRepository,
|
|
176
|
+
policyEngine: new PolicyEngine()
|
|
177
|
+
});
|
|
145
178
|
const tokenInfo = ref(undefined);
|
|
146
179
|
const tokenResolved = ref(false);
|
|
147
180
|
const setTokenInfo = (entity)=>{
|
|
@@ -150,7 +183,7 @@ function createStore(context = {}) {
|
|
|
150
183
|
if (!entity) {
|
|
151
184
|
setRealm(undefined);
|
|
152
185
|
setRealmManagement(undefined);
|
|
153
|
-
|
|
186
|
+
permissionRepository.setMany([]);
|
|
154
187
|
return;
|
|
155
188
|
}
|
|
156
189
|
if (entity.exp) {
|
|
@@ -167,7 +200,7 @@ function createStore(context = {}) {
|
|
|
167
200
|
}
|
|
168
201
|
}
|
|
169
202
|
if (entity.permissions) {
|
|
170
|
-
|
|
203
|
+
permissionRepository.setMany(entity.permissions);
|
|
171
204
|
}
|
|
172
205
|
};
|
|
173
206
|
// --------------------------------------------------------------------
|
|
@@ -230,7 +263,7 @@ function createStore(context = {}) {
|
|
|
230
263
|
return {
|
|
231
264
|
initialized,
|
|
232
265
|
setInitialized,
|
|
233
|
-
|
|
266
|
+
permissionChecker,
|
|
234
267
|
login,
|
|
235
268
|
logout,
|
|
236
269
|
loggedIn,
|
|
@@ -662,7 +695,7 @@ function buildListCreatedHandler(items, cb) {
|
|
|
662
695
|
return (item, options)=>{
|
|
663
696
|
options = options || {};
|
|
664
697
|
let index;
|
|
665
|
-
if (isObject(item)) {
|
|
698
|
+
if (isObject$1(item)) {
|
|
666
699
|
index = items.value.findIndex((el)=>el.id === item.id);
|
|
667
700
|
} else {
|
|
668
701
|
index = -1;
|
|
@@ -681,7 +714,7 @@ function buildListCreatedHandler(items, cb) {
|
|
|
681
714
|
}
|
|
682
715
|
function buildListUpdatedHandler(items, cb) {
|
|
683
716
|
return (item)=>{
|
|
684
|
-
if (!isObject(item)) {
|
|
717
|
+
if (!isObject$1(item)) {
|
|
685
718
|
return;
|
|
686
719
|
}
|
|
687
720
|
const index = items.value.findIndex((el)=>el.id === item.id);
|
|
@@ -698,7 +731,7 @@ function buildListUpdatedHandler(items, cb) {
|
|
|
698
731
|
}
|
|
699
732
|
function buildListDeletedHandler(items, cb) {
|
|
700
733
|
return (item)=>{
|
|
701
|
-
if (!isObject(item)) {
|
|
734
|
+
if (!isObject$1(item)) {
|
|
702
735
|
return undefined;
|
|
703
736
|
}
|
|
704
737
|
const index = items.value.findIndex((el)=>el.id === item.id);
|
|
@@ -883,7 +916,7 @@ function isQuerySortedDescByDate(input) {
|
|
|
883
916
|
if (Array.isArray(input)) {
|
|
884
917
|
return input.some((el)=>isQuerySortedDescByDate(el));
|
|
885
918
|
}
|
|
886
|
-
if (isObject(input)) {
|
|
919
|
+
if (isObject$1(input)) {
|
|
887
920
|
return input.created_at === SortDirection.DESC || input.updated_at === SortDirection.DESC;
|
|
888
921
|
}
|
|
889
922
|
return typeof input === 'string' && (input === '-created_at' || input === '-updated_at');
|
|
@@ -1053,7 +1086,7 @@ function createList(context) {
|
|
|
1053
1086
|
if (typeof context.socket !== 'boolean' || typeof context.socket === 'undefined' || context.socket) {
|
|
1054
1087
|
const socketContext = {
|
|
1055
1088
|
type: context.type,
|
|
1056
|
-
...isObject(context.socket) ? context.socket : {}
|
|
1089
|
+
...isObject$1(context.socket) ? context.socket : {}
|
|
1057
1090
|
};
|
|
1058
1091
|
socketContext.onCreated = (entity)=>{
|
|
1059
1092
|
const isSorted = query && query.sort && isQuerySortedDescByDate(query.sort) && meta.value?.pagination?.offset === 0;
|
|
@@ -1318,7 +1351,7 @@ function createEntityManager(ctx) {
|
|
|
1318
1351
|
let socketContext = {
|
|
1319
1352
|
type: ctx.type
|
|
1320
1353
|
};
|
|
1321
|
-
if (isObject(ctx.socket)) {
|
|
1354
|
+
if (isObject$1(ctx.socket)) {
|
|
1322
1355
|
socketContext = {
|
|
1323
1356
|
...socketContext,
|
|
1324
1357
|
...ctx.socket
|
|
@@ -1476,7 +1509,7 @@ function createEntityManager(ctx) {
|
|
|
1476
1509
|
if (!ctx.setup || !ctx.setup.slots) {
|
|
1477
1510
|
return undefined;
|
|
1478
1511
|
}
|
|
1479
|
-
if (isObject(error) && hasNormalizedSlot('error', ctx.setup.slots)) {
|
|
1512
|
+
if (isObject$1(error) && hasNormalizedSlot('error', ctx.setup.slots)) {
|
|
1480
1513
|
return normalizeSlot('error', error, ctx.setup.slots);
|
|
1481
1514
|
}
|
|
1482
1515
|
return undefined;
|
|
@@ -1558,38 +1591,115 @@ var TranslatorTranslationDefaultKey;
|
|
|
1558
1591
|
TranslatorTranslationDefaultKey["USERS"] = "users";
|
|
1559
1592
|
})(TranslatorTranslationDefaultKey || (TranslatorTranslationDefaultKey = {}));
|
|
1560
1593
|
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1594
|
+
/*
|
|
1595
|
+
* Copyright (c) 2024-2024.
|
|
1596
|
+
* Author Peter Placzek (tada5hi)
|
|
1597
|
+
* For the full copyright and license information,
|
|
1598
|
+
* view the LICENSE file that was distributed with this source code.
|
|
1599
|
+
*/ const BRACKET_NUMBER_REGEX = RegExp("(?<!\\\\)\\[(\\d+)]$");
|
|
1600
|
+
/**
|
|
1601
|
+
* Convert string to property path array.
|
|
1602
|
+
*
|
|
1603
|
+
* @see https://github.com/lodash/lodash/blob/main/src/.internal/stringToPath.ts
|
|
1604
|
+
* @see https://github.com/chaijs/pathval
|
|
1605
|
+
*
|
|
1606
|
+
* @param segment
|
|
1607
|
+
*/ function pathToArray(segment) {
|
|
1608
|
+
const str = segment.replace(/([^\\])\[/g, '$1.[');
|
|
1609
|
+
const parts = str.match(/(\\\.|[^.]+?)+/g);
|
|
1610
|
+
if (!parts) {
|
|
1611
|
+
return [];
|
|
1612
|
+
}
|
|
1613
|
+
const result = [];
|
|
1614
|
+
for(let i = 0; i < parts.length; i++){
|
|
1615
|
+
if (parts[i] === 'constructor' || parts[i] === '__proto__' || parts[i] === 'prototype') {
|
|
1616
|
+
continue;
|
|
1617
|
+
}
|
|
1618
|
+
const regex = BRACKET_NUMBER_REGEX.exec(parts[i]);
|
|
1619
|
+
if (regex) {
|
|
1620
|
+
result.push(regex[1]);
|
|
1621
|
+
} else {
|
|
1622
|
+
result.push(parts[i].replace(/\\([.[\]])/g, '$1'));
|
|
1571
1623
|
}
|
|
1572
|
-
setObjectPathProperty(record[prefix], parts.join('.'), value);
|
|
1573
1624
|
}
|
|
1625
|
+
return result;
|
|
1574
1626
|
}
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1627
|
+
/*
|
|
1628
|
+
* Copyright (c) 2024.
|
|
1629
|
+
* Author Peter Placzek (tada5hi)
|
|
1630
|
+
* For the full copyright and license information,
|
|
1631
|
+
* view the LICENSE file that was distributed with this source code.
|
|
1632
|
+
*/ var Character;
|
|
1633
|
+
(function(Character) {
|
|
1634
|
+
Character["WILDCARD"] = "*";
|
|
1635
|
+
Character["GLOBSTAR"] = "**";
|
|
1636
|
+
})(Character || (Character = {}));
|
|
1637
|
+
/*
|
|
1638
|
+
* Copyright (c) 2024.
|
|
1639
|
+
* Author Peter Placzek (tada5hi)
|
|
1640
|
+
* For the full copyright and license information,
|
|
1641
|
+
* view the LICENSE file that was distributed with this source code.
|
|
1642
|
+
*/ function isObject(input) {
|
|
1643
|
+
return !!input && typeof input === 'object' && !Array.isArray(input);
|
|
1644
|
+
}
|
|
1645
|
+
function getPathValue(data, path) {
|
|
1646
|
+
const parts = Array.isArray(path) ? path : pathToArray(path);
|
|
1647
|
+
let res;
|
|
1648
|
+
let temp = data;
|
|
1649
|
+
let index = 0;
|
|
1650
|
+
while(index < parts.length){
|
|
1651
|
+
if (temp === null || typeof temp === 'undefined') {
|
|
1652
|
+
break;
|
|
1653
|
+
}
|
|
1654
|
+
if (parts[index] in Object(temp)) {
|
|
1655
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
1656
|
+
// @ts-expect-error
|
|
1657
|
+
temp = temp[parts[index]];
|
|
1658
|
+
} else {
|
|
1659
|
+
break;
|
|
1660
|
+
}
|
|
1661
|
+
if (index === parts.length - 1) {
|
|
1662
|
+
res = temp;
|
|
1663
|
+
}
|
|
1664
|
+
index++;
|
|
1580
1665
|
}
|
|
1581
|
-
|
|
1582
|
-
|
|
1666
|
+
return res;
|
|
1667
|
+
}
|
|
1668
|
+
const NUMBER_REGEX = /^\d+$/;
|
|
1669
|
+
function setPathValue(data, path, value) {
|
|
1670
|
+
const parts = Array.isArray(path) ? path : pathToArray(path);
|
|
1671
|
+
let temp = data;
|
|
1672
|
+
let index = 0;
|
|
1673
|
+
while(index < parts.length){
|
|
1674
|
+
/* istanbul ignore next */ if (!Array.isArray(temp) && !isObject(temp)) {
|
|
1675
|
+
break;
|
|
1676
|
+
}
|
|
1677
|
+
const key = parts[index];
|
|
1678
|
+
// [foo, '0']
|
|
1679
|
+
if (typeof temp[key] === 'undefined') {
|
|
1680
|
+
const match = NUMBER_REGEX.test(key);
|
|
1681
|
+
if (match) {
|
|
1682
|
+
temp[key] = [];
|
|
1683
|
+
} else {
|
|
1684
|
+
temp[key] = {};
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
if (index === parts.length - 1) {
|
|
1688
|
+
temp[key] = value;
|
|
1689
|
+
break;
|
|
1690
|
+
}
|
|
1691
|
+
index++;
|
|
1692
|
+
temp = temp[key];
|
|
1583
1693
|
}
|
|
1584
|
-
|
|
1585
|
-
return getObjectPathProperty(data[currentKey], nextKey);
|
|
1694
|
+
return data;
|
|
1586
1695
|
}
|
|
1696
|
+
|
|
1587
1697
|
class MemoryStore {
|
|
1588
1698
|
async get(context) {
|
|
1589
1699
|
if (!this.data[context.locale] || !this.data[context.locale][context.group]) {
|
|
1590
1700
|
return undefined;
|
|
1591
1701
|
}
|
|
1592
|
-
const output =
|
|
1702
|
+
const output = getPathValue(this.data[context.locale][context.group], context.key);
|
|
1593
1703
|
if (typeof output === 'string') {
|
|
1594
1704
|
return output;
|
|
1595
1705
|
}
|
|
@@ -1597,7 +1707,7 @@ class MemoryStore {
|
|
|
1597
1707
|
}
|
|
1598
1708
|
async set(context) {
|
|
1599
1709
|
this.initLines(context.group, context.locale);
|
|
1600
|
-
|
|
1710
|
+
setPathValue(this.data[context.locale][context.group], context.key, context.value);
|
|
1601
1711
|
}
|
|
1602
1712
|
initLines(group, locale) {
|
|
1603
1713
|
if (typeof this.data[locale] === 'undefined') {
|
|
@@ -1997,13 +2107,46 @@ function useUpdatedAt(input) {
|
|
|
1997
2107
|
}
|
|
1998
2108
|
|
|
1999
2109
|
function useAbilityCheck(name) {
|
|
2000
|
-
const
|
|
2110
|
+
const store = useStore();
|
|
2111
|
+
const refs = storeToRefs(store);
|
|
2001
2112
|
const data = ref(false);
|
|
2002
|
-
|
|
2113
|
+
let computePromise;
|
|
2114
|
+
const compute = async ()=>{
|
|
2115
|
+
if (computePromise) {
|
|
2116
|
+
return computePromise;
|
|
2117
|
+
}
|
|
2118
|
+
let identity;
|
|
2119
|
+
if (refs.userId.value) {
|
|
2120
|
+
identity = {
|
|
2121
|
+
type: 'user',
|
|
2122
|
+
id: refs.userId.value
|
|
2123
|
+
};
|
|
2124
|
+
}
|
|
2125
|
+
let outcome;
|
|
2126
|
+
try {
|
|
2127
|
+
computePromise = store.permissionChecker.preCheck({
|
|
2128
|
+
name,
|
|
2129
|
+
data: {
|
|
2130
|
+
identity
|
|
2131
|
+
}
|
|
2132
|
+
}).then(()=>true).catch(()=>false);
|
|
2133
|
+
outcome = await computePromise;
|
|
2134
|
+
} catch (e) {
|
|
2135
|
+
outcome = false;
|
|
2136
|
+
} finally{
|
|
2137
|
+
computePromise = undefined;
|
|
2138
|
+
}
|
|
2139
|
+
return outcome;
|
|
2140
|
+
};
|
|
2141
|
+
Promise.resolve().then(()=>compute()).then((outcome)=>{
|
|
2142
|
+
data.value = outcome;
|
|
2143
|
+
});
|
|
2003
2144
|
let removeListener;
|
|
2004
2145
|
onMounted(()=>{
|
|
2005
|
-
removeListener =
|
|
2006
|
-
|
|
2146
|
+
removeListener = watch(refs.loggedIn, ()=>{
|
|
2147
|
+
Promise.resolve().then(()=>compute()).then((outcome)=>{
|
|
2148
|
+
data.value = outcome;
|
|
2149
|
+
});
|
|
2007
2150
|
});
|
|
2008
2151
|
});
|
|
2009
2152
|
onUnmounted(()=>{
|
|
@@ -2055,6 +2198,7 @@ const ARealmForm = defineComponent({
|
|
|
2055
2198
|
const busy = ref(false);
|
|
2056
2199
|
const form = reactive({
|
|
2057
2200
|
name: '',
|
|
2201
|
+
display_name: '',
|
|
2058
2202
|
description: ''
|
|
2059
2203
|
});
|
|
2060
2204
|
const $v = useVuelidate({
|
|
@@ -2063,6 +2207,10 @@ const ARealmForm = defineComponent({
|
|
|
2063
2207
|
minLength: minLength(3),
|
|
2064
2208
|
maxLength: maxLength(128)
|
|
2065
2209
|
},
|
|
2210
|
+
display_name: {
|
|
2211
|
+
minLength: minLength(3),
|
|
2212
|
+
maxLength: maxLength(256)
|
|
2213
|
+
},
|
|
2066
2214
|
description: {
|
|
2067
2215
|
minLength: minLength(5),
|
|
2068
2216
|
maxLength: maxLength(4096)
|
|
@@ -2107,12 +2255,16 @@ const ARealmForm = defineComponent({
|
|
|
2107
2255
|
{
|
|
2108
2256
|
key: TranslatorTranslationDefaultKey.NAME
|
|
2109
2257
|
},
|
|
2258
|
+
{
|
|
2259
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
2260
|
+
},
|
|
2110
2261
|
{
|
|
2111
2262
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
2112
2263
|
}
|
|
2113
2264
|
]);
|
|
2114
2265
|
const render = ()=>{
|
|
2115
|
-
const
|
|
2266
|
+
const children = [];
|
|
2267
|
+
children.push(buildFormGroup({
|
|
2116
2268
|
validationMessages: translationsValidation.name.value,
|
|
2117
2269
|
validationSeverity: getVuelidateSeverity($v.value.name),
|
|
2118
2270
|
label: true,
|
|
@@ -2126,10 +2278,9 @@ const ARealmForm = defineComponent({
|
|
|
2126
2278
|
disabled: manager.data.value && manager.data.value.name === REALM_MASTER_NAME
|
|
2127
2279
|
}
|
|
2128
2280
|
})
|
|
2129
|
-
});
|
|
2130
|
-
let idHint = [];
|
|
2281
|
+
}));
|
|
2131
2282
|
if (!manager.data.value || !manager.data.value.id) {
|
|
2132
|
-
|
|
2283
|
+
children.push([
|
|
2133
2284
|
h('div', {
|
|
2134
2285
|
class: 'mb-3'
|
|
2135
2286
|
}, [
|
|
@@ -2153,9 +2304,21 @@ const ARealmForm = defineComponent({
|
|
|
2153
2304
|
translationsDefault[TranslatorTranslationDefaultKey.GENERATE].value
|
|
2154
2305
|
])
|
|
2155
2306
|
])
|
|
2156
|
-
];
|
|
2307
|
+
]);
|
|
2157
2308
|
}
|
|
2158
|
-
|
|
2309
|
+
children.push(buildFormGroup({
|
|
2310
|
+
validationMessages: translationsValidation.display_name.value,
|
|
2311
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
2312
|
+
label: true,
|
|
2313
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
2314
|
+
content: buildFormInput({
|
|
2315
|
+
value: $v.value.display_name.$model,
|
|
2316
|
+
onChange (input) {
|
|
2317
|
+
$v.value.display_name.$model = input;
|
|
2318
|
+
}
|
|
2319
|
+
})
|
|
2320
|
+
}));
|
|
2321
|
+
children.push(buildFormGroup({
|
|
2159
2322
|
validationMessages: translationsValidation.description.value,
|
|
2160
2323
|
validationSeverity: getVuelidateSeverity($v.value.description),
|
|
2161
2324
|
label: true,
|
|
@@ -2169,26 +2332,19 @@ const ARealmForm = defineComponent({
|
|
|
2169
2332
|
rows: 4
|
|
2170
2333
|
}
|
|
2171
2334
|
})
|
|
2172
|
-
});
|
|
2173
|
-
|
|
2335
|
+
}));
|
|
2336
|
+
children.push(buildFormSubmitWithTranslations({
|
|
2174
2337
|
submit,
|
|
2175
2338
|
busy: busy.value,
|
|
2176
2339
|
isEditing: isEditing.value,
|
|
2177
2340
|
invalid: $v.value.$invalid
|
|
2178
|
-
}, translationsSubmit);
|
|
2341
|
+
}, translationsSubmit));
|
|
2179
2342
|
return h('form', {
|
|
2180
2343
|
onSubmit ($event) {
|
|
2181
2344
|
$event.preventDefault();
|
|
2182
2345
|
return submit.apply(null);
|
|
2183
2346
|
}
|
|
2184
|
-
},
|
|
2185
|
-
id,
|
|
2186
|
-
idHint,
|
|
2187
|
-
h('hr'),
|
|
2188
|
-
description,
|
|
2189
|
-
h('hr'),
|
|
2190
|
-
submitButton
|
|
2191
|
-
]);
|
|
2347
|
+
}, children);
|
|
2192
2348
|
};
|
|
2193
2349
|
return ()=>render();
|
|
2194
2350
|
}
|
|
@@ -2369,6 +2525,7 @@ const AClientForm = defineComponent({
|
|
|
2369
2525
|
const busy = ref(false);
|
|
2370
2526
|
const form = reactive({
|
|
2371
2527
|
name: '',
|
|
2528
|
+
display_name: '',
|
|
2372
2529
|
description: '',
|
|
2373
2530
|
realm_id: '',
|
|
2374
2531
|
redirect_uri: '',
|
|
@@ -2384,6 +2541,10 @@ const AClientForm = defineComponent({
|
|
|
2384
2541
|
minLength: minLength(3),
|
|
2385
2542
|
maxLength: maxLength(256)
|
|
2386
2543
|
},
|
|
2544
|
+
display_name: {
|
|
2545
|
+
minLength: minLength(3),
|
|
2546
|
+
maxLength: maxLength(256)
|
|
2547
|
+
},
|
|
2387
2548
|
description: {
|
|
2388
2549
|
minLength: minLength(3),
|
|
2389
2550
|
maxLength: maxLength(256)
|
|
@@ -2461,6 +2622,9 @@ const AClientForm = defineComponent({
|
|
|
2461
2622
|
{
|
|
2462
2623
|
key: TranslatorTranslationDefaultKey.NAME
|
|
2463
2624
|
},
|
|
2625
|
+
{
|
|
2626
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
2627
|
+
},
|
|
2464
2628
|
{
|
|
2465
2629
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
2466
2630
|
},
|
|
@@ -2493,37 +2657,53 @@ const AClientForm = defineComponent({
|
|
|
2493
2657
|
}),
|
|
2494
2658
|
h('small', translationsClient[TranslatorTranslationClientKey.NAME_HINT].value)
|
|
2495
2659
|
];
|
|
2660
|
+
const displayName = buildFormGroup({
|
|
2661
|
+
validationMessages: translationsValidation.display_name.value,
|
|
2662
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
2663
|
+
label: true,
|
|
2664
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
2665
|
+
content: buildFormInput({
|
|
2666
|
+
value: $v.value.display_name.$model,
|
|
2667
|
+
onChange (input) {
|
|
2668
|
+
$v.value.display_name.$model = input;
|
|
2669
|
+
}
|
|
2670
|
+
})
|
|
2671
|
+
});
|
|
2496
2672
|
const description = [
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2673
|
+
h('div', [
|
|
2674
|
+
buildFormGroup({
|
|
2675
|
+
validationMessages: translationsValidation.description.value,
|
|
2676
|
+
validationSeverity: getVuelidateSeverity($v.value.description),
|
|
2677
|
+
label: true,
|
|
2678
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
|
|
2679
|
+
content: buildFormTextarea({
|
|
2680
|
+
value: $v.value.description.$model,
|
|
2681
|
+
onChange (input) {
|
|
2682
|
+
$v.value.description.$model = input;
|
|
2683
|
+
},
|
|
2684
|
+
props: {
|
|
2685
|
+
rows: 7
|
|
2686
|
+
}
|
|
2687
|
+
})
|
|
2688
|
+
}),
|
|
2689
|
+
h('small', translationsClient[TranslatorTranslationClientKey.DESCRIPTION_HINT].value)
|
|
2690
|
+
])
|
|
2513
2691
|
];
|
|
2514
2692
|
const redirectUri = [
|
|
2515
|
-
h('
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2693
|
+
h('div', [
|
|
2694
|
+
h('label', {
|
|
2695
|
+
class: 'form-label'
|
|
2696
|
+
}, [
|
|
2697
|
+
translationsDefault[TranslatorTranslationDefaultKey.REDIRECT_URIS].value
|
|
2698
|
+
]),
|
|
2699
|
+
h(AClientRedirectUris, {
|
|
2700
|
+
uri: form.redirect_uri,
|
|
2701
|
+
onUpdated: (value)=>{
|
|
2702
|
+
form.redirect_uri = value;
|
|
2703
|
+
}
|
|
2704
|
+
}),
|
|
2705
|
+
h('small', translationsClient[TranslatorTranslationClientKey.REDIRECT_URI_HINT].value)
|
|
2706
|
+
])
|
|
2527
2707
|
];
|
|
2528
2708
|
const isConfidential = buildFormGroup({
|
|
2529
2709
|
validationMessages: translationsValidation.is_confidential.value,
|
|
@@ -2549,7 +2729,8 @@ const AClientForm = defineComponent({
|
|
|
2549
2729
|
disabled: true
|
|
2550
2730
|
}
|
|
2551
2731
|
})
|
|
2552
|
-
})
|
|
2732
|
+
}),
|
|
2733
|
+
h('hr')
|
|
2553
2734
|
];
|
|
2554
2735
|
}
|
|
2555
2736
|
const secret = [
|
|
@@ -2616,9 +2797,10 @@ const AClientForm = defineComponent({
|
|
|
2616
2797
|
class: 'col'
|
|
2617
2798
|
}, [
|
|
2618
2799
|
id,
|
|
2619
|
-
h('hr'),
|
|
2620
2800
|
name,
|
|
2621
2801
|
h('hr'),
|
|
2802
|
+
displayName,
|
|
2803
|
+
h('hr'),
|
|
2622
2804
|
secret,
|
|
2623
2805
|
realm
|
|
2624
2806
|
]);
|
|
@@ -2626,11 +2808,11 @@ const AClientForm = defineComponent({
|
|
|
2626
2808
|
h('div', {
|
|
2627
2809
|
class: 'col'
|
|
2628
2810
|
}, [
|
|
2629
|
-
|
|
2811
|
+
isConfidential,
|
|
2630
2812
|
h('hr'),
|
|
2631
2813
|
redirectUri,
|
|
2632
2814
|
h('hr'),
|
|
2633
|
-
|
|
2815
|
+
description,
|
|
2634
2816
|
submitForm
|
|
2635
2817
|
])
|
|
2636
2818
|
];
|
|
@@ -2763,6 +2945,7 @@ const AScopeForm = defineComponent({
|
|
|
2763
2945
|
const busy = ref(false);
|
|
2764
2946
|
const form = reactive({
|
|
2765
2947
|
name: '',
|
|
2948
|
+
display_name: '',
|
|
2766
2949
|
description: '',
|
|
2767
2950
|
realm_id: ''
|
|
2768
2951
|
});
|
|
@@ -2773,6 +2956,10 @@ const AScopeForm = defineComponent({
|
|
|
2773
2956
|
minLength: minLength(3),
|
|
2774
2957
|
maxLength: maxLength(256)
|
|
2775
2958
|
},
|
|
2959
|
+
display_name: {
|
|
2960
|
+
minLength: minLength(3),
|
|
2961
|
+
maxLength: maxLength(256)
|
|
2962
|
+
},
|
|
2776
2963
|
description: {
|
|
2777
2964
|
minLength: minLength(3),
|
|
2778
2965
|
maxLength: maxLength(4096)
|
|
@@ -2825,6 +3012,9 @@ const AScopeForm = defineComponent({
|
|
|
2825
3012
|
{
|
|
2826
3013
|
key: TranslatorTranslationDefaultKey.NAME
|
|
2827
3014
|
},
|
|
3015
|
+
{
|
|
3016
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
3017
|
+
},
|
|
2828
3018
|
{
|
|
2829
3019
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
2830
3020
|
},
|
|
@@ -2849,6 +3039,18 @@ const AScopeForm = defineComponent({
|
|
|
2849
3039
|
}
|
|
2850
3040
|
})
|
|
2851
3041
|
}),
|
|
3042
|
+
buildFormGroup({
|
|
3043
|
+
validationMessages: translationsValidation.display_name.value,
|
|
3044
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
3045
|
+
label: true,
|
|
3046
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
3047
|
+
content: buildFormInput({
|
|
3048
|
+
value: $v.value.display_name.$model,
|
|
3049
|
+
onChange (input) {
|
|
3050
|
+
$v.value.display_name.$model = input;
|
|
3051
|
+
}
|
|
3052
|
+
})
|
|
3053
|
+
}),
|
|
2852
3054
|
buildFormGroup({
|
|
2853
3055
|
validationMessages: translationsValidation.description.value,
|
|
2854
3056
|
validationSeverity: getVuelidateSeverity($v.value.description),
|
|
@@ -3018,6 +3220,7 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3018
3220
|
setup (props, setup) {
|
|
3019
3221
|
const form = reactive({
|
|
3020
3222
|
name: '',
|
|
3223
|
+
display_name: '',
|
|
3021
3224
|
slug: '',
|
|
3022
3225
|
enabled: true
|
|
3023
3226
|
});
|
|
@@ -3027,6 +3230,10 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3027
3230
|
minLength: minLength(5),
|
|
3028
3231
|
maxLength: maxLength(128)
|
|
3029
3232
|
},
|
|
3233
|
+
display_name: {
|
|
3234
|
+
minLength: minLength(3),
|
|
3235
|
+
maxLength: maxLength(256)
|
|
3236
|
+
},
|
|
3030
3237
|
slug: {
|
|
3031
3238
|
required,
|
|
3032
3239
|
[VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE]: VuelidateCustomRule[VuelidateCustomRuleKey.ALPHA_NUM_HYPHEN_UNDERSCORE],
|
|
@@ -3054,7 +3261,7 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3054
3261
|
valid: !$v.value.$invalid
|
|
3055
3262
|
});
|
|
3056
3263
|
};
|
|
3057
|
-
function assign(data) {
|
|
3264
|
+
function assign(data = {}) {
|
|
3058
3265
|
extendObjectProperties(form, data);
|
|
3059
3266
|
if (isSlugEmpty.value) {
|
|
3060
3267
|
generateId();
|
|
@@ -3066,13 +3273,24 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3066
3273
|
const updatedAt = useUpdatedAt(props.entity);
|
|
3067
3274
|
onChange(updatedAt, ()=>assign(props.entity));
|
|
3068
3275
|
assign(props.entity);
|
|
3069
|
-
const
|
|
3276
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
3277
|
+
{
|
|
3278
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
3279
|
+
},
|
|
3280
|
+
{
|
|
3281
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
3282
|
+
},
|
|
3283
|
+
{
|
|
3284
|
+
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
3285
|
+
}
|
|
3286
|
+
]);
|
|
3287
|
+
const translationsValidation = useTranslationsForNestedValidation($v.value);
|
|
3070
3288
|
return ()=>{
|
|
3071
3289
|
const name = buildFormGroup({
|
|
3072
|
-
validationMessages:
|
|
3290
|
+
validationMessages: translationsValidation.name.value,
|
|
3073
3291
|
validationSeverity: getVuelidateSeverity($v.value.name),
|
|
3074
3292
|
label: true,
|
|
3075
|
-
labelContent:
|
|
3293
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
|
|
3076
3294
|
content: buildFormInput({
|
|
3077
3295
|
value: $v.value.name.$model,
|
|
3078
3296
|
onChange (input) {
|
|
@@ -3080,8 +3298,20 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3080
3298
|
}
|
|
3081
3299
|
})
|
|
3082
3300
|
});
|
|
3301
|
+
const displayName = buildFormGroup({
|
|
3302
|
+
validationMessages: translationsValidation.display_name.value,
|
|
3303
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
3304
|
+
label: true,
|
|
3305
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
3306
|
+
content: buildFormInput({
|
|
3307
|
+
value: $v.value.display_name.$model,
|
|
3308
|
+
onChange (input) {
|
|
3309
|
+
$v.value.display_name.$model = input;
|
|
3310
|
+
}
|
|
3311
|
+
})
|
|
3312
|
+
});
|
|
3083
3313
|
const slug = buildFormGroup({
|
|
3084
|
-
validationMessages:
|
|
3314
|
+
validationMessages: translationsValidation.slug.value,
|
|
3085
3315
|
validationSeverity: getVuelidateSeverity($v.value.slug),
|
|
3086
3316
|
label: true,
|
|
3087
3317
|
labelContent: 'Slug',
|
|
@@ -3122,6 +3352,7 @@ const AIdentityProviderBasicFields = defineComponent({
|
|
|
3122
3352
|
});
|
|
3123
3353
|
return [
|
|
3124
3354
|
name,
|
|
3355
|
+
displayName,
|
|
3125
3356
|
slug,
|
|
3126
3357
|
slugGenerator,
|
|
3127
3358
|
enabled
|
|
@@ -4824,6 +5055,7 @@ const ARoleForm = defineComponent({
|
|
|
4824
5055
|
const busy = ref(false);
|
|
4825
5056
|
const form = reactive({
|
|
4826
5057
|
name: '',
|
|
5058
|
+
display_name: '',
|
|
4827
5059
|
description: '',
|
|
4828
5060
|
realm_id: ''
|
|
4829
5061
|
});
|
|
@@ -4833,6 +5065,10 @@ const ARoleForm = defineComponent({
|
|
|
4833
5065
|
minLength: minLength(3),
|
|
4834
5066
|
maxLength: maxLength(30)
|
|
4835
5067
|
},
|
|
5068
|
+
display_name: {
|
|
5069
|
+
minLength: minLength(3),
|
|
5070
|
+
maxLength: maxLength(256)
|
|
5071
|
+
},
|
|
4836
5072
|
description: {
|
|
4837
5073
|
minLength: minLength(5),
|
|
4838
5074
|
maxLength: maxLength(4096)
|
|
@@ -4876,6 +5112,9 @@ const ARoleForm = defineComponent({
|
|
|
4876
5112
|
{
|
|
4877
5113
|
key: TranslatorTranslationDefaultKey.NAME
|
|
4878
5114
|
},
|
|
5115
|
+
{
|
|
5116
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5117
|
+
},
|
|
4879
5118
|
{
|
|
4880
5119
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
4881
5120
|
}
|
|
@@ -4894,6 +5133,18 @@ const ARoleForm = defineComponent({
|
|
|
4894
5133
|
}
|
|
4895
5134
|
})
|
|
4896
5135
|
}));
|
|
5136
|
+
children.push(buildFormGroup({
|
|
5137
|
+
validationMessages: translationsValidation.display_name.value,
|
|
5138
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
5139
|
+
label: true,
|
|
5140
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
5141
|
+
content: buildFormInput({
|
|
5142
|
+
value: $v.value.display_name.$model,
|
|
5143
|
+
onChange (input) {
|
|
5144
|
+
$v.value.display_name.$model = input;
|
|
5145
|
+
}
|
|
5146
|
+
})
|
|
5147
|
+
}));
|
|
4897
5148
|
children.push(buildFormGroup({
|
|
4898
5149
|
validationMessages: translationsValidation.description.value,
|
|
4899
5150
|
validationSeverity: getVuelidateSeverity($v.value.description),
|
|
@@ -5028,6 +5279,7 @@ const APermissionForm = defineComponent({
|
|
|
5028
5279
|
const busy = ref(false);
|
|
5029
5280
|
const form = reactive({
|
|
5030
5281
|
name: '',
|
|
5282
|
+
display_name: '',
|
|
5031
5283
|
description: '',
|
|
5032
5284
|
realm_id: ''
|
|
5033
5285
|
});
|
|
@@ -5037,6 +5289,10 @@ const APermissionForm = defineComponent({
|
|
|
5037
5289
|
minLength: minLength(3),
|
|
5038
5290
|
maxLength: maxLength(128)
|
|
5039
5291
|
},
|
|
5292
|
+
display_name: {
|
|
5293
|
+
minLength: minLength(3),
|
|
5294
|
+
maxLength: maxLength(256)
|
|
5295
|
+
},
|
|
5040
5296
|
description: {
|
|
5041
5297
|
minLength: minLength(5),
|
|
5042
5298
|
maxLength: maxLength(4096)
|
|
@@ -5080,6 +5336,9 @@ const APermissionForm = defineComponent({
|
|
|
5080
5336
|
{
|
|
5081
5337
|
key: TranslatorTranslationDefaultKey.NAME
|
|
5082
5338
|
},
|
|
5339
|
+
{
|
|
5340
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5341
|
+
},
|
|
5083
5342
|
{
|
|
5084
5343
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
5085
5344
|
}
|
|
@@ -5101,6 +5360,18 @@ const APermissionForm = defineComponent({
|
|
|
5101
5360
|
}
|
|
5102
5361
|
})
|
|
5103
5362
|
}));
|
|
5363
|
+
children.push(buildFormGroup({
|
|
5364
|
+
validationMessages: translationsValidation.display_name.value,
|
|
5365
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
5366
|
+
label: true,
|
|
5367
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
5368
|
+
content: buildFormInput({
|
|
5369
|
+
value: $v.value.display_name.$model,
|
|
5370
|
+
onChange (input) {
|
|
5371
|
+
$v.value.display_name.$model = input;
|
|
5372
|
+
}
|
|
5373
|
+
})
|
|
5374
|
+
}));
|
|
5104
5375
|
children.push(buildFormGroup({
|
|
5105
5376
|
validationMessages: translationsValidation.description.value,
|
|
5106
5377
|
validationSeverity: getVuelidateSeverity($v.value.description),
|
|
@@ -5240,6 +5511,7 @@ const ARobotForm = defineComponent({
|
|
|
5240
5511
|
const busy = ref(false);
|
|
5241
5512
|
const form = reactive({
|
|
5242
5513
|
name: '',
|
|
5514
|
+
display_name: '',
|
|
5243
5515
|
realm_id: '',
|
|
5244
5516
|
secret: ''
|
|
5245
5517
|
});
|
|
@@ -5249,6 +5521,10 @@ const ARobotForm = defineComponent({
|
|
|
5249
5521
|
minLength: minLength(3),
|
|
5250
5522
|
maxLength: maxLength(128)
|
|
5251
5523
|
},
|
|
5524
|
+
display_name: {
|
|
5525
|
+
minLength: minLength(3),
|
|
5526
|
+
maxLength: maxLength(256)
|
|
5527
|
+
},
|
|
5252
5528
|
realm_id: {
|
|
5253
5529
|
required
|
|
5254
5530
|
},
|
|
@@ -5268,7 +5544,7 @@ const ARobotForm = defineComponent({
|
|
|
5268
5544
|
const isRealmLocked = computed(()=>!!props.realmId);
|
|
5269
5545
|
const isSecretHashed = computed(()=>manager.data.value && manager.data.value.secret === form.secret && form.secret.startsWith('$'));
|
|
5270
5546
|
const generateSecret = ()=>{
|
|
5271
|
-
form.secret = createNanoID(
|
|
5547
|
+
form.secret = createNanoID(64);
|
|
5272
5548
|
};
|
|
5273
5549
|
function initForm() {
|
|
5274
5550
|
if (props.name) {
|
|
@@ -5310,6 +5586,9 @@ const ARobotForm = defineComponent({
|
|
|
5310
5586
|
{
|
|
5311
5587
|
key: TranslatorTranslationDefaultKey.NAME
|
|
5312
5588
|
},
|
|
5589
|
+
{
|
|
5590
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5591
|
+
},
|
|
5313
5592
|
{
|
|
5314
5593
|
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
5315
5594
|
},
|
|
@@ -5333,6 +5612,18 @@ const ARobotForm = defineComponent({
|
|
|
5333
5612
|
}
|
|
5334
5613
|
})
|
|
5335
5614
|
});
|
|
5615
|
+
const displayName = buildFormGroup({
|
|
5616
|
+
validationMessages: translationsValidation.display_name.value,
|
|
5617
|
+
validationSeverity: getVuelidateSeverity($v.value.display_name),
|
|
5618
|
+
label: true,
|
|
5619
|
+
labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
|
|
5620
|
+
content: buildFormInput({
|
|
5621
|
+
value: $v.value.display_name.$model,
|
|
5622
|
+
onChange (input) {
|
|
5623
|
+
$v.value.display_name.$model = input;
|
|
5624
|
+
}
|
|
5625
|
+
})
|
|
5626
|
+
});
|
|
5336
5627
|
let id = [];
|
|
5337
5628
|
if (manager.data.value) {
|
|
5338
5629
|
id = [
|
|
@@ -5397,6 +5688,7 @@ const ARobotForm = defineComponent({
|
|
|
5397
5688
|
}, [
|
|
5398
5689
|
id,
|
|
5399
5690
|
name,
|
|
5691
|
+
displayName,
|
|
5400
5692
|
secret,
|
|
5401
5693
|
secretInfo,
|
|
5402
5694
|
h('hr'),
|
|
@@ -5656,7 +5948,6 @@ const AUserForm = defineComponent({
|
|
|
5656
5948
|
emits: defineEntityManagerEvents(),
|
|
5657
5949
|
async setup (props, ctx) {
|
|
5658
5950
|
const busy = ref(false);
|
|
5659
|
-
const displayNameChanged = ref(false);
|
|
5660
5951
|
const form = reactive({
|
|
5661
5952
|
active: true,
|
|
5662
5953
|
name: '',
|
|
@@ -5674,9 +5965,8 @@ const AUserForm = defineComponent({
|
|
|
5674
5965
|
},
|
|
5675
5966
|
name_locked: {},
|
|
5676
5967
|
display_name: {
|
|
5677
|
-
required,
|
|
5678
5968
|
minLength: minLength(3),
|
|
5679
|
-
maxLength: maxLength(
|
|
5969
|
+
maxLength: maxLength(256)
|
|
5680
5970
|
},
|
|
5681
5971
|
email: {
|
|
5682
5972
|
minLength: minLength(5),
|
|
@@ -5717,14 +6007,6 @@ const AUserForm = defineComponent({
|
|
|
5717
6007
|
}
|
|
5718
6008
|
await manager.createOrUpdate(form);
|
|
5719
6009
|
};
|
|
5720
|
-
const updateDisplayName = (value)=>{
|
|
5721
|
-
if (!displayNameChanged.value) {
|
|
5722
|
-
form.display_name = value;
|
|
5723
|
-
}
|
|
5724
|
-
};
|
|
5725
|
-
const handleDisplayNameChanged = (value)=>{
|
|
5726
|
-
displayNameChanged.value = value.length !== 0;
|
|
5727
|
-
};
|
|
5728
6010
|
const translationsValidation = useTranslationsForNestedValidation($v.value);
|
|
5729
6011
|
const translationsSubmit = createFormSubmitTranslations();
|
|
5730
6012
|
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
@@ -5763,7 +6045,6 @@ const AUserForm = defineComponent({
|
|
|
5763
6045
|
value: $v.value.name.$model,
|
|
5764
6046
|
onChange (input) {
|
|
5765
6047
|
$v.value.name.$model = input;
|
|
5766
|
-
updateDisplayName.call(null, input);
|
|
5767
6048
|
},
|
|
5768
6049
|
props: {
|
|
5769
6050
|
disabled: form.name_locked
|
|
@@ -5779,7 +6060,6 @@ const AUserForm = defineComponent({
|
|
|
5779
6060
|
value: $v.value.display_name.$model,
|
|
5780
6061
|
onChange (input) {
|
|
5781
6062
|
$v.value.display_name.$model = input;
|
|
5782
|
-
handleDisplayNameChanged.call(null, input);
|
|
5783
6063
|
}
|
|
5784
6064
|
})
|
|
5785
6065
|
});
|
|
@@ -6597,7 +6877,7 @@ const AEntityDelete = defineComponent({
|
|
|
6597
6877
|
const busy = ref(false);
|
|
6598
6878
|
const submit = wrapFnWithBusyState(busy, async ()=>{
|
|
6599
6879
|
const domainAPI = apiClient[props.entityType];
|
|
6600
|
-
if (!isObject$
|
|
6880
|
+
if (!isObject$2(domainAPI)) {
|
|
6601
6881
|
return;
|
|
6602
6882
|
}
|
|
6603
6883
|
if (typeof domainAPI.delete !== 'function') {
|