Files
linux-odyssey/packages/models/loginAttempt.ts
T
Justin Lin ccbc4ff4b0 feat(rate-limiting): implement rate limiting for login attempts and enhance configuration
- Added environment variables for `RATE_LIMIT_MAX_FAILED_ATTEMPTS` and `RATE_LIMIT_LOCKOUT_TIME`
- Integrated rate limiting into the login process with a maximum of 5 failed attempts
- Refactored login attempt recording into the `authRouter`
- Removed deprecated `recordLogin` middleware and adjusted related logic
2025-04-27 16:29:03 +08:00

30 lines
724 B
TypeScript

import { model, Schema, Document } from 'mongoose'
export interface ILoginAttempt {
username: string
ip: string
userAgent: string
time: Date
success: boolean
message: string
}
export type LoginAttemptDocument = ILoginAttempt & Document
const LoginAttemptSchema = new Schema<LoginAttemptDocument>(
{
username: { type: String, required: true },
ip: { type: String, required: true },
userAgent: { type: String, required: true },
time: { type: Date, default: Date.now, required: true },
success: { type: Boolean, required: true },
message: { type: String },
},
{ timestamps: true }
)
export const LoginAttempt = model<LoginAttemptDocument>(
'LoginAttempt',
LoginAttemptSchema
)