mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-03-07 20:40:48 +08:00
Compare commits
1 Commits
codex/crea
...
codex/crea
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
18fde1052f |
@@ -27,6 +27,16 @@
|
||||
--code-highlight-background-color: rgb(241, 241, 241);
|
||||
--login-background-color: rgb(248, 248, 248);
|
||||
--login-background-color-hover: #e0e0e0;
|
||||
--google-login-background-color: var(--login-background-color);
|
||||
--google-login-background-color-hover: var(--login-background-color-hover);
|
||||
--github-login-background-color: #000;
|
||||
--github-login-background-color-hover: #333;
|
||||
--discord-login-background-color: var(--login-background-color);
|
||||
--discord-login-background-color-hover: var(--login-background-color-hover);
|
||||
--twitter-login-background-color: var(--login-background-color);
|
||||
--twitter-login-background-color-hover: var(--login-background-color-hover);
|
||||
--telegram-login-background-color: var(--login-background-color);
|
||||
--telegram-login-background-color-hover: var(--login-background-color-hover);
|
||||
--text-color: rgb(70, 70, 70);
|
||||
--blockquote-text-color: #6a737d;
|
||||
--menu-width: 200px;
|
||||
@@ -58,6 +68,16 @@
|
||||
--code-highlight-background-color: #262b35;
|
||||
--login-background-color: #575757;
|
||||
--login-background-color-hover: #717171;
|
||||
--google-login-background-color: var(--login-background-color);
|
||||
--google-login-background-color-hover: var(--login-background-color-hover);
|
||||
--github-login-background-color: #000;
|
||||
--github-login-background-color-hover: #333;
|
||||
--discord-login-background-color: var(--login-background-color);
|
||||
--discord-login-background-color-hover: var(--login-background-color-hover);
|
||||
--twitter-login-background-color: var(--login-background-color);
|
||||
--twitter-login-background-color-hover: var(--login-background-color-hover);
|
||||
--telegram-login-background-color: var(--login-background-color);
|
||||
--telegram-login-background-color-hover: var(--login-background-color-hover);
|
||||
--text-color: #eee;
|
||||
--blockquote-text-color: #999;
|
||||
--article-info-background-color: #747373;
|
||||
|
||||
@@ -1,174 +0,0 @@
|
||||
<template>
|
||||
<div class="third-party-auth">
|
||||
<div
|
||||
v-for="provider in providers"
|
||||
:key="provider.name"
|
||||
class="third-party-button"
|
||||
:class="provider.name"
|
||||
@click="provider.action"
|
||||
>
|
||||
<img class="third-party-button-icon" :src="provider.icon" :alt="provider.alt" />
|
||||
<div class="third-party-button-text">
|
||||
{{ provider.label }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import googleIcon from '~/assets/icons/google.svg'
|
||||
import githubIcon from '~/assets/icons/github.svg'
|
||||
import discordIcon from '~/assets/icons/discord.svg'
|
||||
import twitterIcon from '~/assets/icons/twitter.svg'
|
||||
import telegramIcon from '~/assets/icons/telegram.svg'
|
||||
|
||||
import { googleAuthorize } from '~/utils/google'
|
||||
import { githubAuthorize } from '~/utils/github'
|
||||
import { discordAuthorize } from '~/utils/discord'
|
||||
import { twitterAuthorize } from '~/utils/twitter'
|
||||
import { telegramAuthorize } from '~/utils/telegram'
|
||||
|
||||
const props = defineProps({
|
||||
mode: {
|
||||
type: String,
|
||||
default: 'login',
|
||||
},
|
||||
inviteToken: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
})
|
||||
|
||||
const actionText = computed(() => (props.mode === 'signup' ? '注册' : '登录'))
|
||||
|
||||
const providers = computed(() => [
|
||||
{
|
||||
name: 'google',
|
||||
icon: googleIcon,
|
||||
action: () => googleAuthorize(props.inviteToken),
|
||||
alt: 'Google Logo',
|
||||
label: `Google ${actionText.value}`,
|
||||
},
|
||||
{
|
||||
name: 'github',
|
||||
icon: githubIcon,
|
||||
action: () => githubAuthorize(props.inviteToken),
|
||||
alt: 'GitHub Logo',
|
||||
label: `GitHub ${actionText.value}`,
|
||||
},
|
||||
{
|
||||
name: 'discord',
|
||||
icon: discordIcon,
|
||||
action: () => discordAuthorize(props.inviteToken),
|
||||
alt: 'Discord Logo',
|
||||
label: `Discord ${actionText.value}`,
|
||||
},
|
||||
{
|
||||
name: 'twitter',
|
||||
icon: twitterIcon,
|
||||
action: () => twitterAuthorize(props.inviteToken),
|
||||
alt: 'Twitter Logo',
|
||||
label: `Twitter ${actionText.value}`,
|
||||
},
|
||||
{
|
||||
name: 'telegram',
|
||||
icon: telegramIcon,
|
||||
action: () => telegramAuthorize(props.inviteToken),
|
||||
alt: 'Telegram Logo',
|
||||
label: `Telegram ${actionText.value}`,
|
||||
},
|
||||
])
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.third-party-auth {
|
||||
margin-left: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 30%;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.third-party-button {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 10px 20px;
|
||||
min-width: 150px;
|
||||
background-color: var(--login-background-color);
|
||||
border: 1px solid var(--normal-border-color);
|
||||
border-radius: 10px;
|
||||
cursor: pointer;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.third-party-button:hover {
|
||||
background-color: var(--login-background-color-hover);
|
||||
}
|
||||
|
||||
.third-party-button-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.third-party-button-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* Provider specific classes for customization */
|
||||
.third-party-button.google {
|
||||
background-color: var(--google-bg, var(--login-background-color));
|
||||
color: var(--google-color, inherit);
|
||||
}
|
||||
.third-party-button.google:hover {
|
||||
background-color: var(--google-bg-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.third-party-button.github {
|
||||
background-color: var(--github-bg, var(--login-background-color));
|
||||
color: var(--github-color, inherit);
|
||||
}
|
||||
.third-party-button.github:hover {
|
||||
background-color: var(--github-bg-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.third-party-button.discord {
|
||||
background-color: var(--discord-bg, var(--login-background-color));
|
||||
color: var(--discord-color, inherit);
|
||||
}
|
||||
.third-party-button.discord:hover {
|
||||
background-color: var(--discord-bg-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.third-party-button.twitter {
|
||||
background-color: var(--twitter-bg, var(--login-background-color));
|
||||
color: var(--twitter-color, inherit);
|
||||
}
|
||||
.third-party-button.twitter:hover {
|
||||
background-color: var(--twitter-bg-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.third-party-button.telegram {
|
||||
background-color: var(--telegram-bg, var(--login-background-color));
|
||||
color: var(--telegram-color, inherit);
|
||||
}
|
||||
.third-party-button.telegram:hover {
|
||||
background-color: var(--telegram-bg-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.third-party-auth {
|
||||
margin-top: 20px;
|
||||
margin-left: 0px;
|
||||
width: calc(100% - 40px);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.third-party-button {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
151
frontend_nuxt/components/ThirdPartyAuthButtons.vue
Normal file
151
frontend_nuxt/components/ThirdPartyAuthButtons.vue
Normal file
@@ -0,0 +1,151 @@
|
||||
<template>
|
||||
<div class="third-party-auth">
|
||||
<div v-for="p in providers" :key="p.name" :class="['auth-button', p.name]" @click="p.authorize">
|
||||
<img class="auth-button-icon" :src="p.icon" :alt="p.alt" />
|
||||
<div class="auth-button-text">{{ p.text }} {{ props.action }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { googleAuthorize } from '~/utils/google'
|
||||
import { githubAuthorize } from '~/utils/github'
|
||||
import { discordAuthorize } from '~/utils/discord'
|
||||
import { twitterAuthorize } from '~/utils/twitter'
|
||||
import { telegramAuthorize } from '~/utils/telegram'
|
||||
|
||||
import googleIcon from '~/assets/icons/google.svg'
|
||||
import githubIcon from '~/assets/icons/github.svg'
|
||||
import discordIcon from '~/assets/icons/discord.svg'
|
||||
import twitterIcon from '~/assets/icons/twitter.svg'
|
||||
import telegramIcon from '~/assets/icons/telegram.svg'
|
||||
|
||||
const props = defineProps({
|
||||
action: {
|
||||
type: String,
|
||||
default: '登录',
|
||||
},
|
||||
inviteToken: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
})
|
||||
|
||||
const providers = [
|
||||
{
|
||||
name: 'google',
|
||||
icon: googleIcon,
|
||||
alt: 'Google Logo',
|
||||
text: 'Google',
|
||||
authorize: () => googleAuthorize(props.inviteToken),
|
||||
},
|
||||
{
|
||||
name: 'github',
|
||||
icon: githubIcon,
|
||||
alt: 'GitHub Logo',
|
||||
text: 'GitHub',
|
||||
authorize: () => githubAuthorize(props.inviteToken),
|
||||
},
|
||||
{
|
||||
name: 'discord',
|
||||
icon: discordIcon,
|
||||
alt: 'Discord Logo',
|
||||
text: 'Discord',
|
||||
authorize: () => discordAuthorize(props.inviteToken),
|
||||
},
|
||||
{
|
||||
name: 'twitter',
|
||||
icon: twitterIcon,
|
||||
alt: 'Twitter Logo',
|
||||
text: 'Twitter',
|
||||
authorize: () => twitterAuthorize(props.inviteToken),
|
||||
},
|
||||
{
|
||||
name: 'telegram',
|
||||
icon: telegramIcon,
|
||||
alt: 'Telegram Logo',
|
||||
text: 'Telegram',
|
||||
authorize: () => telegramAuthorize(props.inviteToken),
|
||||
},
|
||||
]
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.third-party-auth {
|
||||
margin-left: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 30%;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.auth-button {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 10px 20px;
|
||||
border: 1px solid var(--normal-border-color);
|
||||
border-radius: 10px;
|
||||
cursor: pointer;
|
||||
min-width: 150px;
|
||||
gap: 10px;
|
||||
background-color: var(--auth-bg);
|
||||
}
|
||||
|
||||
.auth-button:hover {
|
||||
background-color: var(--auth-bg-hover);
|
||||
}
|
||||
|
||||
.auth-button-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.auth-button-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.auth-button.google {
|
||||
--auth-bg: var(--google-login-background-color, var(--login-background-color));
|
||||
--auth-bg-hover: var(--google-login-background-color-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.auth-button.github {
|
||||
--auth-bg: var(--github-login-background-color, var(--login-background-color));
|
||||
--auth-bg-hover: var(--github-login-background-color-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.auth-button.discord {
|
||||
--auth-bg: var(--discord-login-background-color, var(--login-background-color));
|
||||
--auth-bg-hover: var(--discord-login-background-color-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.auth-button.twitter {
|
||||
--auth-bg: var(--twitter-login-background-color, var(--login-background-color));
|
||||
--auth-bg-hover: var(--twitter-login-background-color-hover, var(--login-background-color-hover));
|
||||
}
|
||||
|
||||
.auth-button.telegram {
|
||||
--auth-bg: var(--telegram-login-background-color, var(--login-background-color));
|
||||
--auth-bg-hover: var(
|
||||
--telegram-login-background-color-hover,
|
||||
var(--login-background-color-hover)
|
||||
);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.third-party-auth {
|
||||
margin-top: 20px;
|
||||
margin-left: 0;
|
||||
width: calc(100% - 40px);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.auth-button {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -34,7 +34,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ThirdPartyAuth mode="login" />
|
||||
<ThirdPartyAuthButtons action="登录" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
import { toast } from '~/main'
|
||||
import { setToken, loadCurrentUser } from '~/utils/auth'
|
||||
import BaseInput from '~/components/BaseInput.vue'
|
||||
import ThirdPartyAuth from '~/components/ThirdPartyAuth.vue'
|
||||
import ThirdPartyAuthButtons from '~/components/ThirdPartyAuthButtons.vue'
|
||||
import { registerPush } from '~/utils/push'
|
||||
const config = useRuntimeConfig()
|
||||
const API_BASE_URL = config.public.apiBaseUrl
|
||||
@@ -186,10 +186,6 @@ const submitLogin = async () => {
|
||||
background-color: var(--primary-color-disabled);
|
||||
}
|
||||
|
||||
.login-page-button-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.login-page-button-secondary {
|
||||
margin-top: 20px;
|
||||
font-size: 16px;
|
||||
|
||||
@@ -68,15 +68,15 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ThirdPartyAuth mode="signup" :invite-token="inviteToken" />
|
||||
<ThirdPartyAuthButtons action="注册" :invite-token="inviteToken" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import BaseInput from '~/components/BaseInput.vue'
|
||||
import { toast } from '~/main'
|
||||
import ThirdPartyAuthButtons from '~/components/ThirdPartyAuthButtons.vue'
|
||||
import { loadCurrentUser, setToken } from '~/utils/auth'
|
||||
import ThirdPartyAuth from '~/components/ThirdPartyAuth.vue'
|
||||
|
||||
const route = useRoute()
|
||||
const config = useRuntimeConfig()
|
||||
@@ -297,10 +297,6 @@ const verifyCode = async () => {
|
||||
background-color: var(--primary-color-hover);
|
||||
}
|
||||
|
||||
.signup-page-button-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.signup-page-button-secondary {
|
||||
margin-top: 20px;
|
||||
font-size: 16px;
|
||||
|
||||
Reference in New Issue
Block a user