From 8b0f65c85a55ac38800a8f65c17d06024beb3771 Mon Sep 17 00:00:00 2001 From: "Ronald A. Richardson" Date: Fri, 17 Jul 2026 16:54:30 +0800 Subject: [PATCH 1/2] v0.1.11: Implemented secure change email flow --- addon/components/modals/change-user-email.hbs | 16 +++ addon/components/modals/change-user-email.js | 52 +++++++ addon/components/modals/user-form.hbs | 4 +- addon/controllers/users/index.js | 23 +++ app/components/modals/change-user-email.js | 1 + package.json | 6 +- pnpm-lock.yaml | 134 ++++++------------ pnpm-workspace.yaml | 3 +- translations/ar-ae.yaml | 10 ++ translations/bg-bg.yaml | 10 ++ translations/en-us.yaml | 16 ++- translations/es-es.yaml | 10 ++ translations/fr-fr.yaml | 10 ++ translations/mn-mn.yaml | 10 ++ translations/pt-br.yaml | 10 ++ translations/ru-ru.yaml | 10 ++ translations/vi-vn.yaml | 10 ++ translations/zh-cn.yaml | 10 ++ 18 files changed, 245 insertions(+), 100 deletions(-) create mode 100644 addon/components/modals/change-user-email.hbs create mode 100644 addon/components/modals/change-user-email.js create mode 100644 app/components/modals/change-user-email.js diff --git a/addon/components/modals/change-user-email.hbs b/addon/components/modals/change-user-email.hbs new file mode 100644 index 0000000..4956dd0 --- /dev/null +++ b/addon/components/modals/change-user-email.hbs @@ -0,0 +1,16 @@ + +
+
+ {{t "iam.components.modals.change-user-email.heading" userName=this.user.name}} +
+
+ {{t "iam.components.modals.change-user-email.prompt"}} +
+ +
+ + +
+
+
+
diff --git a/addon/components/modals/change-user-email.js b/addon/components/modals/change-user-email.js new file mode 100644 index 0000000..a62140c --- /dev/null +++ b/addon/components/modals/change-user-email.js @@ -0,0 +1,52 @@ +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; +import { inject as service } from '@ember/service'; +import { isBlank } from '@ember/utils'; + +export default class ModalsChangeUserEmailComponent extends Component { + @service fetch; + @service intl; + @service notifications; + + @tracked options = {}; + @tracked email; + @tracked user; + + constructor(owner, { options }) { + super(...arguments); + this.user = options.user; + this.options = options; + this.setupOptions(); + } + + setupOptions() { + this.options.title = this.intl.t('iam.components.modals.change-user-email.title'); + this.options.acceptButtonText = this.intl.t('iam.components.modals.change-user-email.send-verification'); + this.options.declineButtonHidden = true; + this.options.confirm = async (modal) => { + modal.startLoading(); + + if (isBlank(this.email)) { + this.notifications.warning(this.intl.t('iam.components.modals.change-user-email.email-required')); + return modal.stopLoading(); + } + + try { + await this.fetch.post(`users/${this.user.id}/change-email`, { + email: this.email, + }); + + this.notifications.success(this.intl.t('iam.components.modals.change-user-email.verification-sent')); + + if (typeof this.options.onEmailChangeComplete === 'function') { + this.options.onEmailChangeComplete(); + } + + modal.done(); + } catch (error) { + this.notifications.serverError(error); + modal.stopLoading(); + } + }; + } +} diff --git a/addon/components/modals/user-form.hbs b/addon/components/modals/user-form.hbs index d40fec7..f2fd241 100644 --- a/addon/components/modals/user-form.hbs +++ b/addon/components/modals/user-form.hbs @@ -8,7 +8,7 @@
- + @@ -48,4 +48,4 @@
- \ No newline at end of file + diff --git a/addon/controllers/users/index.js b/addon/controllers/users/index.js index 752109d..26391d0 100644 --- a/addon/controllers/users/index.js +++ b/addon/controllers/users/index.js @@ -216,6 +216,12 @@ export default class UsersIndexController extends Controller { className: 'text-danger', isVisible: (user) => this.abilities.can('iam change-password-for user') || user.role_name === 'Administrator' || user.is_admin === true, }, + { + label: this.intl.t('iam.users.index.change-user-email'), + fn: this.changeUserEmail, + className: 'text-danger', + isVisible: () => this.abilities.can('iam change-email-for user') || this.currentUser.user.role_name === 'Administrator' || this.currentUser.user.is_admin === true, + }, { label: this.intl.t('iam.users.index.delete-user'), fn: this.deleteUser, @@ -371,6 +377,7 @@ export default class UsersIndexController extends Controller { acceptButtonDisabled: this.abilities.cannot(formPermission), acceptButtonHelpText: this.abilities.cannot(formPermission) ? this.intl.t('common.unauthorized') : null, formPermission, + allowEmailEdit: true, confirm: async (modal) => { modal.startLoading(); @@ -407,6 +414,7 @@ export default class UsersIndexController extends Controller { acceptButtonHelpText: this.abilities.cannot(formPermission) ? this.intl.t('common.unauthorized') : null, keepOpen: true, formPermission, + allowEmailEdit: false, user, uploadNewPhoto: (file) => { this.fetch.uploadFile.perform( @@ -565,6 +573,21 @@ export default class UsersIndexController extends Controller { }); } + /** + * Change email for a user + * + * @void + */ + @action changeUserEmail(user) { + this.modalsManager.show('modals/change-user-email', { + keepOpen: true, + user, + onEmailChangeComplete: () => { + return this.hostRouter.refresh(); + }, + }); + } + /** * Resends invite for a user to join. * diff --git a/app/components/modals/change-user-email.js b/app/components/modals/change-user-email.js new file mode 100644 index 0000000..03c5a84 --- /dev/null +++ b/app/components/modals/change-user-email.js @@ -0,0 +1 @@ +export { default } from '@fleetbase/iam-engine/components/modals/change-user-email'; diff --git a/package.json b/package.json index ce344e8..bf54dc7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fleetbase/iam-engine", - "version": "0.1.10", + "version": "0.1.11", "description": "Fleetbase IAM extension provides identity and access management module for managing users, permissions and policies.", "fleetbase": { "route": "iam" @@ -42,8 +42,8 @@ }, "dependencies": { "@babel/core": "^7.23.2", - "@fleetbase/ember-core": "^0.3.22", - "@fleetbase/ember-ui": "^0.3.34", + "@fleetbase/ember-core": "^0.3.24", + "@fleetbase/ember-ui": "^0.3.41", "@fortawesome/ember-fontawesome": "^2.0.0", "@fortawesome/fontawesome-svg-core": "6.4.0", "@fortawesome/free-brands-svg-icons": "6.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2135b2..2202c27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + broccoli-funnel: 3.0.8 + importers: .: @@ -12,11 +15,11 @@ importers: specifier: ^7.23.2 version: 7.29.7 '@fleetbase/ember-core': - specifier: ^0.3.22 - version: 0.3.22(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(eslint@8.57.1)(webpack@5.107.2(postcss@8.5.15)) + specifier: ^0.3.24 + version: 0.3.24(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(eslint@8.57.1)(webpack@5.107.2(postcss@8.5.15)) '@fleetbase/ember-ui': - specifier: ^0.3.34 - version: 0.3.34(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(@glimmer/component@1.1.2(@babel/core@7.29.7))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(postcss@8.5.15)(rollup@2.80.0)(tracked-built-ins@3.4.0(@babel/core@7.29.7))(webpack@5.107.2(postcss@8.5.15)) + specifier: ^0.3.41 + version: 0.3.41(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(@glimmer/component@1.1.2(@babel/core@7.29.7))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(postcss@8.5.15)(rollup@2.80.0)(tracked-built-ins@3.4.0(@babel/core@7.29.7))(webpack@5.107.2(postcss@8.5.15))(yaml@2.9.0) '@fortawesome/ember-fontawesome': specifier: ^2.0.0 version: 2.0.0(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(rollup@2.80.0)(webpack@5.107.2(postcss@8.5.15)) @@ -76,7 +79,7 @@ importers: specifier: ^3.0.0 version: 3.0.0 broccoli-funnel: - specifier: ^3.0.8 + specifier: 3.0.8 version: 3.0.8 concurrently: specifier: ^8.2.2 @@ -1245,12 +1248,12 @@ packages: peerDependencies: ember-source: '>= 4.0.0' - '@fleetbase/ember-core@0.3.22': - resolution: {integrity: sha512-tCYgxJoemUXgjsUztzeJZSwU2ejDp5x2WYI3FsBO55AlcC+mfWm0FsYtuPd9xd9PoO1jZ3T3VyvQQ06HRPtqWw==} + '@fleetbase/ember-core@0.3.24': + resolution: {integrity: sha512-WG32JlX4S75ofa34RQEMxFEqc20fTv2Qn3A5+NlqXtL0lfnCthdO+a1DrGqIIierthHl3mVTxhe+z63f8sM6EA==} engines: {node: '>= 18'} - '@fleetbase/ember-ui@0.3.34': - resolution: {integrity: sha512-l67lrbpeh0JRLDHr1sJ3QnxP6vPKwVW614CVWEASs6ZImGCBr6CK3DjsT3h+1uslQa51dpixN/stiQ+C/Z1etA==} + '@fleetbase/ember-ui@0.3.41': + resolution: {integrity: sha512-xWWrqHnVj2YW1dfEGC5woLrpPEGx8Z6dstxVZygjt9apf8Vu3goyNnLSdkIdbJS2ACMlg+QuAUV5tPySQuO+3w==} engines: {node: '>= 18'} '@fleetbase/intl-lint@0.0.1': @@ -2498,9 +2501,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blank-object@1.0.2: - resolution: {integrity: sha512-kXQ19Xhoghiyw66CUiGypnuRpWlbHAzY/+NyvqTEdTfhfQGH1/dbEMYiXju7fYKIFePpzp/y9dsu5Cu/PkmawQ==} - blob-polyfill@7.0.20220408: resolution: {integrity: sha512-oD8Ydw+5lNoqq+en24iuPt1QixdPpe/nUF8azTHnviCZYu9zUC+TwdzIp5orpblJosNlgNbVmmAb//c6d6ImUQ==} @@ -2598,14 +2598,6 @@ packages: broccoli-funnel-reducer@1.0.0: resolution: {integrity: sha512-SaOCEdh+wnt2jFUV2Qb32m7LXyElvFwW3NKNaEJyi5PGQNwxfqpkc0KI6AbQANKgdj/40U2UC0WuGThFwuEUaA==} - broccoli-funnel@2.0.1: - resolution: {integrity: sha512-C8Lnp9TVsSSiZMGEF16C0dCiNg2oJqUKwuZ1K4kVC6qRPG/2Cj/rtB5kRCC9qEbwqhX71bDbfHROx0L3J7zXQg==} - engines: {node: ^4.5 || 6.* || >= 7.*} - - broccoli-funnel@2.0.2: - resolution: {integrity: sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==} - engines: {node: ^4.5 || 6.* || >= 7.*} - broccoli-funnel@3.0.8: resolution: {integrity: sha512-ng4eIhPYiXqMw6SyGoxPHR3YAwEd2lr9FgBI1CyTbspl4txZovOsmzFkMkGAlu88xyvYXJqHiM2crfLa65T1BQ==} engines: {node: 10.* || >= 12.*} @@ -3489,6 +3481,11 @@ packages: decorator-transforms@2.3.2: resolution: {integrity: sha512-XcErcjlmCzG5ODgYjt6ZTXwd6S8fPKln/sJmw15ZXkWG2JpoQNwszis+AwF6XSGlOoG7g8MCEO97g+Yw3fk5OQ==} + decorator-transforms@2.4.0: + resolution: {integrity: sha512-IB+0RqnJpuS7ndH4dVY5dfWTZsrCzN3avWFdjSiET0uT2U24jKywjpVEK97TflnZkZgiSRfmeqc1WfS+1CI23w==} + peerDependencies: + '@babel/core': ^7.23.0 || ^8.0.0 + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -4515,9 +4512,6 @@ packages: fast-memoize@2.5.2: resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} - fast-ordered-set@1.0.3: - resolution: {integrity: sha512-MxBW4URybFszOx1YlACEoK52P6lE3xiFcPaGCUZ7QQOZ6uJXKo++Se8wa31SjcZ+NC/fdAWX7UtKEfaGgHS2Vg==} - fast-sourcemap-concat@2.1.1: resolution: {integrity: sha512-7h9/x25c6AQwdU3mA8MZDUMR3UCy50f237egBrBkuwjnUZSmfu4ptCf91PZSKzON2Uh5VvIHozYKWcPPgcjxIw==} engines: {node: 10.* || >= 12.*} @@ -9543,7 +9537,7 @@ snapshots: dependencies: postcss: 8.5.15 - '@ember-data/adapter@4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8)(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))': + '@ember-data/adapter@4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))': dependencies: '@ember-data/private-build-infra': 4.12.8 '@ember-data/store': 4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))) @@ -9680,7 +9674,7 @@ snapshots: '@ember-data/rfc395-data@0.0.4': {} - '@ember-data/serializer@4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8)(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))': + '@ember-data/serializer@4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))': dependencies: '@ember-data/private-build-infra': 4.12.8 '@ember-data/store': 4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))) @@ -9933,7 +9927,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@fleetbase/ember-core@0.3.22(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(eslint@8.57.1)(webpack@5.107.2(postcss@8.5.15))': + '@fleetbase/ember-core@0.3.24(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(eslint@8.57.1)(webpack@5.107.2(postcss@8.5.15))': dependencies: '@babel/core': 7.29.7 compress-json: 3.4.0 @@ -9966,7 +9960,7 @@ snapshots: - utf-8-validate - webpack - '@fleetbase/ember-ui@0.3.34(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(@glimmer/component@1.1.2(@babel/core@7.29.7))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(postcss@8.5.15)(rollup@2.80.0)(tracked-built-ins@3.4.0(@babel/core@7.29.7))(webpack@5.107.2(postcss@8.5.15))': + '@fleetbase/ember-ui@0.3.41(@ember/test-helpers@3.3.1(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)))(@glimmer/component@1.1.2(@babel/core@7.29.7))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(postcss@8.5.15)(rollup@2.80.0)(tracked-built-ins@3.4.0(@babel/core@7.29.7))(webpack@5.107.2(postcss@8.5.15))(yaml@2.9.0)': dependencies: '@babel/core': 7.29.7 '@ember/render-modifiers': 2.1.0(@babel/core@7.29.7)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))) @@ -9984,7 +9978,7 @@ snapshots: '@fullcalendar/daygrid': 6.1.20(@fullcalendar/core@6.1.20) '@fullcalendar/interaction': 6.1.20(@fullcalendar/core@6.1.20) '@makepanic/ember-power-calendar-date-fns': 0.4.2 - '@tailwindcss/forms': 0.5.11(tailwindcss@3.4.19) + '@tailwindcss/forms': 0.5.11(tailwindcss@3.4.19(yaml@2.9.0)) '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) '@tiptap/extension-color': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/extension-text-style@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))) '@tiptap/extension-font-family': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/extension-text-style@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))) @@ -10050,7 +10044,7 @@ snapshots: postcss-import: 15.1.0(postcss@8.5.15) postcss-mixins: 9.0.4(postcss@8.5.15) postcss-preset-env: 9.6.0(postcss@8.5.15) - tailwindcss: 3.4.19 + tailwindcss: 3.4.19(yaml@2.9.0) transitivePeerDependencies: - '@ember/test-helpers' - '@glimmer/component' @@ -10471,7 +10465,7 @@ snapshots: '@makepanic/ember-power-calendar-date-fns@0.4.2': dependencies: - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 broccoli-string-replace: 0.1.2 date-fns: 2.30.0 ember-auto-import: 1.12.2 @@ -10563,10 +10557,10 @@ snapshots: dependencies: defer-to-connect: 1.1.3 - '@tailwindcss/forms@0.5.11(tailwindcss@3.4.19)': + '@tailwindcss/forms@0.5.11(tailwindcss@3.4.19(yaml@2.9.0))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.19 + tailwindcss: 3.4.19(yaml@2.9.0) '@tiptap/core@2.27.2(@tiptap/pm@2.27.2)': dependencies: @@ -10844,7 +10838,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 7.4.9 + minimatch: 10.2.5 '@types/minimist@1.2.5': {} @@ -11611,8 +11605,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blank-object@1.0.2: {} - blob-polyfill@7.0.20220408: {} bluebird@3.7.2: {} @@ -11712,7 +11704,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/polyfill': 7.12.1 - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 broccoli-merge-trees: 3.0.2 broccoli-persistent-filter: 2.3.1 clone: 2.1.2 @@ -11854,42 +11846,6 @@ snapshots: broccoli-funnel-reducer@1.0.0: {} - broccoli-funnel@2.0.1: - dependencies: - array-equal: 1.0.2 - blank-object: 1.0.2 - broccoli-plugin: 1.3.1 - debug: 2.6.9 - fast-ordered-set: 1.0.3 - fs-tree-diff: 0.5.9 - heimdalljs: 0.2.6 - minimatch: 3.1.5 - mkdirp: 0.5.6 - path-posix: 1.0.0 - rimraf: 2.7.1 - symlink-or-copy: 1.3.1 - walk-sync: 0.3.4 - transitivePeerDependencies: - - supports-color - - broccoli-funnel@2.0.2: - dependencies: - array-equal: 1.0.2 - blank-object: 1.0.2 - broccoli-plugin: 1.3.1 - debug: 2.6.9 - fast-ordered-set: 1.0.3 - fs-tree-diff: 0.5.9 - heimdalljs: 0.2.6 - minimatch: 3.1.5 - mkdirp: 0.5.6 - path-posix: 1.0.0 - rimraf: 2.7.1 - symlink-or-copy: 1.3.1 - walk-sync: 0.3.4 - transitivePeerDependencies: - - supports-color - broccoli-funnel@3.0.8: dependencies: array-equal: 1.0.2 @@ -12125,7 +12081,7 @@ snapshots: broccoli-stew@1.6.0: dependencies: broccoli-debug: 0.6.5 - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 broccoli-merge-trees: 2.0.1 broccoli-persistent-filter: 1.4.6 broccoli-plugin: 1.3.1 @@ -12144,7 +12100,7 @@ snapshots: broccoli-stew@3.0.0: dependencies: broccoli-debug: 0.6.5 - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 broccoli-merge-trees: 3.0.2 broccoli-persistent-filter: 2.3.1 broccoli-plugin: 2.1.0 @@ -12924,6 +12880,11 @@ snapshots: transitivePeerDependencies: - '@babel/core' + decorator-transforms@2.4.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + babel-import-util: 3.0.1 + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -13259,7 +13220,7 @@ snapshots: babel-plugin-module-resolver: 3.2.0 broccoli-babel-transpiler: 7.8.1 broccoli-debug: 0.6.5 - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 broccoli-source: 2.1.2 calculate-cache-key-for-tree: 2.0.0 clone: 2.1.2 @@ -13325,7 +13286,7 @@ snapshots: ember-cli-element-closest-polyfill@0.0.2: dependencies: - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 caniuse-api: 3.0.0 element-closest: 3.0.2 ember-cli-babel: 7.26.11 @@ -13433,7 +13394,7 @@ snapshots: ember-cli-preprocess-registry@3.3.0: dependencies: broccoli-clean-css: 1.1.0 - broccoli-funnel: 2.0.2 + broccoli-funnel: 3.0.8 debug: 3.2.7 process-relative-require: 1.0.0 transitivePeerDependencies: @@ -13745,7 +13706,7 @@ snapshots: ember-composable-helpers@5.0.0: dependencies: '@babel/core': 7.29.7 - broccoli-funnel: 2.0.1 + broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 resolve: 1.22.12 transitivePeerDependencies: @@ -13810,7 +13771,7 @@ snapshots: ember-data@4.12.8(@babel/core@7.29.7)(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)): dependencies: - '@ember-data/adapter': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8)(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))) + '@ember-data/adapter': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))) '@ember-data/debug': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8)(@ember/string@3.1.1)(webpack@5.107.2(postcss@8.5.15)) '@ember-data/graph': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8) '@ember-data/json-api': 4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/store@4.12.8) @@ -13818,7 +13779,7 @@ snapshots: '@ember-data/model': 4.12.8(@babel/core@7.29.7)(@ember-data/debug@4.12.8)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/store@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))) '@ember-data/private-build-infra': 4.12.8 '@ember-data/request': 4.12.8(@babel/core@7.29.7) - '@ember-data/serializer': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8)(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))) + '@ember-data/serializer': 4.12.8(@babel/core@7.29.7)(@ember-data/store@4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))))(@ember/string@3.1.1)(ember-inflector@4.0.3(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15)))) '@ember-data/store': 4.12.8(@babel/core@7.29.7)(@ember-data/graph@4.12.8)(@ember-data/json-api@4.12.8)(@ember-data/legacy-compat@4.12.8)(@ember-data/model@4.12.8)(@ember-data/tracking@4.12.8(@babel/core@7.29.7))(@ember/string@3.1.1)(@glimmer/tracking@1.1.2)(ember-source@5.4.1(@babel/core@7.29.7)(@glimmer/component@1.1.2(@babel/core@7.29.7))(rsvp@4.8.5)(webpack@5.107.2(postcss@8.5.15))) '@ember-data/tracking': 4.12.8(@babel/core@7.29.7) '@ember/edition-utils': 1.2.0 @@ -15022,10 +14983,6 @@ snapshots: fast-memoize@2.5.2: {} - fast-ordered-set@1.0.3: - dependencies: - blank-object: 1.0.2 - fast-sourcemap-concat@2.1.1: dependencies: chalk: 2.4.2 @@ -17313,12 +17270,13 @@ snapshots: '@csstools/utilities': 1.0.0(postcss@8.5.15) postcss: 8.5.15 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.15): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.15)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.15 + yaml: 2.9.0 postcss-logical@7.0.1(postcss@8.5.15): dependencies: @@ -18802,7 +18760,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.19: + tailwindcss@3.4.19(yaml@2.9.0): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -18821,7 +18779,7 @@ snapshots: postcss: 8.5.15 postcss-import: 15.1.0(postcss@8.5.15) postcss-js: 4.1.0(postcss@8.5.15) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.15) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.15)(yaml@2.9.0) postcss-nested: 6.2.0(postcss@8.5.15) postcss-selector-parser: 6.1.2 resolve: 1.22.12 @@ -19076,7 +19034,7 @@ snapshots: tracked-built-ins@3.4.0(@babel/core@7.29.7): dependencies: '@embroider/addon-shim': 1.10.3 - decorator-transforms: 2.3.2(@babel/core@7.29.7) + decorator-transforms: 2.4.0(@babel/core@7.29.7) ember-tracked-storage-polyfill: 1.0.1 transitivePeerDependencies: - '@babel/core' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bf39b1a..15e69ae 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,4 +5,5 @@ allowBuilds: '@fortawesome/free-solid-svg-icons': false core-js: false fsevents: false -minimumReleaseAge: 0 \ No newline at end of file +minimumReleaseAge: 0 +packages: [] \ No newline at end of file diff --git a/translations/ar-ae.yaml b/translations/ar-ae.yaml index 3022dd7..91f018a 100644 --- a/translations/ar-ae.yaml +++ b/translations/ar-ae.yaml @@ -58,6 +58,15 @@ iam: view-permissions: 'الدور: {roleName} الأذونات' view-user-permissions: view-permissions: 'المستخدم: {userName} الأذونات' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: اسم الدور enter-name-for-this-role: أدخل اسمًا لهذا الدور @@ -147,6 +156,7 @@ iam: delete-user: حذف المستخدم... verify-user: التحقق من المستخدم... change-user-password: تغيير كلمة مرور المستخدم... + change-user-email: Change user email... new-user: مستخدم جديد user-invited-join-your-organization-success: تمت دعوة المستخدم للانضمام إلى مؤسستك. diff --git a/translations/bg-bg.yaml b/translations/bg-bg.yaml index 9018e62..f0fdb93 100644 --- a/translations/bg-bg.yaml +++ b/translations/bg-bg.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Роля: {roleName} Разрешения' view-user-permissions: view-permissions: 'Потребител: {userName} Разрешения' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Име на ролята enter-name-for-this-role: Въведете име за тази роля @@ -151,6 +160,7 @@ iam: delete-user: Изтриване на потребител... verify-user: Потвърждаване на потребител... change-user-password: Смяна на парола на потребител... + change-user-email: Change user email... new-user: Нов потребител user-invited-join-your-organization-success: Потребителят е поканен да се присъедини към вашата организация. diff --git a/translations/en-us.yaml b/translations/en-us.yaml index 07675c0..2d63e1b 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -61,6 +61,15 @@ iam: view-user-permissions: view-permissions: >- User: {userName} Permissions + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Role Name enter-name-for-this-role: Enter a name for this role @@ -145,6 +154,7 @@ iam: delete-user: Delete user... verify-user: Verify user... change-user-password: Change user password... + change-user-email: Change user email... new-user: New User user-invited-join-your-organization-success: User has been invited to join your organization. edit-user-title: Edit User @@ -176,9 +186,3 @@ iam: access-management: Access Management home: identity-access-management: Identity & Access Management - - - - - - \ No newline at end of file diff --git a/translations/es-es.yaml b/translations/es-es.yaml index 515583a..61b0a9f 100644 --- a/translations/es-es.yaml +++ b/translations/es-es.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Rol: {roleName} Permisos' view-user-permissions: view-permissions: 'Usuario: {userName} Permisos' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Nombre del rol enter-name-for-this-role: Introduce un nombre para este rol @@ -151,6 +160,7 @@ iam: delete-user: Eliminar usuario... verify-user: Verificar usuario... change-user-password: Cambiar la contraseña del usuario... + change-user-email: Change user email... new-user: Nuevo usuario user-invited-join-your-organization-success: El usuario ha sido invitado a unirse a su organización. diff --git a/translations/fr-fr.yaml b/translations/fr-fr.yaml index 7fdf707..afd5c99 100644 --- a/translations/fr-fr.yaml +++ b/translations/fr-fr.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Rôle : {roleName} Permissions' view-user-permissions: view-permissions: 'Utilisateur : {userName} Permissions' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Nom du rôle enter-name-for-this-role: Entrez un nom pour ce rôle @@ -152,6 +161,7 @@ iam: delete-user: Supprimer l'utilisateur... verify-user: Vérifier l'utilisateur... change-user-password: Changer le mot de passe de l'utilisateur... + change-user-email: Change user email... new-user: Nouvel utilisateur user-invited-join-your-organization-success: L'utilisateur a été invité à rejoindre votre organisation. diff --git a/translations/mn-mn.yaml b/translations/mn-mn.yaml index 10f295a..25e850f 100644 --- a/translations/mn-mn.yaml +++ b/translations/mn-mn.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Үүрэг: {roleName} Зөвшөөрлүүд' view-user-permissions: view-permissions: 'Хэрэглэгч: {userName} Зөвшөөрлүүд' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Үүргийн нэр enter-name-for-this-role: Энэхүү үүргийн нэрийг оруулна уу @@ -150,6 +159,7 @@ iam: delete-user: Хэрэглэгчийг устгах... verify-user: Хэрэглэгчийг баталгаажуулах... change-user-password: Хэрэглэгчийн нууц үгийг солих... + change-user-email: Change user email... new-user: Шинэ хэрэглэгч user-invited-join-your-organization-success: Хэрэглэгчийг танай байгууллагад нэгдэх урилгаар илгээсэн. diff --git a/translations/pt-br.yaml b/translations/pt-br.yaml index bb04d65..83cbd14 100644 --- a/translations/pt-br.yaml +++ b/translations/pt-br.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Função: {roleName} Permissões' view-user-permissions: view-permissions: 'Usuário: {userName} Permissões' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Nome da Função enter-name-for-this-role: Digite um nome para esta função @@ -151,6 +160,7 @@ iam: delete-user: Excluir usuário... verify-user: Verificar usuário... change-user-password: Alterar senha do usuário... + change-user-email: Change user email... new-user: Novo Usuário user-invited-join-your-organization-success: Usuário foi convidado para entrar na sua organização. diff --git a/translations/ru-ru.yaml b/translations/ru-ru.yaml index a8434ff..ecb1e48 100644 --- a/translations/ru-ru.yaml +++ b/translations/ru-ru.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Роль: {roleName} Разрешения' view-user-permissions: view-permissions: 'Пользователь: {userName} Разрешения' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Название роли enter-name-for-this-role: Введите название для этой роли @@ -150,6 +159,7 @@ iam: delete-user: Удалить пользователя... verify-user: Подтвердить пользователя... change-user-password: Изменить пароль пользователя... + change-user-email: Change user email... new-user: Новый пользователь user-invited-join-your-organization-success: Пользователь был приглашён присоединиться к вашей организации. diff --git a/translations/vi-vn.yaml b/translations/vi-vn.yaml index d51940a..6c7501b 100644 --- a/translations/vi-vn.yaml +++ b/translations/vi-vn.yaml @@ -59,6 +59,15 @@ iam: view-permissions: 'Vai trò: {roleName} Quyền' view-user-permissions: view-permissions: 'Người dùng: {userName} Quyền' + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: Tên vai trò enter-name-for-this-role: Nhập tên cho vai trò này @@ -151,6 +160,7 @@ iam: delete-user: Xóa người dùng... verify-user: Xác minh người dùng... change-user-password: Thay đổi mật khẩu người dùng... + change-user-email: Change user email... new-user: Người dùng mới user-invited-join-your-organization-success: Người dùng đã được mời tham gia tổ chức của bạn. diff --git a/translations/zh-cn.yaml b/translations/zh-cn.yaml index 692d6eb..788ee72 100644 --- a/translations/zh-cn.yaml +++ b/translations/zh-cn.yaml @@ -58,6 +58,15 @@ iam: view-permissions: 角色:{roleName} 权限 view-user-permissions: view-permissions: 用户:{userName} 权限 + change-user-email: + title: Change User Email + heading: Change email for {userName} + prompt: Enter the new email address. The user must verify the new address before it becomes their login email. + current-email: Current Email + new-email: New Email + send-verification: Send Verification + email-required: A new email address is required. + verification-sent: Email change verification sent. The user must confirm the new address before their login email changes. role-form: role-name: 角色名称 enter-name-for-this-role: 为此角色输入名称 @@ -141,6 +150,7 @@ iam: delete-user: 删除用户... verify-user: 验证用户... change-user-password: 更改用户密码... + change-user-email: Change user email... new-user: 新用户 user-invited-join-your-organization-success: 用户已被邀请加入您的组织。 edit-user-title: 编辑用户 From b3616388bce2df3b644e57c019fc9c4be271788b Mon Sep 17 00:00:00 2001 From: "Ronald A. Richardson" Date: Fri, 17 Jul 2026 16:57:19 +0800 Subject: [PATCH 2/2] fix pnpm overrides --- package.json | 5 ----- pnpm-workspace.yaml | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bf54dc7..b3afe06 100644 --- a/package.json +++ b/package.json @@ -110,11 +110,6 @@ "ember-addon": { "configPath": "tests/dummy/config" }, - "pnpm": { - "overrides": { - "broccoli-funnel": "3.0.8" - } - }, "prettier": { "trailingComma": "es5", "tabWidth": 4, diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 15e69ae..65f620c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,5 +5,7 @@ allowBuilds: '@fortawesome/free-solid-svg-icons': false core-js: false fsevents: false +overrides: + "broccoli-funnel": "3.0.8" minimumReleaseAge: 0 packages: [] \ No newline at end of file