163 lines
3.0 KiB
JavaScript
163 lines
3.0 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
/**
|
|
* 获取登录状态
|
|
* GET /api/auth/status
|
|
*/
|
|
router.get('/status', (req, res) => {
|
|
try {
|
|
const status = req.backend.getLoginStatus();
|
|
res.json({
|
|
success: true,
|
|
data: status
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 获取登录URL
|
|
* GET /api/auth/login-url
|
|
*/
|
|
router.get('/login-url', (req, res) => {
|
|
try {
|
|
const loginData = req.backend.getLoginUrl();
|
|
res.json({
|
|
success: true,
|
|
data: loginData
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 处理登录回调
|
|
* POST /api/auth/callback
|
|
*/
|
|
router.post('/callback', async (req, res) => {
|
|
try {
|
|
const { code } = req.body;
|
|
|
|
if (!code) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Authorization code is required'
|
|
});
|
|
}
|
|
|
|
const result = await req.backend.handleLoginCallback(code);
|
|
|
|
if (result.success) {
|
|
res.json({
|
|
success: true,
|
|
data: result
|
|
});
|
|
} else {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: result.error
|
|
});
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 重新登录
|
|
* POST /api/auth/relogin
|
|
*/
|
|
router.post('/relogin', async (req, res) => {
|
|
try {
|
|
const result = await req.backend.relogin();
|
|
|
|
if (result.success) {
|
|
res.json({
|
|
success: true,
|
|
message: 'Relogin successful'
|
|
});
|
|
} else {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: result.error
|
|
});
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 登出
|
|
* POST /api/auth/logout
|
|
*/
|
|
router.post('/logout', (req, res) => {
|
|
try {
|
|
const result = req.backend.logout();
|
|
res.json({
|
|
success: true,
|
|
message: 'Logout successful'
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 手动刷新token
|
|
* POST /api/auth/refresh-token
|
|
*/
|
|
router.post('/refresh-token', async (req, res) => {
|
|
try {
|
|
if (!req.backend.config.refresh_token) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: '没有可用的刷新令牌'
|
|
});
|
|
}
|
|
|
|
const result = await req.backend.relogin();
|
|
|
|
if (result.success) {
|
|
res.json({
|
|
success: true,
|
|
message: 'Token刷新成功',
|
|
data: {
|
|
isLoggedIn: req.backend.isLoggedIn,
|
|
username: req.backend.config.user?.account
|
|
}
|
|
});
|
|
} else {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: result.error
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('手动刷新token失败:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|