Migrate project from typing_practiceweb

This commit is contained in:
2026-05-14 16:04:14 +08:00
parent dbc5425706
commit 0e87d5546d
225 changed files with 92811 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
import { Request, Response } from 'express';
import { OAuth2Client } from '../models/oauth2';
import { generateRandomString } from '../utils/crypto';
export class AdminController {
// 创建OAuth2客户端
async createOAuth2Client(req: Request, res: Response) {
const { name, redirectUris, scope } = req.body;
try {
const clientId = generateRandomString(24);
const clientSecret = generateRandomString(32);
const client = new OAuth2Client({
name,
clientId,
clientSecret,
redirectUris,
scope: scope.split(' '),
grants: ['authorization_code']
});
await client.save();
res.json({
clientId,
clientSecret,
name,
redirectUris,
scope
});
} catch (error) {
res.status(500).json({ error: 'server_error1' });
}
}
// 获取OAuth2客户端列表
async listOAuth2Clients(req: Request, res: Response) {
try {
const clients = await OAuth2Client.find({}, {
clientSecret: 0
});
res.json(clients);
} catch (error) {
res.status(500).json({ error: 'server_error2' });
}
}
// 获取单个OAuth2客户端
async getOAuth2Client(req: Request, res: Response) {
try {
const { id } = req.params;
const client = await OAuth2Client.findOne({ clientId: id }, {
clientSecret: 0
});
if (!client) {
return res.status(404).json({ error: 'client_not_found' });
}
res.json(client);
} catch (error) {
res.status(500).json({ error: 'server_error9' });
}
}
// 更新OAuth2客户端
async updateOAuth2Client(req: Request, res: Response) {
try {
const { id } = req.params;
const { name, redirectUris, scope } = req.body;
const client = await OAuth2Client.findOne({ clientId: id });
if (!client) {
return res.status(404).json({ error: 'client_not_found' });
}
const updateData = {
name,
redirectUris,
scope: scope.split(' ')
};
await OAuth2Client.updateOne({ clientId: id }, updateData);
res.json({ ...updateData, clientId: id });
} catch (error) {
res.status(500).json({ error: 'server_error3' });
}
}
// 删除OAuth2客户端
async deleteOAuth2Client(req: Request, res: Response) {
try {
const { id } = req.params;
const result = await OAuth2Client.deleteOne({ clientId: id });
if (result.deletedCount === 0) {
return res.status(404).json({ error: 'client_not_found' });
}
res.status(204).send();
} catch (error) {
res.status(500).json({ error: 'server_error4' });
}
}
}