Spaces:
Running
Running
| import mongoose from "mongoose"; | |
| import bcrypt from "bcrypt"; | |
| import jwt from "jsonwebtoken"; | |
| const userSchema = new mongoose.Schema( | |
| { | |
| fullName: { | |
| type: String, | |
| required: [true,"fullName name cannot be empty"], | |
| trim:true | |
| }, | |
| password: { | |
| type: String, | |
| required: [true,"password is required"], | |
| }, | |
| avatar: { | |
| type: String ,// Cloudinary image URL | |
| }, | |
| email:{ | |
| type:String, | |
| required:[true,"email is required"], | |
| unique:true, | |
| trim:true | |
| }, | |
| username: { | |
| type: String, | |
| required: [true, "username is required"], | |
| unique: true, | |
| trim: true, | |
| lowercase: true | |
| }, | |
| refreshToken: { | |
| type: String | |
| }, | |
| resumes: [{type:mongoose.Schema.ObjectId,ref:"templates",trim:true}], // URLs of previously generated resumes | |
| aboutUser: {type:String,trim:true}, // statements about user | |
| temp_data:Object | |
| }, | |
| { | |
| timestamps: true // createdAt & updatedAt auto | |
| } | |
| ); | |
| userSchema.pre("save", async function () { | |
| if(!this.isModified("password")) return; | |
| this.password = await bcrypt.hash(this.password, 10) | |
| }) | |
| userSchema.methods.isPasswordCorrect = async function(password:any){ | |
| return await bcrypt.compare(password, this.password) | |
| } | |
| userSchema.methods.generateAccessToken = function(){ | |
| return jwt.sign( | |
| { | |
| _id: this._id, | |
| email: this.email, | |
| username: this.username, | |
| fullName: this.fullName | |
| }, | |
| process.env.ACCESS_TOKEN_SECRET as string, | |
| { | |
| expiresIn: process.env.ACCESS_TOKEN_EXPIRY | |
| } | |
| ) | |
| } | |
| userSchema.methods.generateRefreshToken = function(){ | |
| return jwt.sign( | |
| { | |
| _id: this._id, | |
| }, | |
| process.env.REFRESH_TOKEN_SECRET as string, | |
| { | |
| expiresIn: process.env.REFRESH_TOKEN_EXPIRY | |
| } | |
| ) | |
| } | |
| const User = mongoose.model("User", userSchema); | |
| export default User; | |