import mongoose from "mongoose"; import bcrypt from "bcrypt"; const userSchema = new mongoose.Schema({ email: { type: String, required: [true, "Email is Required"], unique: true, }, password: { type: String, required: [true, "Password is Required"], }, firstName: { type: String, required: false, }, lastName: { type: String, required: false, }, image: { type: String, required: false, }, profileSetup: { type: Boolean, default: false, }, color: { type: Number, required: false, }, role: { type: String, enum: ["mentor", "learner"], // Set allowed values for role default: "learner", // Set default role required: true, }, }); userSchema.pre("save", async function (next) { const salt = await bcrypt.genSalt(); this.password = await bcrypt.hash(this.password, salt); next(); }); userSchema.statics.login = async function (email, password) { const user = await this.findOne({ email }); if (user) { const auth = await bcrypt.compare(password, user.password); if (auth) { return user; } throw Error("incorrect password"); } throw Error("incorrect email"); }; const User = mongoose.model("Users", userSchema); export default User;