40 lines
766 B
TypeScript
40 lines
766 B
TypeScript
import mongoose, {Schema} from 'mongoose';
|
|
import * as crypto from "crypto";
|
|
|
|
export enum TokenType {
|
|
API, SESSION
|
|
}
|
|
|
|
export interface IToken {
|
|
token: string
|
|
clientId: number
|
|
type: TokenType
|
|
userAgent?: string
|
|
created: Date
|
|
}
|
|
|
|
const TokenSchema = new Schema<IToken>({
|
|
token: {
|
|
type: String,
|
|
default: () => crypto.randomBytes(48).toString('hex')
|
|
},
|
|
clientId: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
type: {
|
|
type: Number,
|
|
enum: TokenType,
|
|
default: TokenType.SESSION
|
|
},
|
|
userAgent: {
|
|
type: String,
|
|
required: false
|
|
},
|
|
created: {
|
|
type: Date,
|
|
default: Date.now
|
|
}
|
|
});
|
|
|
|
export const Token = mongoose.model('tokens', TokenSchema); |