From 4cc7688f416f420690d03ed950973b22aba460ac Mon Sep 17 00:00:00 2001 From: hole-thu Date: Sun, 20 Nov 2022 19:06:55 +0800 Subject: [PATCH] better email login --- src/images/email_example.jpg | Bin 0 -> 15553 bytes src/infrastructure/widgets.css | 4 +++ src/infrastructure/widgets.js | 53 +++++++++++++++++++++++++-------- 3 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 src/images/email_example.jpg diff --git a/src/images/email_example.jpg b/src/images/email_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74b3210e606087b20ab06fadfb5bf369180e8ad8 GIT binary patch literal 15553 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 literal 0 HcmV?d00001 diff --git a/src/infrastructure/widgets.css b/src/infrastructure/widgets.css index ed5d7b2..99d9f59 100644 --- a/src/infrastructure/widgets.css +++ b/src/infrastructure/widgets.css @@ -334,3 +334,7 @@ a.button { padding: 5px; } + +.li-image { + width: 100%; +} diff --git a/src/infrastructure/widgets.js b/src/infrastructure/widgets.js index 215d01b..8a61ebb 100644 --- a/src/infrastructure/widgets.js +++ b/src/infrastructure/widgets.js @@ -8,6 +8,7 @@ import copy from 'copy-to-clipboard'; import './global.css'; import './widgets.css'; +import emailExample from '../images/email_example.jpg'; import { get_json, API_VERSION_PARAM } from './functions'; import { EMAIL } from '../UserAction'; @@ -68,6 +69,7 @@ class LoginPopupSelf extends Component { super(props); this.state = { token_phrase: '', + already_copy: false, }; } @@ -86,6 +88,17 @@ class LoginPopupSelf extends Component { sha256_hex(token_phrase + 'hole' + new Date().toDateString(), 16) .then((token) => sha256_hex(token + 'hole', 16)) .then((token_hash) => copy('|' + token_hash + '|')); + + this.setState({already_copy: true}); + } + + copy_token_phrase(event) { + const { token_phrase } = this.state; + if (!token_phrase) { + alert('不可以为空'); + return; + } + copy(token_phrase); } use_token(event) { @@ -103,7 +116,7 @@ class LoginPopupSelf extends Component { } render() { - const { token_phrase } = this.state; + const { token_phrase, already_copy } = this.state; return (
@@ -115,22 +128,36 @@ class LoginPopupSelf extends Component {
  1. - 输入任意独特内容或 - this.setState({token_phrase: window.crypto.randomUUID()})}> - 使用随机值 + this.setState({token_phrase: window.crypto.randomUUID(), already_copy: false})}> + 生成 - ,以生成token。请务必保存好输入的内容,并避免泄漏。 -
  2. -
  3. - 点击此处 - 复制token的哈希,通过你的清华邮箱发送到 - {EMAIL}。不同设备在同一天输入相同内容即可,请勿重复发件。 + 或粘贴用来生成token的ID。
  4. -
  5. + {!!token_phrase && ( +
  6. + 点击此处 + 复制此ID用于在其他设备上登录,当日有效,注意妥善保管。 +
  7. + )} + {!!token_phrase && ( +
  8. + 点击此处 + 复制用来发送邮件的内容 +
  9. + )} + {!!already_copy ? ( +
  10. + 发送邮件到 + {EMAIL}。 + 不同设备请勿重复发件。 后台每15分钟查收一次邮件,等待一段时间后 点击此处 - 使用此token登陆。 -
  11. + 使用此token登录。示例: + + + ) : ( +
  12. ...
  13. + )}