Migrate project from typing_practiceweb
This commit is contained in:
42
server/models/oauth2.ts
Normal file
42
server/models/oauth2.ts
Normal 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);
|
||||
Reference in New Issue
Block a user