```javascript const mongoose = require('mongoose'); const bcrypt = require('bcryptjs'); const UserSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, role: { type: String, enum: ['admin', 'manager', 'employee'], default: 'employee' }, department: { type: mongoose.Schema.Types.ObjectId, ref: 'Department' }, date: { type: Date, default: Date.now } }); UserSchema.pre('save', async function(next) { if (!this.isModified('password')) return next(); const salt = await bcrypt.genSalt(10); this.password = await bcrypt.hash(this.password, salt); next(); }); module.exports = mongoose.model('User', UserSchema); ```