Spaces:
Runtime error
Runtime error
File size: 1,275 Bytes
50ca514 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 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;
|