@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.
- 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/APermissionCheck.d.ts +30 -0
- package/dist/components/permission/APermissionCheck.d.ts.map +1 -0
- 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/index.d.ts +1 -0
- package/dist/components/permission/index.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/index.d.ts +1 -1
- package/dist/composables/index.d.ts.map +1 -1
- package/dist/composables/use-permission-check.d.ts +4 -0
- package/dist/composables/use-permission-check.d.ts.map +1 -0
- package/dist/core/http-client/install.d.ts.map +1 -1
- package/dist/core/http-client/types.d.ts +1 -0
- package/dist/core/http-client/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/permission-check/index.d.ts +3 -0
- package/dist/core/permission-check/index.d.ts.map +1 -0
- package/dist/core/permission-check/module.d.ts +3 -0
- package/dist/core/permission-check/module.d.ts.map +1 -0
- package/dist/core/permission-check/types.d.ts +11 -0
- package/dist/core/permission-check/types.d.ts.map +1 -0
- package/dist/core/store/create.d.ts +84 -39
- package/dist/core/store/create.d.ts.map +1 -1
- package/dist/core/store/install.d.ts.map +1 -1
- package/dist/core/store/singleton.d.ts +3 -3
- package/dist/core/store/singleton.d.ts.map +1 -1
- package/dist/core/store/utils.d.ts +1 -2
- package/dist/core/store/utils.d.ts.map +1 -1
- package/dist/index.cjs +800 -448
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +603 -258
- package/dist/index.mjs.map +1 -1
- package/dist/module.d.ts.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/dist/types.d.ts +13 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -20
- package/dist/composables/use-ability-check.d.ts +0 -3
- 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
|
-
|
|
149
|
-
const
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
174
|
-
|
|
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
|
|
179
|
-
|
|
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 (!
|
|
182
|
-
|
|
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 (
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
|
201
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
|
397
|
+
function hasStoreFactory(app) {
|
|
347
398
|
return !!inject$1(StoreSymbol, app);
|
|
348
399
|
}
|
|
349
|
-
function
|
|
400
|
+
function provideStoreFactory(store, app) {
|
|
350
401
|
provide(StoreSymbol, store, app);
|
|
351
402
|
}
|
|
352
403
|
|
|
353
404
|
function installStore(app, options = {}) {
|
|
354
|
-
if (
|
|
405
|
+
if (hasStoreFactory(app)) {
|
|
355
406
|
return;
|
|
356
407
|
}
|
|
357
|
-
const
|
|
408
|
+
const storeFactory = pinia.defineStore(STORE_ID, ()=>createStore({
|
|
358
409
|
baseURL: options.baseURL
|
|
359
410
|
}));
|
|
360
|
-
const store =
|
|
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
|
-
|
|
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
|
|
493
|
-
const store =
|
|
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 =
|
|
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
|
-
*/
|
|
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
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1575
|
+
return TranslatorTranslationGroup;
|
|
1576
|
+
}({});
|
|
1577
|
+
var TranslatorTranslationVuecsKey = /*#__PURE__*/ function(TranslatorTranslationVuecsKey) {
|
|
1522
1578
|
TranslatorTranslationVuecsKey["NO_MORE"] = "noMore";
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
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
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
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
|
-
|
|
1619
|
+
return TranslatorTranslationDefaultKey;
|
|
1620
|
+
}({});
|
|
1564
1621
|
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
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
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
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
|
-
|
|
1586
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
[
|
|
1775
|
-
[
|
|
1776
|
-
[
|
|
1777
|
-
[
|
|
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
|
-
[
|
|
1782
|
-
[
|
|
1783
|
-
[
|
|
1784
|
-
[
|
|
1785
|
-
[
|
|
1786
|
-
[
|
|
1787
|
-
[
|
|
1788
|
-
[
|
|
1789
|
-
[
|
|
1790
|
-
[
|
|
1791
|
-
[
|
|
1792
|
-
[
|
|
1793
|
-
[
|
|
1794
|
-
[
|
|
1795
|
-
[
|
|
1796
|
-
[
|
|
1797
|
-
[
|
|
1798
|
-
[
|
|
1799
|
-
[
|
|
1800
|
-
[
|
|
1801
|
-
[
|
|
1802
|
-
[
|
|
1803
|
-
[
|
|
1804
|
-
[
|
|
1805
|
-
[
|
|
1806
|
-
[
|
|
1807
|
-
[
|
|
1808
|
-
[
|
|
1809
|
-
[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
[
|
|
1841
|
-
[
|
|
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
|
-
[
|
|
1979
|
+
[TranslatorTranslationVuecsKey.NO_MORE]: 'Keine weiteren {{name}} verfügbar'
|
|
1846
1980
|
};
|
|
1847
1981
|
|
|
1848
1982
|
const TranslatorTranslationClientEnglish = {
|
|
1849
|
-
[
|
|
1850
|
-
[
|
|
1851
|
-
[
|
|
1852
|
-
[
|
|
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
|
-
[
|
|
1857
|
-
[
|
|
1858
|
-
[
|
|
1859
|
-
[
|
|
1860
|
-
[
|
|
1861
|
-
[
|
|
1862
|
-
[
|
|
1863
|
-
[
|
|
1864
|
-
[
|
|
1865
|
-
[
|
|
1866
|
-
[
|
|
1867
|
-
[
|
|
1868
|
-
[
|
|
1869
|
-
[
|
|
1870
|
-
[
|
|
1871
|
-
[
|
|
1872
|
-
[
|
|
1873
|
-
[
|
|
1874
|
-
[
|
|
1875
|
-
[
|
|
1876
|
-
[
|
|
1877
|
-
[
|
|
1878
|
-
[
|
|
1879
|
-
[
|
|
1880
|
-
[
|
|
1881
|
-
[
|
|
1882
|
-
[
|
|
1883
|
-
[
|
|
1884
|
-
[
|
|
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
|
-
[
|
|
1889
|
-
[
|
|
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
|
-
[
|
|
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
|
-
[
|
|
1901
|
-
[
|
|
1902
|
-
[
|
|
1903
|
-
[
|
|
2034
|
+
[TranslatorTranslationGroup.CLIENT]: TranslatorTranslationClientGerman,
|
|
2035
|
+
[TranslatorTranslationGroup.DEFAULT]: TranslatorTranslationDefaultGerman,
|
|
2036
|
+
[TranslatorTranslationGroup.VUECS]: TranslatorTranslationVuecsGerman,
|
|
2037
|
+
[TranslatorTranslationGroup.VUELIDATE]: TranslatorTranslationVuelidateGerman
|
|
1904
2038
|
},
|
|
1905
2039
|
en: {
|
|
1906
|
-
[
|
|
1907
|
-
[
|
|
1908
|
-
[
|
|
1909
|
-
[
|
|
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:
|
|
1922
|
-
key:
|
|
2055
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
2056
|
+
key: TranslatorTranslationDefaultKey.UPDATE
|
|
1923
2057
|
});
|
|
1924
2058
|
const createText = useTranslation({
|
|
1925
|
-
group:
|
|
1926
|
-
key:
|
|
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
|
|
2004
|
-
const
|
|
2005
|
-
|
|
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(
|
|
2292
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
2293
|
+
{
|
|
2294
|
+
key: TranslatorTranslationDefaultKey.GENERATE
|
|
2295
|
+
},
|
|
2108
2296
|
{
|
|
2109
|
-
key:
|
|
2297
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
2110
2298
|
},
|
|
2111
2299
|
{
|
|
2112
|
-
key:
|
|
2300
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
2113
2301
|
},
|
|
2114
2302
|
{
|
|
2115
|
-
key:
|
|
2303
|
+
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
2116
2304
|
}
|
|
2117
2305
|
]);
|
|
2118
2306
|
const render = ()=>{
|
|
2119
|
-
const
|
|
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[
|
|
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
|
-
|
|
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[
|
|
2345
|
+
translationsDefault[TranslatorTranslationDefaultKey.GENERATE].value
|
|
2158
2346
|
])
|
|
2159
2347
|
])
|
|
2160
|
-
];
|
|
2348
|
+
]);
|
|
2161
2349
|
}
|
|
2162
|
-
|
|
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[
|
|
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
|
-
|
|
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:
|
|
2213
|
-
key:
|
|
2405
|
+
group: TranslatorTranslationGroup.VUECS,
|
|
2406
|
+
key: TranslatorTranslationDefaultKey.REALMS
|
|
2214
2407
|
});
|
|
2215
2408
|
const translation = useTranslation({
|
|
2216
|
-
group:
|
|
2217
|
-
key:
|
|
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:
|
|
2317
|
-
key:
|
|
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
|
-
[
|
|
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(
|
|
2645
|
+
const translationsClient = useTranslationsForGroup(TranslatorTranslationGroup.CLIENT, [
|
|
2448
2646
|
{
|
|
2449
|
-
key:
|
|
2647
|
+
key: TranslatorTranslationClientKey.NAME_HINT
|
|
2450
2648
|
},
|
|
2451
2649
|
{
|
|
2452
|
-
key:
|
|
2650
|
+
key: TranslatorTranslationClientKey.DESCRIPTION_HINT
|
|
2453
2651
|
},
|
|
2454
2652
|
{
|
|
2455
|
-
key:
|
|
2653
|
+
key: TranslatorTranslationClientKey.REDIRECT_URI_HINT
|
|
2456
2654
|
},
|
|
2457
2655
|
{
|
|
2458
|
-
key:
|
|
2656
|
+
key: TranslatorTranslationClientKey.IS_CONFIDENTIAL
|
|
2459
2657
|
}
|
|
2460
2658
|
]);
|
|
2461
|
-
const translationsDefault = useTranslationsForGroup(
|
|
2659
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
2660
|
+
{
|
|
2661
|
+
key: TranslatorTranslationDefaultKey.GENERATE
|
|
2662
|
+
},
|
|
2462
2663
|
{
|
|
2463
|
-
key:
|
|
2664
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
2464
2665
|
},
|
|
2465
2666
|
{
|
|
2466
|
-
key:
|
|
2667
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
2467
2668
|
},
|
|
2468
2669
|
{
|
|
2469
|
-
key:
|
|
2670
|
+
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
2470
2671
|
},
|
|
2471
2672
|
{
|
|
2472
|
-
key:
|
|
2673
|
+
key: TranslatorTranslationDefaultKey.REALM
|
|
2473
2674
|
},
|
|
2474
2675
|
{
|
|
2475
|
-
key:
|
|
2676
|
+
key: TranslatorTranslationDefaultKey.REDIRECT_URIS
|
|
2476
2677
|
},
|
|
2477
2678
|
{
|
|
2478
|
-
key:
|
|
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[
|
|
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[
|
|
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
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
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('
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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
|
-
|
|
2852
|
+
isConfidential,
|
|
2634
2853
|
vue.h('hr'),
|
|
2635
2854
|
redirectUri,
|
|
2636
2855
|
vue.h('hr'),
|
|
2637
|
-
|
|
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:
|
|
2671
|
-
key:
|
|
2889
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
2890
|
+
key: TranslatorTranslationDefaultKey.CLIENTS
|
|
2672
2891
|
});
|
|
2673
2892
|
const translation = useTranslation({
|
|
2674
|
-
group:
|
|
2675
|
-
key:
|
|
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:
|
|
2719
|
-
key:
|
|
2937
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
2938
|
+
key: TranslatorTranslationDefaultKey.CLIENT_SCOPES
|
|
2720
2939
|
});
|
|
2721
2940
|
const translation = useTranslation({
|
|
2722
|
-
group:
|
|
2723
|
-
key:
|
|
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
|
-
[
|
|
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(
|
|
3052
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
2829
3053
|
{
|
|
2830
|
-
key:
|
|
3054
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
2831
3055
|
},
|
|
2832
3056
|
{
|
|
2833
|
-
key:
|
|
3057
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
2834
3058
|
},
|
|
2835
3059
|
{
|
|
2836
|
-
key:
|
|
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[
|
|
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[
|
|
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:
|
|
2903
|
-
key:
|
|
3141
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
3142
|
+
key: TranslatorTranslationDefaultKey.SCOPES
|
|
2904
3143
|
});
|
|
2905
3144
|
const translation = useTranslation({
|
|
2906
|
-
group:
|
|
2907
|
-
key:
|
|
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
|
-
[
|
|
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
|
|
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:
|
|
3331
|
+
validationMessages: translationsValidation.name.value,
|
|
3077
3332
|
validationSeverity: getVuelidateSeverity($v.value.name),
|
|
3078
3333
|
label: true,
|
|
3079
|
-
labelContent:
|
|
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:
|
|
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:
|
|
4556
|
-
key:
|
|
4823
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
4824
|
+
key: TranslatorTranslationDefaultKey.IDENTITY_PROVIDERS
|
|
4557
4825
|
});
|
|
4558
4826
|
const translation = useTranslation({
|
|
4559
|
-
group:
|
|
4560
|
-
key:
|
|
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(
|
|
4908
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
4641
4909
|
{
|
|
4642
|
-
key:
|
|
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(
|
|
5152
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
5153
|
+
{
|
|
5154
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
5155
|
+
},
|
|
4880
5156
|
{
|
|
4881
|
-
key:
|
|
5157
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
4882
5158
|
},
|
|
4883
5159
|
{
|
|
4884
|
-
key:
|
|
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[
|
|
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[
|
|
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:
|
|
4948
|
-
key:
|
|
5235
|
+
group: TranslatorTranslationGroup.VUECS,
|
|
5236
|
+
key: TranslatorTranslationDefaultKey.ROLES
|
|
4949
5237
|
});
|
|
4950
5238
|
const translation = useTranslation({
|
|
4951
|
-
group:
|
|
4952
|
-
key:
|
|
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(
|
|
5408
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
5409
|
+
{
|
|
5410
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
5411
|
+
},
|
|
5084
5412
|
{
|
|
5085
|
-
key:
|
|
5413
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5086
5414
|
},
|
|
5087
5415
|
{
|
|
5088
|
-
key:
|
|
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[
|
|
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[
|
|
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:
|
|
5155
|
-
key:
|
|
5494
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
5495
|
+
key: TranslatorTranslationDefaultKey.PERMISSIONS
|
|
5156
5496
|
});
|
|
5157
5497
|
const translation = useTranslation({
|
|
5158
|
-
group:
|
|
5159
|
-
key:
|
|
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
|
-
[
|
|
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(
|
|
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(
|
|
5652
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
5653
|
+
{
|
|
5654
|
+
key: TranslatorTranslationDefaultKey.GENERATE
|
|
5655
|
+
},
|
|
5308
5656
|
{
|
|
5309
|
-
key:
|
|
5657
|
+
key: TranslatorTranslationDefaultKey.HASHED
|
|
5310
5658
|
},
|
|
5311
5659
|
{
|
|
5312
|
-
key:
|
|
5660
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
5313
5661
|
},
|
|
5314
5662
|
{
|
|
5315
|
-
key:
|
|
5663
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5316
5664
|
},
|
|
5317
5665
|
{
|
|
5318
|
-
key:
|
|
5666
|
+
key: TranslatorTranslationDefaultKey.DESCRIPTION
|
|
5319
5667
|
},
|
|
5320
5668
|
{
|
|
5321
|
-
key:
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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:
|
|
5461
|
-
key:
|
|
5821
|
+
group: TranslatorTranslationGroup.VUECS,
|
|
5822
|
+
key: TranslatorTranslationDefaultKey.ROBOTS
|
|
5462
5823
|
});
|
|
5463
5824
|
const translation = useTranslation({
|
|
5464
|
-
group:
|
|
5465
|
-
key:
|
|
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(
|
|
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(
|
|
6085
|
+
const translationsDefault = useTranslationsForGroup(TranslatorTranslationGroup.DEFAULT, [
|
|
5735
6086
|
{
|
|
5736
|
-
key:
|
|
6087
|
+
key: TranslatorTranslationDefaultKey.ACTIVE
|
|
5737
6088
|
},
|
|
5738
6089
|
{
|
|
5739
|
-
key:
|
|
6090
|
+
key: TranslatorTranslationDefaultKey.INACTIVE
|
|
5740
6091
|
},
|
|
5741
6092
|
{
|
|
5742
|
-
key:
|
|
6093
|
+
key: TranslatorTranslationDefaultKey.DISPLAY_NAME
|
|
5743
6094
|
},
|
|
5744
6095
|
{
|
|
5745
|
-
key:
|
|
6096
|
+
key: TranslatorTranslationDefaultKey.EMAIL
|
|
5746
6097
|
},
|
|
5747
6098
|
{
|
|
5748
|
-
key:
|
|
6099
|
+
key: TranslatorTranslationDefaultKey.LOCKED
|
|
5749
6100
|
},
|
|
5750
6101
|
{
|
|
5751
|
-
key:
|
|
6102
|
+
key: TranslatorTranslationDefaultKey.NOT_LOCKED
|
|
5752
6103
|
},
|
|
5753
6104
|
{
|
|
5754
|
-
key:
|
|
6105
|
+
key: TranslatorTranslationDefaultKey.NAME
|
|
5755
6106
|
},
|
|
5756
6107
|
{
|
|
5757
|
-
key:
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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:
|
|
5927
|
-
key:
|
|
6275
|
+
group: TranslatorTranslationGroup.DEFAULT,
|
|
6276
|
+
key: TranslatorTranslationDefaultKey.USERS
|
|
5928
6277
|
});
|
|
5929
6278
|
const translation = useTranslation({
|
|
5930
|
-
group:
|
|
5931
|
-
key:
|
|
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
|
-
|
|
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:
|
|
6371
|
-
key:
|
|
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
|
-
|
|
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:
|
|
6620
|
-
key:
|
|
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.
|
|
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.
|
|
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.
|
|
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;
|