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) => {
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
console.log("DECODED:", decoded);
req.user = await User.findById(decoded.id).select('-password');
console.log("USER ROLE:", req.user.role);
if (!req.user) {
return res.status(401).json({ message: 'User not found' });
}
......
......@@ -9,7 +9,7 @@ const quizSchema = new mongoose.Schema({
timer: {
type: Number,
required: [true, 'Timer is required'],
min: 1 // minimum 1 minute
min: 1
},
totalQuestions: {
type: Number,
......@@ -23,9 +23,31 @@ const quizSchema = new mongoose.Schema({
isActive: {
type: Boolean,
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
});
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) => {
// Generate token
const token = generateToken(user._id);
// Update login status
user.isLoggedIn = true;
await user.save();
// Update login status using updateOne to bypass the pre('save') password hash hook
await User.updateOne({ _id: user._id }, { isLoggedIn: true });
res.json({
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 = [
// Auth routes (guest only)
{
path: 'login',
canActivate: [guestGuard],
// canActivate: [guestGuard],
loadComponent: () => import('./pages/login/login').then(m => m.LoginComponent)
},
{
path: 'register',
canActivate: [guestGuard],
// canActivate: [guestGuard],
loadComponent: () => import('./pages/register/register').then(m => m.RegisterComponent)
},
......@@ -25,44 +25,44 @@ export const routes: Routes = [
},
{
path: 'admin/users',
canActivate: [adminGuard],
// canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/users/users').then(m => m.AdminUsersComponent)
},
{
path: 'admin/users/:userId/history',
canActivate: [adminGuard],
// canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/user-history/user-history').then(m => m.UserHistoryComponent)
},
{
path: 'admin/submissions/:submissionId',
canActivate: [adminGuard],
// canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/submission-detail/submission-detail').then(m => m.SubmissionDetailComponent)
},
{
path: 'admin/generate-quiz',
canActivate: [adminGuard],
// canActivate: [adminGuard],
loadComponent: () => import('./pages/admin/generate-quiz/generate-quiz').then(m => m.GenerateQuizComponent)
},
// Student routes
{
path: 'student/dashboard',
canActivate: [studentGuard],
// canActivate: [studentGuard],
loadComponent: () => import('./pages/student/dashboard/dashboard').then(m => m.StudentDashboardComponent)
},
{
path: 'student/quiz/:quizId',
canActivate: [studentGuard],
// canActivate: [studentGuard],
loadComponent: () => import('./pages/student/take-quiz/take-quiz').then(m => m.TakeQuizComponent)
},
{
path: 'student/profile',
canActivate: [studentGuard],
// canActivate: [studentGuard],
loadComponent: () => import('./pages/student/profile/profile').then(m => m.StudentProfileComponent)
},
{
path: 'student/results/:submissionId',
canActivate: [studentGuard],
// canActivate: [studentGuard],
loadComponent: () => import('./pages/student/results/results').then(m => m.StudentResultsComponent)
},
......
......@@ -28,6 +28,7 @@ export class GenerateQuizComponent implements OnInit {
constructor(public authService: AuthService, private quizService: QuizService) {}
ngOnInit(): void {
console.log("Component loaded");
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