summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/components/signin-dialog.vue4
-rwxr-xr-xsrc/client/components/signin.vue90
-rw-r--r--src/client/style.scss15
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);