|
@ -58,14 +58,13 @@ |
|
|
) |
|
|
) |
|
|
v-btn.mt-2.text-none( |
|
|
v-btn.mt-2.text-none( |
|
|
width='100%' |
|
|
width='100%' |
|
|
v-if='screen === "login"' |
|
|
|
|
|
large |
|
|
large |
|
|
color='primary' |
|
|
color='primary' |
|
|
dark |
|
|
dark |
|
|
@click='login' |
|
|
@click='login' |
|
|
:loading='isLoading' |
|
|
:loading='isLoading' |
|
|
) {{ $t('auth:actions.login') }} |
|
|
) {{ $t('auth:actions.login') }} |
|
|
.text-center.mt-5(v-if='screen === "login"') |
|
|
|
|
|
|
|
|
.text-center.mt-5 |
|
|
v-btn.text-none( |
|
|
v-btn.text-none( |
|
|
text |
|
|
text |
|
|
rounded |
|
|
rounded |
|
@ -74,153 +73,111 @@ |
|
|
href='#forgot' |
|
|
href='#forgot' |
|
|
): .caption {{ $t('auth:forgotPasswordLink') }} |
|
|
): .caption {{ $t('auth:forgotPasswordLink') }} |
|
|
v-btn.text-none( |
|
|
v-btn.text-none( |
|
|
v-if='screen === "login" && selectedStrategyKey === `local` && selectedStrategy.selfRegistration' |
|
|
|
|
|
|
|
|
v-if='selectedStrategyKey === `local` && selectedStrategy.selfRegistration' |
|
|
color='indigo darken-2' |
|
|
color='indigo darken-2' |
|
|
text |
|
|
text |
|
|
rounded |
|
|
rounded |
|
|
href='/register' |
|
|
href='/register' |
|
|
): .caption {{ $t('auth:switchToRegister.link') }} |
|
|
): .caption {{ $t('auth:switchToRegister.link') }} |
|
|
//- .login-main |
|
|
|
|
|
//- v-container(grid-list-lg, fluid) |
|
|
|
|
|
//- v-row(no-gutters) |
|
|
|
|
|
//- v-col(cols='12', xl='4') |
|
|
|
|
|
//- transition(name='fadeUp') |
|
|
|
|
|
//- v-card.elevation-5(v-show='isShown', light) |
|
|
|
|
|
//- v-toolbar(color='indigo', flat, dense, dark) |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- .subheading(v-if='screen === "tfa"') {{ $t('auth:tfa.subtitle') }} |
|
|
|
|
|
//- .subheading(v-if='screen === "changePwd"') {{ $t('auth:changePwd.subtitle') }} |
|
|
|
|
|
//- .subheading(v-else-if='selectedStrategy.key !== "local"') {{ $t('auth:loginUsingStrategy', { strategy: selectedStrategy.title, interpolation: { escapeValue: false } }) }} |
|
|
|
|
|
//- .subheading(v-else) {{ $t('auth:loginRequired') }} |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- v-card-text.text-center |
|
|
|
|
|
//- h1.display-1.indigo--text.py-2 {{ siteTitle }} |
|
|
|
|
|
//- template(v-if='screen === "login"') |
|
|
|
|
|
//- v-text-field.mt-3( |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- prepend-icon='mdi-clipboard-account' |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- ref='iptEmail' |
|
|
|
|
|
//- v-model='username' |
|
|
|
|
|
//- :placeholder='$t("auth:fields.emailUser")' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- v-text-field.mt-2( |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- prepend-icon='mdi-textbox-password' |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- ref='iptPassword' |
|
|
|
|
|
//- v-model='password' |
|
|
|
|
|
//- :append-icon='hidePassword ? "mdi-eye-off" : "mdi-eye"' |
|
|
|
|
|
//- @click:append='() => (hidePassword = !hidePassword)' |
|
|
|
|
|
//- :type='hidePassword ? "password" : "text"' |
|
|
|
|
|
//- :placeholder='$t("auth:fields.password")' |
|
|
|
|
|
//- @keyup.enter='login' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- template(v-else-if='screen === "tfa"') |
|
|
|
|
|
//- .body-2 Enter the security code generated from your trusted device: |
|
|
|
|
|
//- v-text-field.centered.mt-2( |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- ref='iptTFA' |
|
|
|
|
|
//- v-model='securityCode' |
|
|
|
|
|
//- :placeholder='$t("auth:tfa.placeholder")' |
|
|
|
|
|
//- @keyup.enter='verifySecurityCode' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- template(v-else-if='screen === "changePwd"') |
|
|
|
|
|
//- .body-2 {{$t('auth:changePwd.instructions')}} |
|
|
|
|
|
//- v-text-field.mt-2( |
|
|
|
|
|
//- type='password' |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- ref='iptNewPassword' |
|
|
|
|
|
//- v-model='newPassword' |
|
|
|
|
|
//- :placeholder='$t(`auth:changePwd.newPasswordPlaceholder`)' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- v-text-field.mt-2( |
|
|
|
|
|
//- type='password' |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- v-model='newPasswordVerify' |
|
|
|
|
|
//- :placeholder='$t(`auth:changePwd.newPasswordVerifyPlaceholder`)' |
|
|
|
|
|
//- @keyup.enter='changePassword' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- template(v-else-if='screen === "forgot"') |
|
|
|
|
|
//- .body-2 {{ $t('auth:forgotPasswordSubtitle') }} |
|
|
|
|
|
//- v-text-field.mt-3( |
|
|
|
|
|
//- solo |
|
|
|
|
|
//- flat |
|
|
|
|
|
//- prepend-icon='mdi-email' |
|
|
|
|
|
//- background-color='grey lighten-4' |
|
|
|
|
|
//- hide-details |
|
|
|
|
|
//- ref='iptEmailForgot' |
|
|
|
|
|
//- v-model='username' |
|
|
|
|
|
//- :placeholder='$t("auth:fields.email")' |
|
|
|
|
|
//- ) |
|
|
|
|
|
//- v-card-actions.pb-4 |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- v-btn( |
|
|
|
|
|
//- width='100%' |
|
|
|
|
|
//- max-width='250px' |
|
|
|
|
|
//- v-if='screen === "login"' |
|
|
|
|
|
//- large |
|
|
|
|
|
//- color='primary' |
|
|
|
|
|
//- dark |
|
|
|
|
|
//- @click='login' |
|
|
|
|
|
//- rounded |
|
|
|
|
|
//- :loading='isLoading' |
|
|
|
|
|
//- ) {{ $t('auth:actions.login') }} |
|
|
|
|
|
//- v-btn( |
|
|
|
|
|
//- width='100%' |
|
|
|
|
|
//- max-width='250px' |
|
|
|
|
|
//- v-else-if='screen === "tfa"' |
|
|
|
|
|
//- large |
|
|
|
|
|
//- color='primary' |
|
|
|
|
|
//- dark |
|
|
|
|
|
//- @click='verifySecurityCode' |
|
|
|
|
|
//- rounded |
|
|
|
|
|
//- :loading='isLoading' |
|
|
|
|
|
//- ) {{ $t('auth:tfa.verifyToken') }} |
|
|
|
|
|
//- v-btn( |
|
|
|
|
|
//- width='100%' |
|
|
|
|
|
//- max-width='250px' |
|
|
|
|
|
//- v-else-if='screen === "changePwd"' |
|
|
|
|
|
//- large |
|
|
|
|
|
//- color='primary' |
|
|
|
|
|
//- dark |
|
|
|
|
|
//- @click='changePassword' |
|
|
|
|
|
//- rounded |
|
|
|
|
|
//- :loading='isLoading' |
|
|
|
|
|
//- ) {{ $t('auth:changePwd.proceed') }} |
|
|
|
|
|
//- v-btn( |
|
|
|
|
|
//- width='100%' |
|
|
|
|
|
//- max-width='250px' |
|
|
|
|
|
//- v-else-if='screen === "forgot"' |
|
|
|
|
|
//- large |
|
|
|
|
|
//- color='primary' |
|
|
|
|
|
//- dark |
|
|
|
|
|
//- @click='forgotPasswordSubmit' |
|
|
|
|
|
//- rounded |
|
|
|
|
|
//- :loading='isLoading' |
|
|
|
|
|
//- ) {{ $t('auth:sendResetPassword') }} |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- v-card-actions.pb-3(v-if='screen === "login" && selectedStrategy.key === "local"') |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- a.caption(@click.stop.prevent='forgotPassword', href='#forgot') {{ $t('auth:forgotPasswordLink') }} |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- v-card-actions.pb-3(v-else-if='screen === "forgot"') |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
//- a.caption(@click.stop.prevent='screen = `login`', href='#cancelforgot') {{ $t('auth:forgotPasswordCancel') }} |
|
|
|
|
|
//- v-spacer |
|
|
|
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
//- FORGOT PASSWORD FORM |
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
template(v-if='screen === `forgot`') |
|
|
|
|
|
.login-subtitle |
|
|
|
|
|
.text-subtitle-1 Forgot your password |
|
|
|
|
|
.login-info {{ $t('auth:forgotPasswordSubtitle') }} |
|
|
|
|
|
.login-form |
|
|
|
|
|
v-text-field( |
|
|
|
|
|
solo |
|
|
|
|
|
flat |
|
|
|
|
|
prepend-inner-icon='mdi-clipboard-account' |
|
|
|
|
|
background-color='white' |
|
|
|
|
|
hide-details |
|
|
|
|
|
ref='iptForgotPwdEmail' |
|
|
|
|
|
v-model='username' |
|
|
|
|
|
:placeholder='$t(selectedStrategy.strategy.usernameLabel)' |
|
|
|
|
|
) |
|
|
|
|
|
v-btn.mt-2.text-none( |
|
|
|
|
|
width='100%' |
|
|
|
|
|
large |
|
|
|
|
|
color='primary' |
|
|
|
|
|
dark |
|
|
|
|
|
@click='forgotPasswordSubmit' |
|
|
|
|
|
:loading='isLoading' |
|
|
|
|
|
) {{ $t('auth:sendResetPassword') }} |
|
|
|
|
|
.text-center.mt-5 |
|
|
|
|
|
v-btn.text-none( |
|
|
|
|
|
text |
|
|
|
|
|
rounded |
|
|
|
|
|
color='grey darken-3' |
|
|
|
|
|
@click.stop.prevent='screen = `login`' |
|
|
|
|
|
href='#forgot' |
|
|
|
|
|
): .caption {{ $t('auth:forgotPasswordCancel') }} |
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
//- CHANGE PASSWORD FORM |
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
template(v-if='screen === `changePwd`') |
|
|
|
|
|
.login-subtitle |
|
|
|
|
|
.text-subtitle-1 {{ $t('auth:changePwd.subtitle') }} |
|
|
|
|
|
.login-form |
|
|
|
|
|
v-text-field.mt-2( |
|
|
|
|
|
type='password' |
|
|
|
|
|
solo |
|
|
|
|
|
flat |
|
|
|
|
|
prepend-inner-icon='mdi-form-textbox-password' |
|
|
|
|
|
background-color='white' |
|
|
|
|
|
hide-details |
|
|
|
|
|
ref='iptNewPassword' |
|
|
|
|
|
v-model='newPassword' |
|
|
|
|
|
:placeholder='$t(`auth:changePwd.newPasswordPlaceholder`)' |
|
|
|
|
|
) |
|
|
|
|
|
password-strength(slot='progress', v-model='newPassword') |
|
|
|
|
|
v-text-field.mt-2( |
|
|
|
|
|
type='password' |
|
|
|
|
|
solo |
|
|
|
|
|
flat |
|
|
|
|
|
prepend-inner-icon='mdi-form-textbox-password' |
|
|
|
|
|
background-color='white' |
|
|
|
|
|
hide-details |
|
|
|
|
|
v-model='newPasswordVerify' |
|
|
|
|
|
:placeholder='$t(`auth:changePwd.newPasswordVerifyPlaceholder`)' |
|
|
|
|
|
@keyup.enter='changePassword' |
|
|
|
|
|
) |
|
|
|
|
|
v-btn.mt-2.text-none( |
|
|
|
|
|
width='100%' |
|
|
|
|
|
large |
|
|
|
|
|
color='primary' |
|
|
|
|
|
dark |
|
|
|
|
|
@click='changePassword' |
|
|
|
|
|
:loading='isLoading' |
|
|
|
|
|
) {{ $t('auth:changePwd.proceed') }} |
|
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
//- TFA FORM |
|
|
|
|
|
//------------------------------------------------- |
|
|
|
|
|
v-dialog(v-model='isTFAShown', max-width='500', persistent) |
|
|
|
|
|
v-card |
|
|
|
|
|
.login-tfa.text-center.pa-5 |
|
|
|
|
|
img(src='_assets/svg/icon-pin-pad.svg') |
|
|
|
|
|
.subtitle-2 Enter the security code generated from your trusted device: |
|
|
|
|
|
v-text-field.login-tfa-field.mt-2( |
|
|
|
|
|
solo |
|
|
|
|
|
flat |
|
|
|
|
|
background-color='white' |
|
|
|
|
|
hide-details |
|
|
|
|
|
ref='iptTFA' |
|
|
|
|
|
v-model='securityCode' |
|
|
|
|
|
:placeholder='$t("auth:tfa.placeholder")' |
|
|
|
|
|
@keyup.enter='verifySecurityCode' |
|
|
|
|
|
) |
|
|
|
|
|
v-btn.mt-2.text-none( |
|
|
|
|
|
width='100%' |
|
|
|
|
|
large |
|
|
|
|
|
color='primary' |
|
|
|
|
|
dark |
|
|
|
|
|
@click='verifySecurityCode' |
|
|
|
|
|
:loading='isLoading' |
|
|
|
|
|
) {{ $t('auth:tfa.verifyToken') }} |
|
|
|
|
|
|
|
|
loader(v-model='isLoading', :color='loaderColor', :title='loaderTitle', :subtitle='$t(`auth:pleaseWait`)') |
|
|
loader(v-model='isLoading', :color='loaderColor', :title='loaderTitle', :subtitle='$t(`auth:pleaseWait`)') |
|
|
notify |
|
|
notify |
|
@ -265,7 +222,8 @@ export default { |
|
|
loaderTitle: 'Working...', |
|
|
loaderTitle: 'Working...', |
|
|
isShown: false, |
|
|
isShown: false, |
|
|
newPassword: '', |
|
|
newPassword: '', |
|
|
newPasswordVerify: '' |
|
|
|
|
|
|
|
|
newPasswordVerify: '', |
|
|
|
|
|
isTFAShown: false |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
computed: { |
|
|
computed: { |
|
@ -307,9 +265,6 @@ export default { |
|
|
}, |
|
|
}, |
|
|
mounted () { |
|
|
mounted () { |
|
|
this.isShown = true |
|
|
this.isShown = true |
|
|
this.$nextTick(() => { |
|
|
|
|
|
// this.$refs.iptEmail.focus() |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
/** |
|
|
/** |
|
@ -614,6 +569,15 @@ export default { |
|
|
border-bottom: 1px solid rgba(0,0,0,.3); |
|
|
border-bottom: 1px solid rgba(0,0,0,.3); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&-info { |
|
|
|
|
|
border-top: 1px solid rgba(255,255,255,.85); |
|
|
|
|
|
background-color: rgba(255,255,255,.15); |
|
|
|
|
|
border-bottom: 1px solid rgba(0,0,0,.15); |
|
|
|
|
|
padding: 12px; |
|
|
|
|
|
font-size: 13px; |
|
|
|
|
|
text-align: center; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
&-list { |
|
|
&-list { |
|
|
border-top: 1px solid rgba(255,255,255,.85); |
|
|
border-top: 1px solid rgba(255,255,255,.85); |
|
|
padding: 12px; |
|
|
padding: 12px; |
|
@ -628,5 +592,14 @@ export default { |
|
|
flex: 1 0 100vw; |
|
|
flex: 1 0 100vw; |
|
|
height: 100vh; |
|
|
height: 100vh; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&-tfa { |
|
|
|
|
|
background-color: #EEE; |
|
|
|
|
|
border: 7px solid #FFF; |
|
|
|
|
|
|
|
|
|
|
|
&-field input { |
|
|
|
|
|
text-align: center; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</style> |