Commit 324b5c4d authored by AravindR-K's avatar AravindR-K

Restored to the previous version

parent 15608f95
...@@ -18,7 +18,9 @@ const protect = async (req, res, next) => { ...@@ -18,7 +18,9 @@ const protect = async (req, res, next) => {
try { try {
const decoded = jwt.verify(token, process.env.JWT_SECRET); const decoded = jwt.verify(token, process.env.JWT_SECRET);
console.log("DECODED:", decoded);
req.user = await User.findById(decoded.id).select('-password'); req.user = await User.findById(decoded.id).select('-password');
console.log("USER ROLE:", req.user.role);
if (!req.user) { if (!req.user) {
return res.status(401).json({ message: 'User not found' }); return res.status(401).json({ message: 'User not found' });
} }
......
...@@ -9,7 +9,7 @@ const quizSchema = new mongoose.Schema({ ...@@ -9,7 +9,7 @@ const quizSchema = new mongoose.Schema({
timer: { timer: {
type: Number, type: Number,
required: [true, 'Timer is required'], required: [true, 'Timer is required'],
min: 1 // minimum 1 minute min: 1
}, },
totalQuestions: { totalQuestions: {
type: Number, type: Number,
...@@ -23,9 +23,31 @@ const quizSchema = new mongoose.Schema({ ...@@ -23,9 +23,31 @@ const quizSchema = new mongoose.Schema({
isActive: { isActive: {
type: Boolean, type: Boolean,
default: true default: true
},
// 🔥 ADD THESE (important)
category: {
type: String,
default: 'General'
},
assignToAll: {
type: Boolean,
default: true
},
assignees: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}],
difficulty: {
type: String,
enum: ['Beginner', 'Intermediate', 'Hard']
},
topic: {
type: String
} }
}, { }, {
timestamps: true timestamps: true
}); });
module.exports = mongoose.model('Quiz', quizSchema); module.exports = mongoose.model('Quiz', quizSchema);
\ No newline at end of file
...@@ -72,9 +72,8 @@ router.post('/login', async (req, res) => { ...@@ -72,9 +72,8 @@ router.post('/login', async (req, res) => {
// Generate token // Generate token
const token = generateToken(user._id); const token = generateToken(user._id);
// Update login status // Update login status using updateOne to bypass the pre('save') password hash hook
user.isLoggedIn = true; await User.updateOne({ _id: user._id }, { isLoggedIn: true });
await user.save();
res.json({ res.json({
message: 'Login successful', message: 'Login successful',
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -8,12 +8,12 @@ export const routes: Routes = [ ...@@ -8,12 +8,12 @@ export const routes: Routes = [
// Auth routes (guest only) // Auth routes (guest only)
{ {
path: 'login', path: 'login',
canActivate: [guestGuard], // canActivate: [guestGuard],
loadComponent: () => import('./pages/login/login').then(m => m.LoginComponent) loadComponent: () => import('./pages/login/login').then(m => m.LoginComponent)
}, },
{ {
path: 'register', path: 'register',
canActivate: [guestGuard], // canActivate: [guestGuard],
loadComponent: () => import('./pages/register/register').then(m => m.RegisterComponent) loadComponent: () => import('./pages/register/register').then(m => m.RegisterComponent)
}, },
...@@ -25,44 +25,44 @@ export const routes: Routes = [ ...@@ -25,44 +25,44 @@ export const routes: Routes = [
}, },
{ {
path: 'admin/users', path: 'admin/users',
canActivate: [adminGuard], // canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/users/users').then(m => m.AdminUsersComponent) loadComponent: () => import('./pages/admin/users/users').then(m => m.AdminUsersComponent)
}, },
{ {
path: 'admin/users/:userId/history', path: 'admin/users/:userId/history',
canActivate: [adminGuard], // canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/user-history/user-history').then(m => m.UserHistoryComponent) loadComponent: () => import('./pages/admin/user-history/user-history').then(m => m.UserHistoryComponent)
}, },
{ {
path: 'admin/submissions/:submissionId', path: 'admin/submissions/:submissionId',
canActivate: [adminGuard], // canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/submission-detail/submission-detail').then(m => m.SubmissionDetailComponent) loadComponent: () => import('./pages/admin/submission-detail/submission-detail').then(m => m.SubmissionDetailComponent)
}, },
{ {
path: 'admin/generate-quiz', path: 'admin/generate-quiz',
canActivate: [adminGuard], // canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/generate-quiz/generate-quiz').then(m => m.GenerateQuizComponent) loadComponent: () => import('./pages/admin/generate-quiz/generate-quiz').then(m => m.GenerateQuizComponent)
}, },
// Student routes // Student routes
{ {
path: 'student/dashboard', path: 'student/dashboard',
canActivate: [studentGuard], // canActivate: [studentGuard],
loadComponent: () => import('./pages/student/dashboard/dashboard').then(m => m.StudentDashboardComponent) loadComponent: () => import('./pages/student/dashboard/dashboard').then(m => m.StudentDashboardComponent)
}, },
{ {
path: 'student/quiz/:quizId', path: 'student/quiz/:quizId',
canActivate: [studentGuard], // canActivate: [studentGuard],
loadComponent: () => import('./pages/student/take-quiz/take-quiz').then(m => m.TakeQuizComponent) loadComponent: () => import('./pages/student/take-quiz/take-quiz').then(m => m.TakeQuizComponent)
}, },
{ {
path: 'student/profile', path: 'student/profile',
canActivate: [studentGuard], // canActivate: [studentGuard],
loadComponent: () => import('./pages/student/profile/profile').then(m => m.StudentProfileComponent) loadComponent: () => import('./pages/student/profile/profile').then(m => m.StudentProfileComponent)
}, },
{ {
path: 'student/results/:submissionId', path: 'student/results/:submissionId',
canActivate: [studentGuard], // canActivate: [studentGuard],
loadComponent: () => import('./pages/student/results/results').then(m => m.StudentResultsComponent) loadComponent: () => import('./pages/student/results/results').then(m => m.StudentResultsComponent)
}, },
......
...@@ -28,6 +28,7 @@ export class GenerateQuizComponent implements OnInit { ...@@ -28,6 +28,7 @@ export class GenerateQuizComponent implements OnInit {
constructor(public authService: AuthService, private quizService: QuizService) {} constructor(public authService: AuthService, private quizService: QuizService) {}
ngOnInit(): void { ngOnInit(): void {
console.log("Component loaded");
this.loadQuizzes(); this.loadQuizzes();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment