diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/components/signin-dialog.vue | 4 | ||||
| -rwxr-xr-x | src/client/components/signin.vue | 90 | ||||
| -rw-r--r-- | src/client/style.scss | 15 |
3 files changed, 64 insertions, 45 deletions
diff --git a/src/client/components/signin-dialog.vue b/src/client/components/signin-dialog.vue index 3a820c8f96..5726cf6e5e 100644 --- a/src/client/components/signin-dialog.vue +++ b/src/client/components/signin-dialog.vue @@ -7,9 +7,7 @@ > <template #header>{{ $t('login') }}</template> - <div class="_section"> - <MkSignin :auto-set="autoSet" @login="onLogin"/> - </div> + <MkSignin :auto-set="autoSet" @login="onLogin"/> </XModalWindow> </template> diff --git a/src/client/components/signin.vue b/src/client/components/signin.vue index b02ef2e940..5052902aca 100755 --- a/src/client/components/signin.vue +++ b/src/client/components/signin.vue @@ -1,44 +1,48 @@ <template> <form class="eppvobhk" :class="{ signing, totpLogin }" @submit.prevent="onSubmit"> - <div class="avatar" :style="{ backgroundImage: user ? `url('${ user.avatarUrl }')` : null }" v-show="withAvatar"></div> - <div class="normal-signin" v-if="!totpLogin"> - <MkInput v-model:value="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required @update:value="onUsernameChange"> - <span>{{ $t('username') }}</span> - <template #prefix>@</template> - <template #suffix>@{{ host }}</template> - </MkInput> - <MkInput v-model:value="password" type="password" :with-password-toggle="true" v-if="!user || user && !user.usePasswordLessLogin" required> - <span>{{ $t('password') }}</span> - <template #prefix><Fa :icon="faLock"/></template> - </MkInput> - <MkButton type="submit" primary :disabled="signing" style="margin: 0 auto;">{{ signing ? $t('loggingIn') : $t('login') }}</MkButton> - <a class="_panelButton" style="margin: 8px auto;" v-if="meta && meta.enableTwitterIntegration" :href="`${apiUrl}/signin/twitter`"><Fa :icon="faTwitter" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'Twitter' }) }}</a> - <a class="_panelButton" style="margin: 8px auto;" v-if="meta && meta.enableGithubIntegration" :href="`${apiUrl}/signin/github`"><Fa :icon="faGithub" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'GitHub' }) }}</a> - <a class="_panelButton" style="margin: 8px auto;" v-if="meta && meta.enableDiscordIntegration" :href="`${apiUrl}/signin/discord`"><Fa :icon="faDiscord" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'Discord' }) }}</a> - </div> - <div class="2fa-signin" v-if="totpLogin" :class="{ securityKeys: user && user.securityKeys }"> - <div v-if="user && user.securityKeys" class="twofa-group tap-group"> - <p>{{ $t('tapSecurityKey') }}</p> - <MkButton @click="queryKey" v-if="!queryingKey"> - {{ $t('retry') }} - </MkButton> - </div> - <div class="or-hr" v-if="user && user.securityKeys"> - <p class="or-msg">{{ $t('or') }}</p> - </div> - <div class="twofa-group totp-group"> - <p style="margin-bottom:0;">{{ $t('twoStepAuthentication') }}</p> - <MkInput v-model:value="password" type="password" :with-password-toggle="true" v-if="user && user.usePasswordLessLogin" required> + <div class="auth _section"> + <div class="avatar" :style="{ backgroundImage: user ? `url('${ user.avatarUrl }')` : null }" v-show="withAvatar"></div> + <div class="normal-signin" v-if="!totpLogin"> + <MkInput v-model:value="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required @update:value="onUsernameChange"> + <span>{{ $t('username') }}</span> + <template #prefix>@</template> + <template #suffix>@{{ host }}</template> + </MkInput> + <MkInput v-model:value="password" type="password" :with-password-toggle="true" v-if="!user || user && !user.usePasswordLessLogin" required> <span>{{ $t('password') }}</span> <template #prefix><Fa :icon="faLock"/></template> </MkInput> - <MkInput v-model:value="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required> - <span>{{ $t('token') }}</span> - <template #prefix><Fa :icon="faGavel"/></template> - </MkInput> - <MkButton type="submit" :disabled="signing" primary style="margin: 0 auto;">{{ signing ? $t('loggingIn') : $t('login') }}</MkButton> + <MkButton type="submit" primary :disabled="signing" style="margin: 0 auto;">{{ signing ? $t('loggingIn') : $t('login') }}</MkButton> + </div> + <div class="2fa-signin" v-if="totpLogin" :class="{ securityKeys: user && user.securityKeys }"> + <div v-if="user && user.securityKeys" class="twofa-group tap-group"> + <p>{{ $t('tapSecurityKey') }}</p> + <MkButton @click="queryKey" v-if="!queryingKey"> + {{ $t('retry') }} + </MkButton> + </div> + <div class="or-hr" v-if="user && user.securityKeys"> + <p class="or-msg">{{ $t('or') }}</p> + </div> + <div class="twofa-group totp-group"> + <p style="margin-bottom:0;">{{ $t('twoStepAuthentication') }}</p> + <MkInput v-model:value="password" type="password" :with-password-toggle="true" v-if="user && user.usePasswordLessLogin" required> + <span>{{ $t('password') }}</span> + <template #prefix><Fa :icon="faLock"/></template> + </MkInput> + <MkInput v-model:value="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required> + <span>{{ $t('token') }}</span> + <template #prefix><Fa :icon="faGavel"/></template> + </MkInput> + <MkButton type="submit" :disabled="signing" primary style="margin: 0 auto;">{{ signing ? $t('loggingIn') : $t('login') }}</MkButton> + </div> </div> </div> + <div class="social _section"> + <a class="_borderButton _vMargin" v-if="meta && meta.enableTwitterIntegration" :href="`${apiUrl}/signin/twitter`"><Fa :icon="faTwitter" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'Twitter' }) }}</a> + <a class="_borderButton _vMargin" v-if="meta && meta.enableGithubIntegration" :href="`${apiUrl}/signin/github`"><Fa :icon="faGithub" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'GitHub' }) }}</a> + <a class="_borderButton _vMargin" v-if="meta && meta.enableDiscordIntegration" :href="`${apiUrl}/signin/discord`"><Fa :icon="faDiscord" style="margin-right: 4px;"/>{{ $t('signinWith', { x: 'Discord' }) }}</a> + </div> </form> </template> @@ -203,14 +207,16 @@ export default defineComponent({ <style lang="scss" scoped> .eppvobhk { - > .avatar { - margin: 0 auto 0 auto; - width: 64px; - height: 64px; - background: #ddd; - background-position: center; - background-size: cover; - border-radius: 100%; + > .auth { + > .avatar { + margin: 0 auto 0 auto; + width: 64px; + height: 64px; + background: #ddd; + background-position: center; + background-size: cover; + border-radius: 100%; + } } } </style> diff --git a/src/client/style.scss b/src/client/style.scss index 654267084d..cbcd497e22 100644 --- a/src/client/style.scss +++ b/src/client/style.scss @@ -297,6 +297,21 @@ hr { padding: 12px 0; } +._borderButton { + @extend ._button; + display: block; + width: 100%; + padding: 10px; + box-sizing: border-box; + text-align: center; + border: solid 1px var(--divider); + border-radius: var(--radius); + + &:active { + border-color: var(--accent); + } +} + ._popup { background: var(--panel); border-radius: var(--radius); |