linguabot commited on
Commit
970723c
·
verified ·
1 Parent(s): f438a10

Upload folder using huggingface_hub

Browse files
client/src/pages/TutorialTasks.tsx CHANGED
@@ -1139,6 +1139,7 @@ const TutorialTasks: React.FC = () => {
1139
  const nextHidden = !(curJson?.week?.hidden);
1140
  await fetch(`${base}/api/admin/weeks/tutorial/${selectedWeek}/visibility`,{ method:'PUT', headers:{ 'Content-Type':'application/json', 'Authorization': localStorage.getItem('token')?`Bearer ${localStorage.getItem('token')}`:'', 'user-role':'admin' }, body: JSON.stringify({ hidden: nextHidden }) });
1141
  await fetchTutorialTasks(true);
 
1142
  } catch (e) { console.error(e);}
1143
  }}
1144
  className="inline-flex items-center px-3 py-1.5 text-xs rounded-md border border-ui-border bg-white/70"
 
1139
  const nextHidden = !(curJson?.week?.hidden);
1140
  await fetch(`${base}/api/admin/weeks/tutorial/${selectedWeek}/visibility`,{ method:'PUT', headers:{ 'Content-Type':'application/json', 'Authorization': localStorage.getItem('token')?`Bearer ${localStorage.getItem('token')}`:'', 'user-role':'admin' }, body: JSON.stringify({ hidden: nextHidden }) });
1141
  await fetchTutorialTasks(true);
1142
+ alert(nextHidden ? 'Week hidden from students.' : 'Week shown to students.');
1143
  } catch (e) { console.error(e);}
1144
  }}
1145
  className="inline-flex items-center px-3 py-1.5 text-xs rounded-md border border-ui-border bg-white/70"
client/src/pages/WeeklyPractice.tsx CHANGED
@@ -1470,6 +1470,7 @@ const WeeklyPractice: React.FC = () => {
1470
  const nextHidden = !(curJson?.week?.hidden);
1471
  await fetch(`${base}/api/admin/weeks/weekly-practice/${selectedWeek}/visibility`,{ method:'PUT', headers:{ 'Content-Type':'application/json', 'Authorization': localStorage.getItem('token')?`Bearer ${localStorage.getItem('token')}`:'', 'user-role':'admin' }, body: JSON.stringify({ hidden: nextHidden }) });
1472
  await fetchWeeklyPractice(true);
 
1473
  } catch (e) { console.error(e);}
1474
  }}
1475
  className="inline-flex items-center px-3 py-1.5 text-xs rounded-md border border-ui-border bg-white/70"
 
1470
  const nextHidden = !(curJson?.week?.hidden);
1471
  await fetch(`${base}/api/admin/weeks/weekly-practice/${selectedWeek}/visibility`,{ method:'PUT', headers:{ 'Content-Type':'application/json', 'Authorization': localStorage.getItem('token')?`Bearer ${localStorage.getItem('token')}`:'', 'user-role':'admin' }, body: JSON.stringify({ hidden: nextHidden }) });
1472
  await fetchWeeklyPractice(true);
1473
+ alert(nextHidden ? 'Week hidden from students.' : 'Week shown to students.');
1474
  } catch (e) { console.error(e);}
1475
  }}
1476
  className="inline-flex items-center px-3 py-1.5 text-xs rounded-md border border-ui-border bg-white/70"
client/src/services/api.ts CHANGED
@@ -35,10 +35,13 @@ api.interceptors.request.use(
35
 
36
  // Add user role and info to headers
37
  const user = localStorage.getItem('user');
 
38
  if (user) {
39
  try {
40
  const userData = JSON.parse(user);
41
- config.headers['user-role'] = userData.role || 'visitor';
 
 
42
  const derivedUsername = userData.username || userData.name || userData.displayName || (userData.email ? String(userData.email).split('@')[0] : undefined);
43
  config.headers['user-info'] = JSON.stringify({
44
  _id: userData._id || userData.id,
 
35
 
36
  // Add user role and info to headers
37
  const user = localStorage.getItem('user');
38
+ const viewMode = (localStorage.getItem('viewMode') || 'auto');
39
  if (user) {
40
  try {
41
  const userData = JSON.parse(user);
42
+ // Respect viewMode: when switched to student, force requests to be treated as student
43
+ const effectiveRole = viewMode === 'student' ? 'student' : (userData.role || 'visitor');
44
+ config.headers['user-role'] = effectiveRole;
45
  const derivedUsername = userData.username || userData.name || userData.displayName || (userData.email ? String(userData.email).split('@')[0] : undefined);
46
  config.headers['user-info'] = JSON.stringify({
47
  _id: userData._id || userData.id,