diff --git a/backend/src/models/User.ts b/backend/src/models/User.ts index 518a7b5..6c0bc02 100644 --- a/backend/src/models/User.ts +++ b/backend/src/models/User.ts @@ -3,6 +3,7 @@ import { Schema, model, Document } from 'mongoose'; export interface IUser extends Document { email: string; passwordHash: string; + name?: string; createdAt: Date; updatedAt: Date; } @@ -10,6 +11,7 @@ export interface IUser extends Document { const UserSchema = new Schema({ email: { type: String, required: true, unique: true, index: true }, passwordHash: { type: String, required: true } + , name: { type: String } }, { timestamps: true }); export const User = model('User', UserSchema); diff --git a/backend/src/routes/auth.ts b/backend/src/routes/auth.ts index 9b6e159..b563e22 100644 --- a/backend/src/routes/auth.ts +++ b/backend/src/routes/auth.ts @@ -6,13 +6,13 @@ import { signToken } from '../middleware/auth.js'; const router = Router(); router.post('/register', async (req, res) => { - const { email, password } = req.body || {}; + const { email, password, name } = req.body || {}; if (!email || !password) return res.status(400).json({ error: 'MISSING_FIELDS' }); const exist = await User.findOne({ email }); if (exist) return res.status(409).json({ error: 'EMAIL_EXISTS' }); const passwordHash = await bcrypt.hash(password, 10); - const user = await User.create({ email, passwordHash }); - return res.json({ token: signToken(user.id), user: { id: user.id, email: user.email } }); + const user = await User.create({ email, passwordHash, name }); + return res.json({ token: signToken(user.id), user: { id: user.id, email: user.email, name: user.name } }); }); router.post('/login', async (req, res) => { @@ -22,7 +22,7 @@ router.post('/login', async (req, res) => { if (!user) return res.status(401).json({ error: 'INVALID_CREDENTIALS' }); const ok = await bcrypt.compare(password, user.passwordHash); if (!ok) return res.status(401).json({ error: 'INVALID_CREDENTIALS' }); - return res.json({ token: signToken(user.id), user: { id: user.id, email: user.email } }); + return res.json({ token: signToken(user.id), user: { id: user.id, email: user.email, name: user.name } }); }); export default router; diff --git a/frontend/package.json b/frontend/package.json index 258ecea..2af11bd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,6 +15,9 @@ "pinia": "^2.1.7", "vue": "^3.4.29", "vue-router": "^4.3.0" + ,"marked": "^6.0.0", + "dompurify": "^3.0.0", + "highlight.js": "^11.8.0" }, "devDependencies": { "@types/node": "^24.3.0", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b4ff461..167e371 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -9,12 +9,24 @@