Spaces:
Sleeping
Sleeping
Upload folder using huggingface_hub
Browse files
routes/tutorial-refinity.js
CHANGED
|
@@ -562,6 +562,7 @@ router.get('/tasks', async (req, res) => {
|
|
| 562 |
try {
|
| 563 |
const weekNumber = parseInt(req.query.weekNumber) || null;
|
| 564 |
const isAdmin = isAdminUser(req);
|
|
|
|
| 565 |
|
| 566 |
let query = {};
|
| 567 |
if (weekNumber) {
|
|
@@ -571,12 +572,10 @@ router.get('/tasks', async (req, res) => {
|
|
| 571 |
let tasks = await TutorialRefinityTask.find(query).sort({ createdAt: -1 }).lean();
|
| 572 |
|
| 573 |
// For non-admin users, only show admin-created tasks
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
|
| 578 |
-
});
|
| 579 |
-
}
|
| 580 |
|
| 581 |
res.json(tasks);
|
| 582 |
} catch (e) {
|
|
@@ -660,12 +659,14 @@ router.get('/tasks/:taskId/versions', async (req, res) => {
|
|
| 660 |
|
| 661 |
let versions = await TutorialRefinityVersion.find({ taskId }).sort({ versionNumber: 1 });
|
| 662 |
|
| 663 |
-
// For non-admin users
|
|
|
|
| 664 |
if (!isAdmin && currentUser) {
|
| 665 |
versions = versions.filter(v => {
|
| 666 |
const author = String(v.originalAuthor || '').toLowerCase();
|
| 667 |
const revised = String(v.revisedBy || '').toLowerCase();
|
| 668 |
-
|
|
|
|
| 669 |
});
|
| 670 |
}
|
| 671 |
|
|
|
|
| 562 |
try {
|
| 563 |
const weekNumber = parseInt(req.query.weekNumber) || null;
|
| 564 |
const isAdmin = isAdminUser(req);
|
| 565 |
+
const currentUser = getCurrentUser(req);
|
| 566 |
|
| 567 |
let query = {};
|
| 568 |
if (weekNumber) {
|
|
|
|
| 572 |
let tasks = await TutorialRefinityTask.find(query).sort({ createdAt: -1 }).lean();
|
| 573 |
|
| 574 |
// For non-admin users, only show admin-created tasks
|
| 575 |
+
// Admin-created tasks are those where createdBy matches an admin user
|
| 576 |
+
// Since only admins can create tasks (enforced in POST), all tasks are admin-created
|
| 577 |
+
// So we show all tasks to all users - they can all access the same admin-created tasks
|
| 578 |
+
// Each user's revisions are kept separate via version filtering
|
|
|
|
|
|
|
| 579 |
|
| 580 |
res.json(tasks);
|
| 581 |
} catch (e) {
|
|
|
|
| 659 |
|
| 660 |
let versions = await TutorialRefinityVersion.find({ taskId }).sort({ versionNumber: 1 });
|
| 661 |
|
| 662 |
+
// For non-admin users: show admin-created first version (version 1) + their own versions
|
| 663 |
+
// This allows students to start revising from the admin-created starting point
|
| 664 |
if (!isAdmin && currentUser) {
|
| 665 |
versions = versions.filter(v => {
|
| 666 |
const author = String(v.originalAuthor || '').toLowerCase();
|
| 667 |
const revised = String(v.revisedBy || '').toLowerCase();
|
| 668 |
+
// Include version 1 (admin-created starting point) OR user's own versions
|
| 669 |
+
return v.versionNumber === 1 || author === currentUser || revised === currentUser;
|
| 670 |
});
|
| 671 |
}
|
| 672 |
|