@live-change/user-frontend 0.9.131 → 0.9.133
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/front/locales/en.json +140 -0
- package/front/locales/pl.js +34 -0
- package/front/locales/pl.json +157 -0
- package/front/src/Index.vue +4 -2
- package/front/src/connected/ConnectEmail.vue +5 -5
- package/front/src/connected/ConnectPhone.vue +5 -5
- package/front/src/connected/Connected.vue +14 -11
- package/front/src/connected/accountTypes/UnknownAccountItem.vue +4 -1
- package/front/src/delete/Delete.vue +8 -6
- package/front/src/delete/DeleteFeedbackSent.vue +4 -3
- package/front/src/delete/DeleteFinished.vue +6 -3
- package/front/src/identification/IdentificationSettings.vue +6 -6
- package/front/src/locale/LocaleSettings.vue +7 -7
- package/front/src/message-auth/MessageLink.vue +10 -7
- package/front/src/message-auth/MessageSent.vue +23 -16
- package/front/src/password/ChangePassword.vue +10 -10
- package/front/src/password/ChangePasswordFinished.vue +4 -3
- package/front/src/password/ResetPassword.vue +2 -2
- package/front/src/password/ResetPasswordFinished.vue +4 -3
- package/front/src/password/ResetPasswordForm.vue +9 -9
- package/front/src/settings/Settings.vue +1 -1
- package/front/src/settings/SettingsMenu.vue +9 -9
- package/front/src/sign/SignInEmail.vue +9 -9
- package/front/src/sign/SignUpEmail.vue +9 -10
- package/index.js +8 -2
- package/package.json +26 -26
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
|
|
4
4
|
<div class="text-center mb-8">
|
|
5
5
|
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
|
|
6
|
-
|
|
6
|
+
{{ t('settings.profile') }}
|
|
7
7
|
</div>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
<div class="p-field flex flex-col">
|
|
30
30
|
<InputText type="text" v-model="data.name"
|
|
31
31
|
:invalid="!!data.nameError"
|
|
32
|
-
class="p-inputtext-lg" placeholder="
|
|
32
|
+
class="p-inputtext-lg" :placeholder="t('settings.yourName')" />
|
|
33
33
|
<Message v-if="data.nameError" severity="error" variant="simple" size="small">
|
|
34
34
|
{{ t(`errors.${data.nameError}`) }}
|
|
35
35
|
</Message>
|
|
36
36
|
</div>
|
|
37
|
-
<Button type="submit" label="
|
|
37
|
+
<Button type="submit" :label="t('settings.saveName')" class="mt-4" icon="pi pi-save" />
|
|
38
38
|
</command-form>
|
|
39
39
|
</div>
|
|
40
40
|
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
function openImageEditor() {
|
|
84
84
|
dialog.open(ComponentDialog, {
|
|
85
85
|
props: {
|
|
86
|
-
header: '
|
|
86
|
+
header: t('settings.imageEditor'),
|
|
87
87
|
style: {
|
|
88
88
|
width: '50vw',
|
|
89
89
|
},
|
|
@@ -107,14 +107,14 @@
|
|
|
107
107
|
console.log("WZ", workingZone)
|
|
108
108
|
workingZone.addPromise('update user image', (async () => {
|
|
109
109
|
await api.command(['userIdentification', updateMethod.value], { image: data?.value })
|
|
110
|
-
toast.add({ severity:'info', summary: '
|
|
110
|
+
toast.add({ severity:'info', summary: t('settings.userImageSaved'), life: 1500 })
|
|
111
111
|
})())
|
|
112
112
|
}
|
|
113
113
|
})
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
function handleNameSaved() {
|
|
117
|
-
toast.add({ severity:'info', summary: '
|
|
117
|
+
toast.add({ severity:'info', summary: t('settings.userNameSaved'), life: 1500 })
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12">
|
|
3
3
|
|
|
4
4
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="localeSettings">
|
|
5
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
5
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('settings.localeSettings') }}</div>
|
|
6
6
|
|
|
7
7
|
<command-form service="localeSettings" action="setOrUpdateMyLocaleSettings"
|
|
8
8
|
:initialValues="{
|
|
@@ -17,19 +17,19 @@
|
|
|
17
17
|
|
|
18
18
|
<div class="p-field mb-4">
|
|
19
19
|
<label for="title" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
20
|
-
|
|
20
|
+
{{ t('settings.language') }}
|
|
21
21
|
</label>
|
|
22
22
|
<Dropdown v-model="data.language" :options="availableLocales"
|
|
23
23
|
:optionLabel="languageLabel" showClear
|
|
24
24
|
:filter="availableLocales.length > 10"
|
|
25
|
-
placeholder="
|
|
25
|
+
:placeholder="t('settings.autoDetect')"
|
|
26
26
|
class="w-full" />
|
|
27
27
|
<Message v-if="data.languageError" severity="error" variant="simple" size="small">
|
|
28
28
|
{{ t(`errors.${data.languageError}`) }}
|
|
29
29
|
</Message>
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
|
-
<Button type="submit" label="
|
|
32
|
+
<Button type="submit" :label="t('settings.apply')" class="mt-1" icon="pi pi-save" />
|
|
33
33
|
|
|
34
34
|
</command-form>
|
|
35
35
|
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
const { t, availableLocales, getLocaleMessage } = useI18n()
|
|
58
58
|
|
|
59
59
|
function languageLabel(option) {
|
|
60
|
-
console.log("LANGUAGE LABEL", option)
|
|
61
|
-
if(!option) return
|
|
60
|
+
//console.log("LANGUAGE LABEL", option)
|
|
61
|
+
if(!option) return `${t('settings.autoDetect')} (${navigator.language})`
|
|
62
62
|
return getLocaleMessage(option).languageName ?? option
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
const [localeSettings] = await Promise.all([live(localePath)])
|
|
70
70
|
|
|
71
71
|
function handleSettingsUpdated({ parameters, result }) {
|
|
72
|
-
toast.add({ severity: 'success', summary: '
|
|
72
|
+
toast.add({ severity: 'success', summary: t('settings.settingsUpdated'), detail: t('settings.localeSettingsSaved') })
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
</script>
|
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
|
|
4
4
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isUnknown && !isRedirecting">
|
|
5
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
5
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.unknownLink') }}</div>
|
|
6
6
|
<p class="mt-0 mb-2 p-0 leading-normal">
|
|
7
|
-
|
|
7
|
+
{{ t('auth.unknownLinkDesc') }}
|
|
8
8
|
</p>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isUsed && !isRedirecting">
|
|
12
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
12
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.linkUsed') }}</div>
|
|
13
13
|
<p class="mt-0 mb-2 p-0 leading-normal">
|
|
14
|
-
|
|
14
|
+
{{ t('auth.linkUsedDesc') }}
|
|
15
15
|
</p>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isExpired && !isUsed && !isRedirecting">
|
|
19
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
19
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.linkExpired') }}</div>
|
|
20
20
|
<p class="mt-0 mb-6 p-0 leading-normal">
|
|
21
|
-
|
|
21
|
+
{{ t('messageAuth.linkExpiredDesc') }}
|
|
22
22
|
</p>
|
|
23
|
-
<Button label="
|
|
23
|
+
<Button :label="t('messageAuth.resend')" class="p-button-lg" @click="resend"></Button>
|
|
24
24
|
</div>
|
|
25
25
|
|
|
26
26
|
<div v-if="isReady || isRedirecting"
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
import { useNow } from '@vueuse/core'
|
|
40
40
|
import { path, live, actions } from '@live-change/vue3-ssr'
|
|
41
41
|
|
|
42
|
+
import { useI18n } from 'vue-i18n'
|
|
43
|
+
const { t } = useI18n()
|
|
44
|
+
|
|
42
45
|
const { secretCode } = defineProps({
|
|
43
46
|
secretCode: {
|
|
44
47
|
type: String,
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6"
|
|
4
4
|
v-if="authenticationData?.state === 'used' && !submitted">
|
|
5
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
6
|
-
<p class="mt-0 mb-1 p-0 leading-normal">
|
|
5
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('messageAuth.authenticationDone') }}</div>
|
|
6
|
+
<p class="mt-0 mb-1 p-0 leading-normal">{{ t('messageAuth.authenticatedInDifferentTab') }}</p>
|
|
7
7
|
</div>
|
|
8
8
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-else>
|
|
9
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{
|
|
10
|
-
<p class="mt-0 mb-1 p-0 leading-normal">{{
|
|
11
|
-
<p class="mt-0 mb-6 p-0 leading-normal">{{
|
|
9
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ localizedTitle }}</div>
|
|
10
|
+
<p class="mt-0 mb-1 p-0 leading-normal">{{ localizedDescription }}</p>
|
|
11
|
+
<p class="mt-0 mb-6 p-0 leading-normal">{{ localizedCallToAction }}</p>
|
|
12
12
|
<Secured :events="['wrong-secret-code']" :actions="['checkSecretCode']">
|
|
13
13
|
<command-form service="messageAuthentication" action="finishMessageAuthentication"
|
|
14
14
|
:parameters="{ secretType: 'code', authentication }" :key="authentication"
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
v-slot="{ data }">
|
|
18
18
|
<div class="flex justify-center flex-col items-center">
|
|
19
19
|
<div class="p-field mx-1 flex flex-col items-center mb-4">
|
|
20
|
-
<label for="code" class="sr-only">
|
|
20
|
+
<label for="code" class="sr-only">{{ t('messageAuth.code') }}</label>
|
|
21
21
|
<!-- <InputOtp id="code" :length="6" class="mb-2"
|
|
22
22
|
v-model="data.secret"
|
|
23
23
|
aria-describedby="code-help" :invalid="!!data.secretError" /> -->
|
|
24
|
-
<InputMask id="code" class="p-inputtext-lg w-[7rem] text-center" mask="999999" slotChar="######" placeholder="
|
|
24
|
+
<InputMask id="code" class="p-inputtext-lg w-[7rem] text-center" mask="999999" slotChar="######" :placeholder="t('messageAuth.code')"
|
|
25
25
|
v-model="data.secret"
|
|
26
26
|
aria-describedby="code-help" :invalid="!!data.secretError" />
|
|
27
27
|
<Message v-if="data.secretError" severity="error" variant="simple">
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
</Message>
|
|
30
30
|
</div>
|
|
31
31
|
<div class="flex flex-col">
|
|
32
|
-
<Button label="
|
|
32
|
+
<Button :label="t('common.ok')" type="submit" class="p-button-lg grow-0"
|
|
33
33
|
:disableda="data.secret?.length < 6" />
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
<div v-if="data.secretError === 'codeExpired'" class="mt-4 text-center">
|
|
37
|
-
<p class="mt-0 mb-2 p-0 leading-normal">
|
|
38
|
-
<Button label="
|
|
37
|
+
<p class="mt-0 mb-2 p-0 leading-normal">{{ t('messageAuth.toSendAnotherCode') }}</p>
|
|
38
|
+
<Button :label="t('messageAuth.resendSecretCode')" class="p-button-lg" @click="resend" />
|
|
39
39
|
</div>
|
|
40
40
|
</command-form>
|
|
41
41
|
</Secured>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
import { useRouter } from 'vue-router'
|
|
54
54
|
const router = useRouter()
|
|
55
|
-
import { ref } from 'vue'
|
|
55
|
+
import { ref, computed } from 'vue'
|
|
56
56
|
|
|
57
57
|
import { useToast } from 'primevue/usetoast'
|
|
58
58
|
const toast = useToast()
|
|
@@ -60,25 +60,32 @@
|
|
|
60
60
|
import { useI18n } from 'vue-i18n'
|
|
61
61
|
const { t } = useI18n()
|
|
62
62
|
|
|
63
|
-
const
|
|
63
|
+
const props = defineProps({
|
|
64
64
|
authentication: {
|
|
65
65
|
type: String,
|
|
66
66
|
required: true
|
|
67
67
|
},
|
|
68
68
|
title: {
|
|
69
69
|
type: String,
|
|
70
|
-
default:
|
|
70
|
+
default: null,
|
|
71
71
|
},
|
|
72
72
|
description: {
|
|
73
73
|
type: String,
|
|
74
|
-
default:
|
|
74
|
+
default: null,
|
|
75
75
|
},
|
|
76
76
|
callToAction: {
|
|
77
77
|
type: String,
|
|
78
|
-
default:
|
|
78
|
+
default: null,
|
|
79
79
|
},
|
|
80
80
|
})
|
|
81
81
|
|
|
82
|
+
const { authentication } = props
|
|
83
|
+
|
|
84
|
+
// Computed properties for localized texts
|
|
85
|
+
const localizedTitle = computed(() => props.title || t('messageAuth.messageSent'))
|
|
86
|
+
const localizedDescription = computed(() => props.description || t('messageAuth.messageSentDescription'))
|
|
87
|
+
const localizedCallToAction = computed(() => props.callToAction || t('messageAuth.callToAction'))
|
|
88
|
+
|
|
82
89
|
function handleAuthenticated({ parameters, result }) {
|
|
83
90
|
const { targetPage } = result
|
|
84
91
|
console.log("TARGET ROUTE", targetPage)
|
|
@@ -107,7 +114,7 @@
|
|
|
107
114
|
authentication
|
|
108
115
|
})
|
|
109
116
|
if(form.value) form.value.reset()
|
|
110
|
-
toast.add({ severity: 'success', summary: '
|
|
117
|
+
toast.add({ severity: 'success', summary: t('messageAuth.codeSent'), detail: t('messageAuth.newCodeSent') })
|
|
111
118
|
|
|
112
119
|
router.push({
|
|
113
120
|
name: 'user:sent',
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
|
|
5
5
|
<div class="text-center mb-8">
|
|
6
6
|
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
|
|
7
|
-
{{ passwordExists ? '
|
|
7
|
+
{{ passwordExists ? t('auth.changePassword') : t('auth.setPassword') }}
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<template v-if="isMounted">
|
|
16
16
|
|
|
17
17
|
<div class="p-field mb-4" v-if="passwordExists">
|
|
18
|
-
<label for="currentPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
18
|
+
<label for="currentPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.currentPassword') }}</label>
|
|
19
19
|
<Password id="currentPassword" class="w-full" inputClass="w-full"
|
|
20
20
|
toggle-mask v-model:masked="masked"
|
|
21
21
|
:invalid="!!data.currentPasswordHashError"
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="p-field mb-4">
|
|
29
|
-
<label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
29
|
+
<label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.newPassword') }}</label>
|
|
30
30
|
<Password id="newPassword" class="w-full" inputClass="w-full"
|
|
31
31
|
toggle-mask v-model:masked="masked"
|
|
32
32
|
:invalid="!!data.passwordHashError"
|
|
33
33
|
v-model="data.passwordHash">
|
|
34
34
|
<template #footer>
|
|
35
35
|
<Divider />
|
|
36
|
-
<p class="p-mt-2">
|
|
36
|
+
<p class="p-mt-2">{{ t('auth.passwordSuggestions') }}</p>
|
|
37
37
|
<ul class="p-pl-2 p-ml-2 p-mt-0" style="line-height: 1.5">
|
|
38
|
-
<li>
|
|
39
|
-
<li>
|
|
40
|
-
<li>
|
|
41
|
-
<li>
|
|
38
|
+
<li>{{ t('auth.suggestionLowercase') }}</li>
|
|
39
|
+
<li>{{ t('auth.suggestionUppercase') }}</li>
|
|
40
|
+
<li>{{ t('auth.suggestionNumeric') }}</li>
|
|
41
|
+
<li>{{ t('auth.suggestionMinLength') }}</li>
|
|
42
42
|
</ul>
|
|
43
43
|
</template>
|
|
44
44
|
</Password>
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
50
|
<div class="p-field mb-4">
|
|
51
|
-
<label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
51
|
+
<label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.reenterPassword') }}</label>
|
|
52
52
|
<Password id="reenterPassword" class="w-full" inputClass="w-full"
|
|
53
53
|
toggle-mask v-model:masked="masked"
|
|
54
54
|
v-model="secondPassword"
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
|
|
58
58
|
</template>
|
|
59
59
|
|
|
60
|
-
<Button :label="passwordExists ? '
|
|
60
|
+
<Button :label="passwordExists ? t('auth.changePassword') : t('auth.setPassword')"
|
|
61
61
|
type="submit"
|
|
62
62
|
icon="pi pi-key" class="w-full"></Button>
|
|
63
63
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
|
|
4
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">
|
|
5
|
-
<p class="mt-0 p-0 leading-normal">
|
|
4
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">{{ t('auth.passwordChanged') }}</div>
|
|
5
|
+
<p class="mt-0 p-0 leading-normal">{{ t('auth.passwordChangedSuccess') }}</p>
|
|
6
6
|
</div>
|
|
7
7
|
</div>
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<script setup>
|
|
11
|
-
|
|
11
|
+
import { useI18n } from 'vue-i18n'
|
|
12
|
+
const { t } = useI18n()
|
|
12
13
|
</script>
|
|
13
14
|
|
|
14
15
|
<style>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
|
|
4
4
|
<div class="text-center mb-8">
|
|
5
|
-
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
|
|
5
|
+
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">{{ t('auth.resetPassword') }}</div>
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
8
|
<command-form service="passwordAuthentication" action="resetPasswordEmail" v-slot="{ data }"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</Message>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
-
<Button type="submit" label="
|
|
23
|
+
<Button type="submit" :label="t('auth.resetPassword')" icon="pi pi-key" class="w-full"></Button>
|
|
24
24
|
|
|
25
25
|
</command-form>
|
|
26
26
|
</div>
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
|
|
4
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">
|
|
5
|
-
<p class="mt-0 p-0 leading-normal">
|
|
4
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">{{ t('auth.passwordChanged') }}</div>
|
|
5
|
+
<p class="mt-0 p-0 leading-normal">{{ t('auth.passwordResetSuccess') }}</p>
|
|
6
6
|
</div>
|
|
7
7
|
</div>
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<script setup>
|
|
11
|
-
|
|
11
|
+
import { useI18n } from 'vue-i18n'
|
|
12
|
+
const { t } = useI18n()
|
|
12
13
|
</script>
|
|
13
14
|
|
|
14
15
|
<style>
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isUnknown">
|
|
4
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
5
|
-
<p class="mt-0 mb-2 p-0 leading-normal">
|
|
4
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.unknownLink') }}</div>
|
|
5
|
+
<p class="mt-0 mb-2 p-0 leading-normal">{{ t('auth.unknownLinkDesc') }}</p>
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
8
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isUsed">
|
|
9
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
10
|
-
<p class="mt-0 mb-2 p-0 leading-normal">
|
|
9
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.linkUsed') }}</div>
|
|
10
|
+
<p class="mt-0 mb-2 p-0 leading-normal">{{ t('auth.linkUsedDesc') }}</p>
|
|
11
11
|
</div>
|
|
12
12
|
|
|
13
13
|
<div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6" v-if="isExpired && !isUsed">
|
|
14
|
-
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">
|
|
15
|
-
<p class="mt-0 mb-6 p-0 leading-normal">
|
|
14
|
+
<div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl">{{ t('auth.linkExpired') }}</div>
|
|
15
|
+
<p class="mt-0 mb-6 p-0 leading-normal">{{ t('auth.linkExpiredDesc') }}</p>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border" v-if="isReady || working">
|
|
19
19
|
<div class="text-center mb-8">
|
|
20
|
-
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
|
|
20
|
+
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">{{ t('auth.resetPassword') }}</div>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<command-form service="passwordAuthentication" action="finishResetPassword" v-slot="{ data }"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
<template v-if="isMounted">
|
|
29
29
|
<div class="p-field mb-4">
|
|
30
|
-
<label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
30
|
+
<label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.newPassword') }}</label>
|
|
31
31
|
<Password id="newPassword" class="w-full" inputClass="w-full" toggleMask
|
|
32
32
|
:invalid="!!data.passwordHashError"
|
|
33
33
|
v-model="data.passwordHash">
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
50
|
<div class="p-field mb-4">
|
|
51
|
-
<label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
51
|
+
<label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.reenterPassword') }}</label>
|
|
52
52
|
<Password id="reenterPassword" class="w-full" inputClass="w-full"
|
|
53
53
|
v-model="secondPassword"
|
|
54
54
|
:feedback="false" toggleMask />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="flex relative lg:static bg-surface-50 dark:bg-surface-950"
|
|
3
|
-
style="height: calc(100vh - 88px)">
|
|
3
|
+
style="min-height: calc(100vh - 88px)">
|
|
4
4
|
<div id="settings-menu"
|
|
5
5
|
class="bg-surface-0 dark:bg-surface-950 flex-shrink-0 absolute left-0 h-full
|
|
6
6
|
top-0 z-1 border-r-1 border-r-surface-300 dark:border-r-surface-700 select-none
|
|
@@ -3,36 +3,36 @@
|
|
|
3
3
|
<div class="overflow-y-auto">
|
|
4
4
|
<ul class="list-none p-2 m-0">
|
|
5
5
|
<li>
|
|
6
|
-
<div class="p-4 text-surface-500 dark:text-surface-300 font-medium">
|
|
6
|
+
<div class="p-4 text-surface-500 dark:text-surface-300 font-medium">{{ t('settings.settings') }}</div>
|
|
7
7
|
</li>
|
|
8
8
|
|
|
9
|
-
<SettingsMenuItem name="user:identification" icon="id-card" label="
|
|
9
|
+
<SettingsMenuItem name="user:identification" icon="id-card" :label="t('settings.identification')" class="hidden md:block" />
|
|
10
10
|
|
|
11
11
|
<SettingsMenuItem v-if="client.user"
|
|
12
|
-
name="user:settings" icon="cog" label="
|
|
12
|
+
name="user:settings" icon="cog" :label="t('settings.generalSettings')" class="hidden md:block" />
|
|
13
13
|
|
|
14
14
|
<SettingsMenuItem v-if="(availableLocales?.length ?? 0) > 1"
|
|
15
|
-
name="user:locale" icon="language" label="
|
|
15
|
+
name="user:locale" icon="language" :label="t('settings.languageAndLocale')" class="hidden md:block" />
|
|
16
16
|
|
|
17
17
|
<SettingsMenuItem v-if="clientConfig.notifications?.length"
|
|
18
|
-
name="user:notificationsSettings" icon="exclamation-circle" label="
|
|
18
|
+
name="user:notificationsSettings" icon="exclamation-circle" :label="t('settings.notifications')" />
|
|
19
19
|
|
|
20
20
|
</ul>
|
|
21
21
|
|
|
22
22
|
<ul v-if="client.user" class="list-none p-2 m-0 border-t border-surface">
|
|
23
23
|
<li>
|
|
24
|
-
<div class="p-4 text-surface-500 dark:text-surface-300 font-medium">
|
|
24
|
+
<div class="p-4 text-surface-500 dark:text-surface-300 font-medium">{{ t('settings.authorization') }}</div>
|
|
25
25
|
</li>
|
|
26
26
|
|
|
27
|
-
<SettingsMenuItem v-if="client.user" name="user:connected" icon="users" label="
|
|
27
|
+
<SettingsMenuItem v-if="client.user" name="user:connected" icon="users" :label="t('settings.connectedAccounts')" />
|
|
28
28
|
|
|
29
|
-
<SettingsMenuItem v-if="client.user" name="user:changePassword" icon="key" label="
|
|
29
|
+
<SettingsMenuItem v-if="client.user" name="user:changePassword" icon="key" :label="t('settings.changePassword')" />
|
|
30
30
|
|
|
31
31
|
</ul>
|
|
32
32
|
|
|
33
33
|
<ul v-if="client.user" class="list-none p-2 m-0 border-t border-surface">
|
|
34
34
|
|
|
35
|
-
<SettingsMenuItem v-if="client.user" name="user:delete" icon="trash" label="
|
|
35
|
+
<SettingsMenuItem v-if="client.user" name="user:delete" icon="trash" :label="t('settings.deleteAccount')" />
|
|
36
36
|
|
|
37
37
|
</ul>
|
|
38
38
|
</div>
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
|
|
4
4
|
|
|
5
5
|
<div class="text-center mb-8">
|
|
6
|
-
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
|
|
7
|
-
<span class="text-surface-600 dark:text-surface-200 font-medium leading-normal">
|
|
6
|
+
<div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">{{ t('auth.welcomeBack') }}</div>
|
|
7
|
+
<span class="text-surface-600 dark:text-surface-200 font-medium leading-normal">{{ t('auth.dontHaveAccount') }}</span>
|
|
8
8
|
<router-link :to="{ name: 'user:signUpEmail' }"
|
|
9
9
|
class="font-medium no-underline ml-2 text-blue-500 cursor-pointer">
|
|
10
|
-
|
|
10
|
+
{{ t('auth.createToday') }}</router-link>
|
|
11
11
|
</div>
|
|
12
12
|
|
|
13
13
|
<command-form service="passwordAuthentication" action="signInEmail" v-slot="{ data }"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
<div class="p-field mb-4">
|
|
17
17
|
<label for="email" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
18
|
-
|
|
18
|
+
{{ t('auth.emailAddress') }}
|
|
19
19
|
</label>
|
|
20
20
|
<InputText id="email" type="text" class="w-full"
|
|
21
21
|
aria-describedby="email-help" :invalid="data.emailError"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="p-field mb-4">
|
|
29
|
-
<label for="password" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
|
|
29
|
+
<label for="password" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.passwordOptional') }}</label>
|
|
30
30
|
<Password id="password" class="w-full" inputClass="w-full" toggleMask :feedback="false"
|
|
31
31
|
aria-describedby="password-help" :invalid="data.passwordHashError"
|
|
32
32
|
v-model="data.passwordHash" />
|
|
@@ -43,23 +43,23 @@
|
|
|
43
43
|
</div>-->
|
|
44
44
|
<router-link :to="{ name: 'user:resetPassword' }"
|
|
45
45
|
class="font-medium no-underline ml-2 text-blue-500 text-right cursor-pointer">
|
|
46
|
-
|
|
46
|
+
{{ t('auth.forgotPassword') }}
|
|
47
47
|
</router-link>
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
|
-
<Button label="
|
|
50
|
+
<Button :label="t('auth.signIn')" icon="pi pi-user" class="w-full" type="submit"></Button>
|
|
51
51
|
|
|
52
52
|
</command-form>
|
|
53
53
|
|
|
54
54
|
<Divider v-if="availableAccountTypes.length > 0" align="center" class="my-6">
|
|
55
|
-
<span class="text-surface-600 dark:text-surface-200 font-normal text-sm">
|
|
55
|
+
<span class="text-surface-600 dark:text-surface-200 font-normal text-sm">{{ t('common.or') }}</span>
|
|
56
56
|
</Divider>
|
|
57
57
|
|
|
58
58
|
<router-link v-for="accountType in availableAccountTypes"
|
|
59
59
|
:to="accountType.connectRoute"
|
|
60
60
|
class="no-underline">
|
|
61
61
|
<Button
|
|
62
|
-
:label="
|
|
62
|
+
:label="t('auth.signInWith', { provider: accountType.accountType[0].toUpperCase() + accountType.accountType.slice(1) })"
|
|
63
63
|
:icon="`pi pi-${accountType.accountType}`"
|
|
64
64
|
class="w-full p-button-secondary mb-1"
|
|
65
65
|
/>
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
|
|
3
3
|
<div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
|
|
4
4
|
<div class="text-center mb-8">
|
|
5
|
-
<div class="text-surface-900 dark:text-surface-200 text-3xl font-medium mb-4">
|
|
6
|
-
<span class="text-surface-600 dark:text-surface-200 font-medium leading-normal">
|
|
5
|
+
<div class="text-surface-900 dark:text-surface-200 text-3xl font-medium mb-4">{{ t('auth.signUp') }}</div>
|
|
6
|
+
<span class="text-surface-600 dark:text-surface-200 font-medium leading-normal">{{ t('auth.alreadyHaveAccount') }}</span>
|
|
7
7
|
<router-link :to="{ name: 'user:signInEmail' }"
|
|
8
8
|
class="font-medium no-underline ml-2 text-blue-500 cursor-pointer">
|
|
9
|
-
|
|
9
|
+
{{ t('auth.signInToday') }}</router-link>
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
12
|
<command-form service="messageAuthentication" action="signUpEmail" v-slot="{ data, submit }"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
<div class="p-field mb-4">
|
|
16
16
|
<label for="email" class="block text-surface-900 dark:text-surface-200 font-medium mb-2">
|
|
17
|
-
|
|
17
|
+
{{ t('auth.emailAddress') }}
|
|
18
18
|
</label>
|
|
19
19
|
<InputText id="email" type="text" class="w-full"
|
|
20
20
|
aria-describedby="email-help" :invalid="!!data.emailError"
|
|
@@ -24,27 +24,26 @@
|
|
|
24
24
|
</Message>
|
|
25
25
|
</div>
|
|
26
26
|
|
|
27
|
-
<Button label="
|
|
27
|
+
<Button :label="t('auth.signUpWithEmail')" icon="pi pi-user" class="w-full" type="submit" />
|
|
28
28
|
</command-form>
|
|
29
29
|
|
|
30
30
|
<Divider v-if="availableAccountTypes.length > 0" align="center" class="my-6">
|
|
31
|
-
<b>
|
|
31
|
+
<b>{{ t('common.or') }}</b>
|
|
32
32
|
</Divider>
|
|
33
33
|
|
|
34
34
|
<router-link v-for="accountType in availableAccountTypes"
|
|
35
35
|
:to="accountType.connectRoute"
|
|
36
36
|
class="no-underline">
|
|
37
37
|
<Button
|
|
38
|
-
:label="
|
|
38
|
+
:label="t('auth.signUpWith', { provider: accountType.accountType[0].toUpperCase() + accountType.accountType.slice(1) })"
|
|
39
39
|
:icon="`pi pi-${accountType.accountType}`"
|
|
40
40
|
class="w-full p-button-secondary mb-1"
|
|
41
41
|
/>
|
|
42
42
|
</router-link>
|
|
43
43
|
|
|
44
44
|
<div class="mt-4 text-surface-600 dark:text-surface-200">
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<router-link to="/privacy-policy">Privacy Policy</router-link>.
|
|
45
|
+
{{ t('auth.privacyConsent') }}
|
|
46
|
+
<router-link to="/privacy-policy">{{ t('auth.privacyPolicy') }}</router-link>.
|
|
48
47
|
</div>
|
|
49
48
|
|
|
50
49
|
</div>
|
package/index.js
CHANGED
|
@@ -30,6 +30,12 @@ export * from './front/src/connected/connected.js'
|
|
|
30
30
|
export * from "./front/src/router.js"
|
|
31
31
|
|
|
32
32
|
import en from "./front/locales/en.json"
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
import pl from "./front/locales/pl.json"
|
|
34
|
+
const locales = { en, pl }
|
|
35
|
+
|
|
36
|
+
import * as enLocale from "./front/locales/en.js"
|
|
37
|
+
import * as plLocale from "./front/locales/pl.js"
|
|
38
|
+
const localeStructures = { en: enLocale, pl: plLocale }
|
|
39
|
+
|
|
40
|
+
export { locales, localeStructures }
|
|
35
41
|
|