Skip to content

Commit

Permalink
feat: login
Browse files Browse the repository at this point in the history
  • Loading branch information
trueai-org committed Jan 21, 2025
1 parent 6b22132 commit ee12aa9
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 10 deletions.
5 changes: 4 additions & 1 deletion src/locales/en-US/pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ export default {
'pages.account.sponsorAccountTitle':
'Sponsor Account (Thank you for your generosity and sponsorship)',
'pages.account.updateAndReconnect': 'Update And Reconnect',

'pages.account.update': 'Update',
'pages.account.syncTitle':
'Will it actively execute /info, /settings to retrieve and update account information?',
Expand Down Expand Up @@ -205,9 +206,11 @@ export default {
'pages.account.allowModesTooltip':
'If the user specifies the mode or adds a user-defined parameter, such as --fast, but the account does not allow FAST, this parameter is automatically removed',

'pages.account.loginAccountGetToken': 'Login Account Get Token',
'pages.account.loginAccountGetTokenError': 'The account, password, and 2FA key must be entered',
'pages.account.loginAccount': 'Login Account',
'pages.account.loginPassword': 'Login Password',
'pages.account.logiln2fa': '2FA Code',
'pages.account.login2fa': '2FA Code',
'pages.account.isAutoLogining': 'Auto Login in...',

'pages.task.info': 'Task Info',
Expand Down
4 changes: 3 additions & 1 deletion src/locales/zh-CN/pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,9 +187,11 @@ export default {
'pages.account.subChannelsHelp': '请输入子频道,每行一个,格式:[邀请链接],[频道地址],示例:https://discord.gg/xxx,https://discord.com/channels/xxx/xxx',
'pages.account.allowModesTooltip': '如果用户指定模式或添加了自定义参数例如 --fast,但是账号不允许 FAST,则自动移除此参数',

'pages.account.loginAccountGetToken': '登录并获取 Token',
'pages.account.loginAccountGetTokenError': '必须填写账号和密码、2FA密钥',
'pages.account.loginAccount': '登录账号',
'pages.account.loginPassword': '登录密码',
'pages.account.logiln2fa': '2FA 密钥',
'pages.account.login2fa': '2FA 密钥',
'pages.account.isAutoLogining': '登录中...',


Expand Down
1 change: 0 additions & 1 deletion src/pages/AccountList/components/contents/AddContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ const AddContent = ({
<Form.Item
label={intl.formatMessage({ id: 'pages.account.userToken' })}
name="userToken"
rules={[{ required: true }]}
>
<Input />
</Form.Item>
Expand Down
4 changes: 2 additions & 2 deletions src/pages/AccountList/components/contents/UpdateContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,8 @@ const UpdateContent = ({
<Input />
</Form.Item>
<Form.Item
label={intl.formatMessage({ id: 'pages.account.logiln2fa' })}
name="logiln2fa"
label={intl.formatMessage({ id: 'pages.account.login2fa' })}
name="login2fa"
>
<Input />
</Form.Item>
Expand Down
54 changes: 49 additions & 5 deletions src/pages/AccountList/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,19 @@ import CfContent from '@/pages/AccountList/components/contents/CfContent';
import MoreContent from '@/pages/AccountList/components/contents/MoreContent';
import ReconnectContent from '@/pages/AccountList/components/contents/ReconnectContent';
import UpdateContent from '@/pages/AccountList/components/contents/UpdateContent';
import { createAccount, queryAccounts, update, updateAndReconnect } from '@/services/mj/api';
import {
createAccount,
loginAccountGetToken,
queryAccounts,
update,
updateAndReconnect,
} from '@/services/mj/api';
import {
ClockCircleOutlined,
EditOutlined,
HeartTwoTone,
LockOutlined,
LoginOutlined,
SyncOutlined,
ToolOutlined,
UnlockOutlined,
Expand Down Expand Up @@ -119,7 +126,7 @@ const AccountList: React.FC = () => {
guildId: '',
loginAccount: '',
loginPassword: '',
logiln2fa: '',
login2fa: '',
};
localStorage.setItem('account_cache', JSON.stringify(prev));

Expand All @@ -140,6 +147,36 @@ const AccountList: React.FC = () => {
}
};

// 登录并获取 token
const handleLogin = async (values: Record<any, any>) => {
try {
// 验证账号、密码、2fa
if (!values.loginAccount || !values.loginPassword || !values.login2fa) {
api.error({
message: 'error',
description: intl.formatMessage({ id: 'pages.account.loginAccountGetTokenError' }),
});
return;
}

const res = await loginAccountGetToken(values.id);
if (res.success) {
api.success({
message: 'success',
description: res.message,
});
hideModal();
triggerRefreshAccount();
} else {
api.error({
message: 'error',
description: res.message,
});
}
} finally {
}
};

const handleReconnect = async (values: Record<any, any>) => {
// 判断如果 subChannels 为空,则设置为空数组
if (!values.subChannels) {
Expand Down Expand Up @@ -275,9 +312,7 @@ const AccountList: React.FC = () => {
<Tag color={color}>{text}</Tag>

{record.isAutoLogining && (
<Tag color="orange">
{intl.formatMessage({ id: 'pages.account.isAutoLogining' })}
</Tag>
<Tag color="orange">{intl.formatMessage({ id: 'pages.account.isAutoLogining' })}</Tag>
)}

{record.lock && (
Expand Down Expand Up @@ -450,6 +485,15 @@ const AccountList: React.FC = () => {
render: (value: any, record: Record<string, any>) => {
return (
<Space>
<Tooltip title={intl.formatMessage({ id: 'pages.account.loginAccountGetToken' })}>
<Button
key="login"
icon={<LoginOutlined />}
type={'dashed'}
onClick={() => handleLogin(record)}
/>
</Tooltip>

{record.lock && (
<Button
key="Lock"
Expand Down
8 changes: 8 additions & 0 deletions src/services/mj/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ export async function refreshAccount(id: string, options?: { [key: string]: any
});
}

// loginAccountGetToken
export async function loginAccountGetToken(id: string, options?: { [key: string]: any }) {
return request<API.Result>(`/mj/admin/account-login/${id}`, {
method: 'POST',
...(options || {}),
});
}

/** PUT */
export async function updateAndReconnect(
id: string,
Expand Down

0 comments on commit ee12aa9

Please sign in to comment.