fix:bug
This commit is contained in:
28
src/server.ts
Normal file
28
src/server.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import express from 'express';
|
||||
import cors from 'cors';
|
||||
import morgan from 'morgan';
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
import { authRouter } from './wechatAuth';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
app.use(morgan('dev'));
|
||||
|
||||
app.get('/health', (_req, res) => {
|
||||
res.json({ status: 'ok' });
|
||||
});
|
||||
|
||||
app.use('/api/auth', authRouter);
|
||||
|
||||
const port = process.env.PORT || 3000;
|
||||
|
||||
app.listen(port, () => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`WeChat admin backend listening on port ${port}`);
|
||||
});
|
||||
|
||||
100
src/wechatAuth.ts
Normal file
100
src/wechatAuth.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import express from 'express';
|
||||
import axios from 'axios';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const BASE_URL = process.env.WECHAT_UPSTREAM_BASE_URL || 'http://localhost:8080';
|
||||
|
||||
router.post('/qrcode', async (req, res) => {
|
||||
const { key, proxy, ipadOrMac, check } = req.body as {
|
||||
key: string;
|
||||
proxy?: string;
|
||||
ipadOrMac?: string;
|
||||
check?: boolean;
|
||||
};
|
||||
|
||||
if (!key) {
|
||||
return res.status(400).json({ error: 'key is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await axios.post(
|
||||
`${BASE_URL}/login/GetLoginQrCodeNewDirect`,
|
||||
{
|
||||
Proxy: proxy ?? '',
|
||||
IpadOrmac: ipadOrMac ?? '',
|
||||
Check: check ?? false,
|
||||
},
|
||||
{ params: { key } },
|
||||
);
|
||||
|
||||
return res.json(response.data);
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Error fetching login qrcode', err);
|
||||
return res.status(502).json({ error: 'failed_to_get_qrcode' });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/status', async (req, res) => {
|
||||
const { key } = req.query as { key?: string };
|
||||
|
||||
if (!key) {
|
||||
return res.status(400).json({ error: 'key is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await axios.get(`${BASE_URL}/login/GetLoginStatus`, {
|
||||
params: { key },
|
||||
});
|
||||
|
||||
return res.json(response.data);
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Error getting login status', err);
|
||||
return res.status(502).json({ error: 'failed_to_get_status' });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/scan-status', async (req, res) => {
|
||||
const { key } = req.query as { key?: string };
|
||||
|
||||
if (!key) {
|
||||
return res.status(400).json({ error: 'key is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await axios.get(`${BASE_URL}/login/CheckLoginStatus`, {
|
||||
params: { key },
|
||||
});
|
||||
|
||||
return res.json(response.data);
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Error checking scan status', err);
|
||||
return res.status(502).json({ error: 'failed_to_check_scan_status' });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/logout', async (req, res) => {
|
||||
const { key } = req.body as { key?: string };
|
||||
|
||||
if (!key) {
|
||||
return res.status(400).json({ error: 'key is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await axios.get(`${BASE_URL}/login/LogOut`, {
|
||||
params: { key },
|
||||
});
|
||||
|
||||
return res.json(response.data);
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Error logging out', err);
|
||||
return res.status(502).json({ error: 'failed_to_logout' });
|
||||
}
|
||||
});
|
||||
|
||||
export const authRouter = router;
|
||||
|
||||
Reference in New Issue
Block a user