import { html, css, Component } from 'wkit' import fetch from '/lib/fetch.js' class Login extends Component { static styles = css` .login-page { display: flex; justify-content: center; width: 1024px; margin: 0 auto; padding: 16px; user-select: none; .login-form, .user-card { display: flex; flex-direction: column; width: 320px; min-height: 160px; padding: 32px; margin-top: 32px; box-shadow: 0 0 12px rgba(0, 0, 0, 0.1); } .login-form { .title { margin-bottom: 32px; line-height: 2; border-bottom: 1px solid var(--color-plain-2); font-size: 20px; text-align: center; color: var(--color-grey-3); } .third-part { display: flex; } & a { display: inline-flex; width: 32px; height: 32px; margin: 0 16px; } } .user-card { align-items: center; .avatar { width: 96px; height: 96px; border: 3px solid var(--color-plain-1); border-radius: 50%; box-shadow: 0 0 16px rgba(0, 0, 0, 0.3); } .name { line-height: 2; } .homepage { display: flex; align-items: center; --wc-icon-size: 14px; font-style: normal; & a { margin-left: 6px; text-decoration: underline; color: var(--color-blue-1); } } .logout { margin-top: 32px; } } } ` #jumpLogin(site = 'github') { switch (site) { case 'github': location.replace( 'https://github.com/login/oauth/authorize?' + `client_id=57d9d247bda6302fd9d1&redirect_uri=https://www.jscdn.ink/login` ) break } } #logout() { this.$store.user = {} localStorage.removeItem('user') localStorage.removeItem('token') } mounted() { let route = this.$route this.$store.searchShow = false if (route.query.code) { fetch('/login/github', { method: 'post', body: { code: route.query.code } }) .then(r => { let lastPath = localStorage.getItem('login_callback_path') layer.toast('登录成功', 'success') this.$store.user = r.data.user localStorage.setItem('user', JSON.stringify(r.data.user)) localStorage.setItem('token', r.data.token) if (lastPath) { localStorage.removeItem('login_callback_path') this.$router.replace(lastPath) } else { this.$router.replace('/login') } }) .catch(r => { console.log(r) layer.toast(r.msg, 'error') }) } } render() { return html`
${this.$store.user.id ? html`

${this.$store.user.name}

主页: ${this.$store.user.homepage} 注销登录
` : html`
请使用以下方式登录
this.#jumpLogin('github')} > ...
`}
` } } Login.reg('login', 'v')