frontend-app / server /model /UserModel.js
Keys
fixes
2ecbb66
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;