From f1d89bd58feec55f7aaa1e3f1a02e83298b78071 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 21 Feb 2024 13:30:20 +0100 Subject: [PATCH] Improved pre-commit and linters config --- .pre-commit-config.yaml | 25 +- frontend/.eslintrc.js | 30 +- .prettierrc.json => frontend/.prettierrc.json | 0 frontend/gettext.config.js | 44 +- frontend/package.json | 1 - frontend/src/App.vue | 2 +- frontend/src/api/account.js | 82 +- frontend/src/api/accounts.js | 42 +- frontend/src/api/admin.js | 6 +- frontend/src/api/alarms.js | 28 +- frontend/src/api/aliases.js | 42 +- frontend/src/api/auth.js | 24 +- frontend/src/api/domains.js | 136 +- frontend/src/api/identities.js | 26 +- frontend/src/api/imap_migration/migrations.js | 18 +- frontend/src/api/imap_migration/providers.js | 48 +- frontend/src/api/languages.js | 6 +- frontend/src/api/logs.js | 12 +- frontend/src/api/parameters.js | 24 +- frontend/src/api/repository.js | 109 +- frontend/src/api/senderAddresses.js | 26 +- frontend/src/api/statistics.js | 22 +- frontend/src/api/transports.js | 6 +- .../src/components/account/ForwardForm.vue | 79 +- .../src/components/account/ProfileForm.vue | 265 +-- .../account/RecoveryCodesResetDialog.vue | 52 +- .../components/account/TwoFactorAuthForm.vue | 409 ++-- .../src/components/admin/alarms/AlarmList.vue | 312 +-- .../admin/dmarc/DmarcAligmentChart.vue | 380 ++-- .../admin/dmarc/DmarcSourceTable.vue | 89 +- .../admin/domains/DKIMKeyViewer.vue | 42 +- .../components/admin/domains/DNSDetail.vue | 440 ++-- .../admin/domains/DNSStatusChip.vue | 60 +- .../admin/domains/DomainAdminList.vue | 249 +-- .../admin/domains/DomainAliasForm.vue | 146 +- .../admin/domains/DomainCreationForm.vue | 478 ++--- .../admin/domains/DomainDKIMKey.vue | 100 +- .../admin/domains/DomainDNSConfig.vue | 158 +- .../admin/domains/DomainEditForm.vue | 442 ++-- .../components/admin/domains/DomainList.vue | 531 ++--- .../admin/domains/DomainSummary.vue | 91 +- .../domains/form_steps/DomainDNSForm.vue | 76 +- .../domains/form_steps/DomainGeneralForm.vue | 78 +- .../form_steps/DomainLimitationsForm.vue | 80 +- .../domains/form_steps/DomainOptionsForm.vue | 78 +- .../form_steps/DomainTransportForm.vue | 98 +- .../admin/identities/AccountAliases.vue | 24 +- .../admin/identities/AccountCreationForm.vue | 383 ++-- .../admin/identities/AccountEditForm.vue | 590 +++--- .../identities/AccountSenderAddresses.vue | 150 +- .../admin/identities/AccountSummary.vue | 128 +- .../admin/identities/AliasCreationForm.vue | 189 +- .../admin/identities/AliasEditForm.vue | 208 +- .../identities/AliasRecipientsSummary.vue | 20 +- .../admin/identities/AliasSummary.vue | 46 +- .../admin/identities/DomainAdminDomains.vue | 38 +- .../admin/identities/IdentityList.vue | 392 ++-- .../form_steps/AccountAliasForm.vue | 104 +- .../form_steps/AccountGeneralForm.vue | 114 +- .../form_steps/AccountMailboxForm.vue | 182 +- .../form_steps/AccountPasswordSubForm.vue | 226 +- .../identities/form_steps/AccountRoleForm.vue | 146 +- .../form_steps/AliasGeneralForm.vue | 144 +- .../form_steps/AliasRecipientForm.vue | 70 +- .../admin/imap_migration/MigrationsList.vue | 189 +- .../imap_migration/ProviderCreationForm.vue | 159 +- .../admin/imap_migration/ProviderForm.vue | 237 ++- .../admin/imap_migration/ProvidersList.vue | 211 +- .../form_steps/ProviderAssociatedForm.vue | 156 +- .../form_steps/ProviderGeneralForm.vue | 191 +- .../components/admin/logs/AuditTrailList.vue | 122 +- .../src/components/admin/logs/MessageList.vue | 100 +- frontend/src/components/login/LoginForm.vue | 155 +- .../login/PasswordRecoveryChangeForm.vue | 208 +- .../components/login/PasswordRecoveryForm.vue | 203 +- .../login/PasswordRecoverySmsTotpForm.vue | 228 ++- frontend/src/components/login/TwofaForm.vue | 108 +- frontend/src/components/tools/ChoiceField.vue | 156 +- .../src/components/tools/ConfirmDialog.vue | 90 +- .../src/components/tools/CreationForm.vue | 291 +-- .../src/components/tools/CreationSummary.vue | 74 +- frontend/src/components/tools/DateField.vue | 46 +- frontend/src/components/tools/EmailField.vue | 256 +-- frontend/src/components/tools/ImportForm.vue | 154 +- frontend/src/components/tools/LoadingData.vue | 22 +- frontend/src/components/tools/MenuItems.vue | 42 +- .../src/components/tools/ResourcesForm.vue | 30 +- .../src/components/tools/ResourcesView.vue | 48 +- .../src/components/tools/TimeSerieChart.vue | 246 +-- .../src/layouts/dashboard/DashboardLayout.vue | 44 +- .../src/layouts/dashboard/DashboardView.vue | 24 +- frontend/src/layouts/dashboard/NavBar.vue | 236 +-- .../src/layouts/default/DefaultLayout.vue | 6 +- frontend/src/layouts/default/DefaultView.vue | 6 +- frontend/src/locale/translations.json | 1813 ++++++++++++++++- frontend/src/main.js | 20 +- frontend/src/mixins/importExport.js | 79 +- frontend/src/plugins/filters.js | 30 +- frontend/src/plugins/gettext.js | 44 +- frontend/src/plugins/index.js | 13 +- frontend/src/plugins/rules.js | 55 +- frontend/src/plugins/vuetify.js | 34 +- frontend/src/router/index.js | 636 +++--- frontend/src/stores/accounts.store.js | 136 +- frontend/src/stores/aliases.store.js | 154 +- frontend/src/stores/auth.store.js | 142 +- frontend/src/stores/bus.store.js | 32 +- frontend/src/stores/domains.store.js | 276 +-- frontend/src/stores/identities.store.js | 313 +-- frontend/src/stores/parameters.store.js | 10 +- frontend/src/stores/providers.store.js | 102 +- frontend/src/views/Dashboard.vue | 50 +- frontend/src/views/account/APISetupView.vue | 178 +- frontend/src/views/account/ForwardView.vue | 14 +- frontend/src/views/account/ProfileView.vue | 16 +- frontend/src/views/account/SecurityView.vue | 16 +- frontend/src/views/admin/InformationView.vue | 116 +- frontend/src/views/admin/ParametersView.vue | 288 +-- .../src/views/admin/alarms/AlarmsView.vue | 10 +- .../views/admin/domains/DomainEditView.vue | 14 +- .../src/views/admin/domains/DomainView.vue | 166 +- .../src/views/admin/domains/DomainsView.vue | 161 +- .../admin/identities/AccountEditView.vue | 6 +- .../views/admin/identities/AccountView.vue | 96 +- .../views/admin/identities/AliasEditView.vue | 10 +- .../src/views/admin/identities/AliasView.vue | 56 +- .../views/admin/identities/IdentitiesView.vue | 205 +- .../admin/imap_migration/MigrationsView.vue | 18 +- .../admin/imap_migration/ProviderEditView.vue | 12 +- .../admin/imap_migration/ProvidersView.vue | 50 +- .../views/admin/monitoring/AuditTrailView.vue | 10 +- .../views/admin/monitoring/MessagesView.vue | 10 +- .../views/admin/monitoring/StatisticsView.vue | 52 +- frontend/src/views/login/LoginView.vue | 32 +- .../login/PasswordRecoveryChangeView.vue | 32 +- .../src/views/login/PasswordRecoveryForm.vue | 209 +- .../login/PasswordRecoverySmsTotpView.vue | 32 +- .../src/views/login/PasswordRecoveryView.vue | 32 +- frontend/src/views/login/TwoFA.vue | 32 +- frontend/vite.config.js | 74 +- frontend/yarn.lock | 5 - 141 files changed, 10460 insertions(+), 8115 deletions(-) rename .prettierrc.json => frontend/.prettierrc.json (100%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d35d33b40..8976ec645 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,20 +9,19 @@ repos: language: system types: [python] args: ["-rn", "-sn", "--fail-under=5"] + - id: prettier + name: prettier + entry: prettier --config frontend/.prettierrc.json --write --ignore-unknown + language: node + types: [javascript] + additional_dependencies: ["prettier"] + - id: eslint + name: eslint + language: node + types: [javascript] + entry: eslint --fix + additional_dependencies: ["eslint-plugin-vue"] - repo: https://github.com/psf/black rev: "24.2.0" hooks: - id: black - - repo: https://github.com/pre-commit/mirrors-eslint - rev: "v9.0.0-beta.0" - hooks: - - id: eslint - files: \.(js|vue)$ - types: [file] - additional_dependencies: - - eslint - - eslint-plugin-vue - - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v4.0.0-alpha.8" # Use the sha / tag you want to point at - hooks: - - id: prettier diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index 992cd90ae..b7d205fe4 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -1,17 +1,17 @@ module.exports = { - root: true, - env: { - node: true, - }, - extends: ['plugin:vue/vue3-recommended', 'eslint:recommended', 'prettier'], - rules: { - 'vue/component-name-in-template-casing': [ - 'error', - 'PascalCase', - { - registeredComponentsOnly: true, - ignores: [], - }, - ], - }, + root: true, + env: { + node: true, + }, + extends: ['plugin:vue/vue3-recommended', 'eslint:recommended'], + rules: { + 'vue/component-name-in-template-casing': [ + 'error', + 'PascalCase', + { + registeredComponentsOnly: true, + ignores: [], + }, + ], + }, } diff --git a/.prettierrc.json b/frontend/.prettierrc.json similarity index 100% rename from .prettierrc.json rename to frontend/.prettierrc.json diff --git a/frontend/gettext.config.js b/frontend/gettext.config.js index 3ea2ba7cb..497bea857 100644 --- a/frontend/gettext.config.js +++ b/frontend/gettext.config.js @@ -1,24 +1,24 @@ module.exports = { - output: { - path: './src/locale', - locales: [ - 'en', - 'br', - 'cs', - 'de', - 'el', - 'es', - 'fi', - 'fr', - 'it', - 'ja', - 'nl', - 'pl', - 'pt', - 'ru', - 'sv', - 'tr', - 'zh', - ], - }, + output: { + path: './src/locale', + locales: [ + 'en', + 'br', + 'cs', + 'de', + 'el', + 'es', + 'fi', + 'fr', + 'it', + 'ja', + 'nl', + 'pl', + 'pt', + 'ru', + 'sv', + 'tr', + 'zh', + ], + }, } diff --git a/frontend/package.json b/frontend/package.json index 85aaefdbb..91ea67c79 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -33,7 +33,6 @@ "devDependencies": { "@vitejs/plugin-vue": "^5.0.4", "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", "eslint-plugin-vue": "^9.21.1", "prettier": "^3.1.1", "sass": "^1.69.5", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index fd34c44f9..a315c5fdb 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,5 +1,5 @@ diff --git a/frontend/src/api/account.js b/frontend/src/api/account.js index af181f383..f935097cd 100644 --- a/frontend/src/api/account.js +++ b/frontend/src/api/account.js @@ -3,45 +3,45 @@ import repository from './repository' const resource = 'account' export default { - getMe() { - return repository.get(`/${resource}/me/`) - }, - checkPassword(value) { - return repository.post(`/${resource}/me/password/`, { password: value }) - }, - verifyTFACode(code) { - const payload = { code } - return repository.post(`${resource}/tfa/verify/`, payload) - }, - startTFASetup() { - return repository.post(`${resource}/tfa/setup/`) - }, - getKeyForTFASetup() { - return repository.get(`${resource}/tfa/setup/key/`) - }, - finalizeTFASetup(pinCode) { - const payload = { pin_code: pinCode } - return repository.post(`${resource}/tfa/setup/check/`, payload) - }, - disableTFA(data) { - return repository.post(`${resource}/tfa/disable/`, data) - }, - resetRecoveryCodes(data) { - return repository.post(`${resource}/tfa/reset_codes/`, data) - }, - getForward() { - return repository.get(`${resource}/forward/`) - }, - setForward(data) { - return repository.post(`${resource}/forward/`, data) - }, - getAPIToken() { - return repository.get(`${resource}/api_token/`) - }, - createAPIToken() { - return repository.post(`${resource}/api_token/`) - }, - deleteAPIToken() { - return repository.delete(`${resource}/api_token/`) - }, + getMe() { + return repository.get(`/${resource}/me/`) + }, + checkPassword(value) { + return repository.post(`/${resource}/me/password/`, { password: value }) + }, + verifyTFACode(code) { + const payload = { code } + return repository.post(`${resource}/tfa/verify/`, payload) + }, + startTFASetup() { + return repository.post(`${resource}/tfa/setup/`) + }, + getKeyForTFASetup() { + return repository.get(`${resource}/tfa/setup/key/`) + }, + finalizeTFASetup(pinCode) { + const payload = { pin_code: pinCode } + return repository.post(`${resource}/tfa/setup/check/`, payload) + }, + disableTFA(data) { + return repository.post(`${resource}/tfa/disable/`, data) + }, + resetRecoveryCodes(data) { + return repository.post(`${resource}/tfa/reset_codes/`, data) + }, + getForward() { + return repository.get(`${resource}/forward/`) + }, + setForward(data) { + return repository.post(`${resource}/forward/`, data) + }, + getAPIToken() { + return repository.get(`${resource}/api_token/`) + }, + createAPIToken() { + return repository.post(`${resource}/api_token/`) + }, + deleteAPIToken() { + return repository.delete(`${resource}/api_token/`) + }, } diff --git a/frontend/src/api/accounts.js b/frontend/src/api/accounts.js index cecdf8e70..37fddcccf 100644 --- a/frontend/src/api/accounts.js +++ b/frontend/src/api/accounts.js @@ -3,25 +3,25 @@ import repository from './repository' const resource = 'accounts' export default { - getAll({ domain, role }) { - return repository.get(`/${resource}/`, { params: { domain, role } }) - }, - get(accountId) { - return repository.get(`${resource}/${accountId}/`) - }, - getRandomPassword() { - return repository.get(`${resource}/random_password/`) - }, - validate(data) { - return repository.post(`${resource}/validate/`, data) - }, - create(data) { - return repository.post(`${resource}/`, data) - }, - patch(accountId, data) { - return repository.patch(`${resource}/${accountId}/`, data) - }, - delete(accountId, data) { - return repository.post(`${resource}/${accountId}/delete/`, data) - }, + getAll({ domain, role }) { + return repository.get(`/${resource}/`, { params: { domain, role } }) + }, + get(accountId) { + return repository.get(`${resource}/${accountId}/`) + }, + getRandomPassword() { + return repository.get(`${resource}/random_password/`) + }, + validate(data) { + return repository.post(`${resource}/validate/`, data) + }, + create(data) { + return repository.post(`${resource}/`, data) + }, + patch(accountId, data) { + return repository.patch(`${resource}/${accountId}/`, data) + }, + delete(accountId, data) { + return repository.post(`${resource}/${accountId}/delete/`, data) + }, } diff --git a/frontend/src/api/admin.js b/frontend/src/api/admin.js index 489345a41..ebd816ae7 100644 --- a/frontend/src/api/admin.js +++ b/frontend/src/api/admin.js @@ -1,7 +1,7 @@ import repository from './repository' export default { - getComponentsInformation() { - return repository.get('/admin/components/') - }, + getComponentsInformation() { + return repository.get('/admin/components/') + }, } diff --git a/frontend/src/api/alarms.js b/frontend/src/api/alarms.js index a25b368ef..d24512522 100644 --- a/frontend/src/api/alarms.js +++ b/frontend/src/api/alarms.js @@ -3,18 +3,18 @@ import repository from './repository' const resource = 'alarms' export default { - getAll(params) { - return repository.get(`${resource}/`, { params }) - }, - switchStatus(alarmId, data) { - return repository.patch(`${resource}/${alarmId}/switch/`, data) - }, - delete(alarmId) { - return repository.delete(`${resource}/${alarmId}/`) - }, - bulkDelete(alarmsIds) { - return repository.delete(`${resource}/bulk_delete/`, { - params: { ids: alarmsIds }, - }) - }, + getAll(params) { + return repository.get(`${resource}/`, { params }) + }, + switchStatus(alarmId, data) { + return repository.patch(`${resource}/${alarmId}/switch/`, data) + }, + delete(alarmId) { + return repository.delete(`${resource}/${alarmId}/`) + }, + bulkDelete(alarmsIds) { + return repository.delete(`${resource}/bulk_delete/`, { + params: { ids: alarmsIds }, + }) + }, } diff --git a/frontend/src/api/aliases.js b/frontend/src/api/aliases.js index fea9bb285..38a856000 100644 --- a/frontend/src/api/aliases.js +++ b/frontend/src/api/aliases.js @@ -3,25 +3,25 @@ import repository from './repository' const resource = 'aliases' export default { - getAll() { - return repository.get(`${resource}/`) - }, - get(aliasId) { - return repository.get(`${resource}/${aliasId}/`) - }, - getRandomAddress() { - return repository.get(`${resource}/random_address/`) - }, - validate(data) { - return repository.post(`${resource}/validate/`, data) - }, - create(data) { - return repository.post(`${resource}/`, data) - }, - patch(aliasId, data) { - return repository.patch(`${resource}/${aliasId}/`, data) - }, - delete(aliasId) { - return repository.delete(`${resource}/${aliasId}/`) - }, + getAll() { + return repository.get(`${resource}/`) + }, + get(aliasId) { + return repository.get(`${resource}/${aliasId}/`) + }, + getRandomAddress() { + return repository.get(`${resource}/random_address/`) + }, + validate(data) { + return repository.post(`${resource}/validate/`, data) + }, + create(data) { + return repository.post(`${resource}/`, data) + }, + patch(aliasId, data) { + return repository.patch(`${resource}/${aliasId}/`, data) + }, + delete(aliasId) { + return repository.delete(`${resource}/${aliasId}/`) + }, } diff --git a/frontend/src/api/auth.js b/frontend/src/api/auth.js index f9fade5dc..5539ba02d 100644 --- a/frontend/src/api/auth.js +++ b/frontend/src/api/auth.js @@ -1,16 +1,16 @@ import repository from './repository' export default { - requestToken(data) { - return repository.post('/token/', data) - }, - recoverPassword(data) { - return repository.post('/password_reset/', data) - }, - checkSmsTotp(data) { - return repository.post('/sms_totp/', data) - }, - changePassword(data) { - return repository.post('/reset_confirm/', data) - }, + requestToken(data) { + return repository.post('/token/', data) + }, + recoverPassword(data) { + return repository.post('/password_reset/', data) + }, + checkSmsTotp(data) { + return repository.post('/sms_totp/', data) + }, + changePassword(data) { + return repository.post('/reset_confirm/', data) + }, } diff --git a/frontend/src/api/domains.js b/frontend/src/api/domains.js index 4bdb6bed1..77b3721ba 100644 --- a/frontend/src/api/domains.js +++ b/frontend/src/api/domains.js @@ -4,72 +4,72 @@ const domainResource = 'domains' const domainAliasResource = 'domainaliases' export default { - getDomains() { - return repository.get(`/${domainResource}/`) - }, - getDomain(domainId) { - return repository.get(`/${domainResource}/${domainId}/`) - }, - getDomainDNSDetail(domainId) { - return repository.get(`/${domainResource}/${domainId}/dns_detail/`) - }, - getDomainDmarcAlignment(domainId, period) { - return repository.get( - `${domainResource}/${domainId}/dmarc/alignment_stats/`, - { params: { period } } - ) - }, - getDomainAliases(domain) { - let url = `/${domainAliasResource}/` - if (domain !== undefined) { - url += `?domain=${domain}` - } - return repository.get(url) - }, - getDomainAdministrators(domainId) { - return repository.get(`/${domainResource}/${domainId}/administrators/`) - }, - addDomainAdministrator(domainId, accountId) { - return repository.post( - `/${domainResource}/${domainId}/administrators/add/`, - { account: accountId } - ) - }, - removeDomainAdministrator(domainId, accountId) { - return repository.post( - `/${domainResource}/${domainId}/administrators/remove/`, - { account: accountId } - ) - }, - createDomain(data) { - return repository.post(`/${domainResource}/`, data) - }, - updateDomain(domainId, data) { - return repository.put(`/${domainResource}/${domainId}/`, data) - }, - patchDomain(domainId, data) { - return repository.patch(`/${domainResource}/${domainId}/`, data) - }, - deleteDomain(domainId, data) { - return repository.post(`/${domainResource}/${domainId}/delete/`, data) - }, - createDomainAlias(data) { - return repository.post(`/${domainAliasResource}/`, data) - }, - updateDomainAlias(aliasId, data) { - return repository.put(`/${domainAliasResource}/${aliasId}/`, data) - }, - deleteDomainAlias(aliasId) { - return repository.delete(`/${domainAliasResource}/${aliasId}/`) - }, - exportAll() { - return repository.get(`/${domainResource}/export/`) - }, - importFromCSV(data) { - return repository.post(`/${domainResource}/import/`, data, { - headers: { - 'Content-Type': 'multipart/form-data', - }, - }) - }, + getDomains() { + return repository.get(`/${domainResource}/`) + }, + getDomain(domainId) { + return repository.get(`/${domainResource}/${domainId}/`) + }, + getDomainDNSDetail(domainId) { + return repository.get(`/${domainResource}/${domainId}/dns_detail/`) + }, + getDomainDmarcAlignment(domainId, period) { + return repository.get( + `${domainResource}/${domainId}/dmarc/alignment_stats/`, + { params: { period } } + ) + }, + getDomainAliases(domain) { + let url = `/${domainAliasResource}/` + if (domain !== undefined) { + url += `?domain=${domain}` + } + return repository.get(url) + }, + getDomainAdministrators(domainId) { + return repository.get(`/${domainResource}/${domainId}/administrators/`) + }, + addDomainAdministrator(domainId, accountId) { + return repository.post( + `/${domainResource}/${domainId}/administrators/add/`, + { account: accountId } + ) + }, + removeDomainAdministrator(domainId, accountId) { + return repository.post( + `/${domainResource}/${domainId}/administrators/remove/`, + { account: accountId } + ) + }, + createDomain(data) { + return repository.post(`/${domainResource}/`, data) + }, + updateDomain(domainId, data) { + return repository.put(`/${domainResource}/${domainId}/`, data) + }, + patchDomain(domainId, data) { + return repository.patch(`/${domainResource}/${domainId}/`, data) + }, + deleteDomain(domainId, data) { + return repository.post(`/${domainResource}/${domainId}/delete/`, data) + }, + createDomainAlias(data) { + return repository.post(`/${domainAliasResource}/`, data) + }, + updateDomainAlias(aliasId, data) { + return repository.put(`/${domainAliasResource}/${aliasId}/`, data) + }, + deleteDomainAlias(aliasId) { + return repository.delete(`/${domainAliasResource}/${aliasId}/`) + }, + exportAll() { + return repository.get(`/${domainResource}/export/`) + }, + importFromCSV(data) { + return repository.post(`/${domainResource}/import/`, data, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }) + }, } diff --git a/frontend/src/api/identities.js b/frontend/src/api/identities.js index b907cfed8..94b16ed73 100644 --- a/frontend/src/api/identities.js +++ b/frontend/src/api/identities.js @@ -3,17 +3,17 @@ import repository from './repository' const resource = 'identities' export default { - getAll() { - return repository.get(`${resource}/`) - }, - exportAll() { - return repository.get(`/${resource}/export/`) - }, - importFromCSV(data) { - return repository.post(`/${resource}/import/`, data, { - headers: { - 'Content-Type': 'multipart/form-data', - }, - }) - }, + getAll() { + return repository.get(`${resource}/`) + }, + exportAll() { + return repository.get(`/${resource}/export/`) + }, + importFromCSV(data) { + return repository.post(`/${resource}/import/`, data, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }) + }, } diff --git a/frontend/src/api/imap_migration/migrations.js b/frontend/src/api/imap_migration/migrations.js index feeb782a0..aa5eae1ae 100644 --- a/frontend/src/api/imap_migration/migrations.js +++ b/frontend/src/api/imap_migration/migrations.js @@ -3,13 +3,13 @@ import repository from '@/api/repository' const resource = 'migrations' export default { - getMigrations(params) { - return repository.get(`/${resource}/`, { params }) - }, - getMigration(slug, query) { - return repository.get(`/${resource}/${slug}/`, query) - }, - deleteMigration(slug) { - return repository.delete(`/${resource}/${slug}/`) - }, + getMigrations(params) { + return repository.get(`/${resource}/`, { params }) + }, + getMigration(slug, query) { + return repository.get(`/${resource}/${slug}/`, query) + }, + deleteMigration(slug) { + return repository.delete(`/${resource}/${slug}/`) + }, } diff --git a/frontend/src/api/imap_migration/providers.js b/frontend/src/api/imap_migration/providers.js index 13964d94b..0fd4b07e5 100644 --- a/frontend/src/api/imap_migration/providers.js +++ b/frontend/src/api/imap_migration/providers.js @@ -3,28 +3,28 @@ import repository from '@/api/repository' const resource = 'email-providers' export default { - getProviders(params) { - return repository.get(`/${resource}/`, { params }) - }, - getProvider(providerId) { - return repository.get(`/${resource}/${providerId}/`) - }, - createProvider(params) { - return repository.post(`/${resource}/`, params) - }, - updateProvider(slug, params) { - return repository.put(`/${resource}/${slug}/`, params) - }, - patchProvider(providerId, params) { - return repository.patch(`/${resource}/${providerId}/`, params) - }, - deleteProvider(slug) { - return repository.delete(`/${resource}/${slug}/`) - }, - checkProvider(params) { - return repository.post(`/${resource}/check_connection/`, params) - }, - checkAssociatedDomain(params) { - return repository.post(`/${resource}/check_associated_domain/`, params) - }, + getProviders(params) { + return repository.get(`/${resource}/`, { params }) + }, + getProvider(providerId) { + return repository.get(`/${resource}/${providerId}/`) + }, + createProvider(params) { + return repository.post(`/${resource}/`, params) + }, + updateProvider(slug, params) { + return repository.put(`/${resource}/${slug}/`, params) + }, + patchProvider(providerId, params) { + return repository.patch(`/${resource}/${providerId}/`, params) + }, + deleteProvider(slug) { + return repository.delete(`/${resource}/${slug}/`) + }, + checkProvider(params) { + return repository.post(`/${resource}/check_connection/`, params) + }, + checkAssociatedDomain(params) { + return repository.post(`/${resource}/check_associated_domain/`, params) + }, } diff --git a/frontend/src/api/languages.js b/frontend/src/api/languages.js index 022de5c88..b7c177a63 100644 --- a/frontend/src/api/languages.js +++ b/frontend/src/api/languages.js @@ -3,7 +3,7 @@ import repository from './repository' const resource = 'languages' export default { - getAll() { - return repository.get(`/${resource}/`) - }, + getAll() { + return repository.get(`/${resource}/`) + }, } diff --git a/frontend/src/api/logs.js b/frontend/src/api/logs.js index 6fd0171c1..d5d4711c6 100644 --- a/frontend/src/api/logs.js +++ b/frontend/src/api/logs.js @@ -3,10 +3,10 @@ import repository from './repository' const resource = 'logs' export default { - getAuditTrail(params) { - return repository.get(`/${resource}/audit-trail/`, { params }) - }, - getMessages(params) { - return repository.get(`/${resource}/messages/`, { params }) - }, + getAuditTrail(params) { + return repository.get(`/${resource}/audit-trail/`, { params }) + }, + getMessages(params) { + return repository.get(`/${resource}/messages/`, { params }) + }, } diff --git a/frontend/src/api/parameters.js b/frontend/src/api/parameters.js index fb3140b17..142542a86 100644 --- a/frontend/src/api/parameters.js +++ b/frontend/src/api/parameters.js @@ -3,16 +3,16 @@ import repository from './repository' const resource = 'parameters' export default { - getApplications() { - return repository.get(`/${resource}/applications/`) - }, - getApplication(app) { - return repository.get(`/${resource}/${app}/`) - }, - getApplicationStructure(app) { - return repository.get(`/${resource}/structure/?app=${app}`) - }, - saveApplication(app, data) { - return repository.put(`/${resource}/${app}/`, data) - }, + getApplications() { + return repository.get(`/${resource}/applications/`) + }, + getApplication(app) { + return repository.get(`/${resource}/${app}/`) + }, + getApplicationStructure(app) { + return repository.get(`/${resource}/structure/?app=${app}`) + }, + saveApplication(app, data) { + return repository.put(`/${resource}/${app}/`, data) + }, } diff --git a/frontend/src/api/repository.js b/frontend/src/api/repository.js index 653af7ec3..70bcf22f7 100644 --- a/frontend/src/api/repository.js +++ b/frontend/src/api/repository.js @@ -6,68 +6,71 @@ import { useAuthStore } from '@/stores' const _axios = axios.create() _axios.interceptors.request.use( - function (config) { - const authStore = useAuthStore() - // Do something before request is sent - if (authStore.isAuthenticated) { - config.headers['Accept-Language'] = authStore.authUser.language + function (config) { + const authStore = useAuthStore() + // Do something before request is sent + if (authStore.isAuthenticated) { + config.headers['Accept-Language'] = authStore.authUser.language + } + return config + }, + function (error) { + // Do something with request error + return Promise.reject(error) } - return config - }, - function (error) { - // Do something with request error - return Promise.reject(error) - } ) // Add a response interceptor _axios.interceptors.response.use( - function (response) { - // Do something with response data - return response - }, - function (error) { - if (error.response.status === 418) { - router.push({ name: 'TwoFA' }) - return Promise.reject(error) - } - if (error.response.status === 429) { - return Promise.reject(error) - } - if (error.response.status !== 401 || router.currentRoute.name === 'Login') { - return Promise.reject(error) - } - const refreshToken = Cookies.get('refreshToken') - const authStore = useAuthStore() - if (error.config.url.endsWith('/token/refresh/') || !refreshToken) { - authStore.$reset() - if (router.currentRoute.name !== 'Login') { - router.push({ name: 'Login' }) - } - return Promise.reject(error) - } - return _axios - .post('/token/refresh/', { refresh: refreshToken }) - .then((resp) => { - Cookies.set('token', resp.data.access, { sameSite: 'strict' }) - _axios.defaults.headers.common.Authorization = `Bearer ${resp.data.access}` - const config = error.config - config.headers.Authorization = `Bearer ${resp.data.access}` - return new Promise((resolve, reject) => { - _axios - .request(config) + function (response) { + // Do something with response data + return response + }, + function (error) { + if (error.response.status === 418) { + router.push({ name: 'TwoFA' }) + return Promise.reject(error) + } + if (error.response.status === 429) { + return Promise.reject(error) + } + if ( + error.response.status !== 401 || + router.currentRoute.name === 'Login' + ) { + return Promise.reject(error) + } + const refreshToken = Cookies.get('refreshToken') + const authStore = useAuthStore() + if (error.config.url.endsWith('/token/refresh/') || !refreshToken) { + authStore.$reset() + if (router.currentRoute.name !== 'Login') { + router.push({ name: 'Login' }) + } + return Promise.reject(error) + } + return _axios + .post('/token/refresh/', { refresh: refreshToken }) .then((resp) => { - resolve(resp) + Cookies.set('token', resp.data.access, { sameSite: 'strict' }) + _axios.defaults.headers.common.Authorization = `Bearer ${resp.data.access}` + const config = error.config + config.headers.Authorization = `Bearer ${resp.data.access}` + return new Promise((resolve, reject) => { + _axios + .request(config) + .then((resp) => { + resolve(resp) + }) + .catch((error) => { + reject(error) + }) + }) }) .catch((error) => { - reject(error) + Promise.reject(error) }) - }) - }) - .catch((error) => { - Promise.reject(error) - }) - } + } ) export default _axios diff --git a/frontend/src/api/senderAddresses.js b/frontend/src/api/senderAddresses.js index 3aca20952..b08bb911c 100644 --- a/frontend/src/api/senderAddresses.js +++ b/frontend/src/api/senderAddresses.js @@ -3,16 +3,18 @@ import repository from './repository' const resource = 'senderaddresses' export default { - getAll() { - return repository.get(`${resource}/`) - }, - getAllForMailbox(mailboxId) { - return repository.get(`${resource}/`, { params: { mailbox: mailboxId } }) - }, - create(data) { - return repository.post(`${resource}/`, data) - }, - delete(addressId) { - return repository.delete(`${resource}/${addressId}/`) - }, + getAll() { + return repository.get(`${resource}/`) + }, + getAllForMailbox(mailboxId) { + return repository.get(`${resource}/`, { + params: { mailbox: mailboxId }, + }) + }, + create(data) { + return repository.post(`${resource}/`, data) + }, + delete(addressId) { + return repository.delete(`${resource}/${addressId}/`) + }, } diff --git a/frontend/src/api/statistics.js b/frontend/src/api/statistics.js index 5a533319d..259df9ec8 100644 --- a/frontend/src/api/statistics.js +++ b/frontend/src/api/statistics.js @@ -3,15 +3,15 @@ import repository from './repository' const resource = 'statistics' export default { - getStatistics({ graphSet, period, graphicName, searchQuery, start, end }) { - const args = { - gset: graphSet, - period, - graphic: graphicName, - searchquery: searchQuery, - start: start, - end: end, - } - return repository.get(`${resource}/`, { params: args }) - }, + getStatistics({ graphSet, period, graphicName, searchQuery, start, end }) { + const args = { + gset: graphSet, + period, + graphic: graphicName, + searchquery: searchQuery, + start: start, + end: end, + } + return repository.get(`${resource}/`, { params: args }) + }, } diff --git a/frontend/src/api/transports.js b/frontend/src/api/transports.js index 35227fd57..bd324d2ee 100644 --- a/frontend/src/api/transports.js +++ b/frontend/src/api/transports.js @@ -3,7 +3,7 @@ import repository from './repository' const resource = 'transports' export default { - getAll() { - return repository.get(`/${resource}/`) - }, + getAll() { + return repository.get(`/${resource}/`) + }, } diff --git a/frontend/src/components/account/ForwardForm.vue b/frontend/src/components/account/ForwardForm.vue index 4610c0e8e..3a16b50fc 100644 --- a/frontend/src/components/account/ForwardForm.vue +++ b/frontend/src/components/account/ForwardForm.vue @@ -1,31 +1,40 @@ diff --git a/frontend/src/components/account/ProfileForm.vue b/frontend/src/components/account/ProfileForm.vue index 64563e34f..11c0b0e0a 100644 --- a/frontend/src/components/account/ProfileForm.vue +++ b/frontend/src/components/account/ProfileForm.vue @@ -1,83 +1,102 @@ diff --git a/frontend/src/components/account/RecoveryCodesResetDialog.vue b/frontend/src/components/account/RecoveryCodesResetDialog.vue index af4eac6ec..e1eb71d28 100644 --- a/frontend/src/components/account/RecoveryCodesResetDialog.vue +++ b/frontend/src/components/account/RecoveryCodesResetDialog.vue @@ -1,29 +1,29 @@ diff --git a/frontend/src/components/account/TwoFactorAuthForm.vue b/frontend/src/components/account/TwoFactorAuthForm.vue index d8d538029..9b476fd26 100644 --- a/frontend/src/components/account/TwoFactorAuthForm.vue +++ b/frontend/src/components/account/TwoFactorAuthForm.vue @@ -1,122 +1,135 @@ diff --git a/frontend/src/components/admin/alarms/AlarmList.vue b/frontend/src/components/admin/alarms/AlarmList.vue index ae90785c4..dabcb84b6 100644 --- a/frontend/src/components/admin/alarms/AlarmList.vue +++ b/frontend/src/components/admin/alarms/AlarmList.vue @@ -1,73 +1,77 @@