143 lines
3.5 KiB
TypeScript
143 lines
3.5 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import axios from 'axios';
|
|
|
|
export class PlayerAuthController {
|
|
private readonly gameServerUrl: string;
|
|
|
|
constructor() {
|
|
this.gameServerUrl = process.env.GAME_SERVER_PROXY_URL || 'http://127.0.0.1:8080/tool/http';
|
|
}
|
|
|
|
async login(req: Request, res: Response) {
|
|
try {
|
|
const { username, password } = req.body;
|
|
|
|
if (!username || !password) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: '用户名和密码不能为空'
|
|
});
|
|
}
|
|
|
|
const response = await axios.post(
|
|
`${this.gameServerUrl}?code=auth/login`,
|
|
{
|
|
username,
|
|
password
|
|
},
|
|
{
|
|
proxy: false
|
|
}
|
|
);
|
|
|
|
if (response.data.success && response.data.code === 200) {
|
|
return res.json({
|
|
success: true,
|
|
message: '登录成功',
|
|
data: response.data.data
|
|
});
|
|
} else {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: response.data.message || '登录失败'
|
|
});
|
|
}
|
|
} catch (error: any) {
|
|
console.error('玩家登录失败:', error);
|
|
if (error.response) {
|
|
return res.status(error.response.status || 500).json({
|
|
success: false,
|
|
message: error.response.data?.message || '登录失败'
|
|
});
|
|
}
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: '服务器内部错误'
|
|
});
|
|
}
|
|
}
|
|
|
|
async logout(req: any, res: Response) {
|
|
try {
|
|
const token = req.headers?.authorization?.replace('Bearer ', '');
|
|
|
|
if (!token) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: '未授权'
|
|
});
|
|
}
|
|
|
|
await axios.post(
|
|
`${this.gameServerUrl}?code=auth/out_login`,
|
|
{},
|
|
{
|
|
headers: {
|
|
Authorization: token
|
|
},
|
|
proxy: false
|
|
}
|
|
);
|
|
|
|
return res.json({
|
|
success: true,
|
|
message: '退出登录成功'
|
|
});
|
|
} catch (error: any) {
|
|
console.error('玩家退出登录失败:', error);
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: '退出登录失败'
|
|
});
|
|
}
|
|
}
|
|
|
|
async getAccountInfo(req: any, res: Response) {
|
|
try {
|
|
const token = req.headers?.authorization?.replace('Bearer ', '');
|
|
|
|
if (!token) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: '未授权'
|
|
});
|
|
}
|
|
|
|
const response = await axios.post(
|
|
`${this.gameServerUrl}?code=account/get_account`,
|
|
{},
|
|
{
|
|
headers: {
|
|
Authorization: token
|
|
},
|
|
proxy: false
|
|
}
|
|
);
|
|
|
|
if (response.data.success && response.data.code === 200) {
|
|
return res.json({
|
|
success: true,
|
|
data: response.data.data
|
|
});
|
|
} else {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: response.data.message || '获取账号信息失败'
|
|
});
|
|
}
|
|
} catch (error: any) {
|
|
console.error('获取账号信息失败:', error);
|
|
if (error.response) {
|
|
return res.status(error.response.status || 500).json({
|
|
success: false,
|
|
message: error.response.data?.message || '获取账号信息失败'
|
|
});
|
|
}
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: '服务器内部错误'
|
|
});
|
|
}
|
|
}
|
|
}
|