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

42
server/models/oauth2.ts Normal file
View File

@@ -0,0 +1,42 @@
import { Schema, model } from 'mongoose';
// OAuth2客户端应用
const OAuth2ClientSchema = new Schema({
clientId: { type: String, required: true, unique: true },
clientSecret: { type: String, required: true },
name: { type: String, required: true },
redirectUris: [{ type: String }],
grants: [{ type: String }],
scope: [{ type: String }],
createdAt: { type: Date, default: Date.now },
linkedUsers: [{
userId: String,
username: String,
email: String
}]
});
// OAuth2授权码
const OAuth2AuthorizationCodeSchema = new Schema({
code: { type: String, required: true, unique: true },
clientId: { type: String, required: true },
userId: { type: Schema.Types.ObjectId, ref: 'User', required: true },
scope: [{ type: String }],
redirectUri: { type: String, required: true },
expiresAt: { type: Date, required: true },
createdAt: { type: Date, default: Date.now },
});
// OAuth2访问令牌
const OAuth2AccessTokenSchema = new Schema({
accessToken: { type: String, required: true, unique: true },
clientId: { type: String, required: true },
userId: { type: Schema.Types.ObjectId, ref: 'User', required: true },
scope: [{ type: String }],
expiresAt: { type: Date, required: true },
createdAt: { type: Date, default: Date.now },
});
export const OAuth2Client = model('OAuth2Client', OAuth2ClientSchema);
export const OAuth2AuthorizationCode = model('OAuth2AuthorizationCode', OAuth2AuthorizationCodeSchema);
export const OAuth2AccessToken = model('OAuth2AccessToken', OAuth2AccessTokenSchema);