Spaces:
Runtime error
Runtime error
| 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; | |