import { getInstructors, addInstructor, removeInstructor, checkInstructorPermission } from "../services/auth.js"; import { auth } from "../services/firebase.js"; export function renderInstructorAdminView() { return `

講師權限管理

Email (帳號) 姓名 權限 操作
載入中...
`; } export function setupInstructorAdminEvents() { // Permission Check const user = auth.currentUser; if (!user) { alert("請先登入"); window.location.hash = ''; // Back to Landing return; } checkInstructorPermission(user).then(inst => { if (!inst || !inst.permissions?.includes('manage_instructors')) { alert("您沒有權限管理講師"); window.location.hash = 'instructor'; return; } loadInstructorList(); }).catch(e => { console.error(e); alert("權限驗證失敗"); window.location.hash = 'instructor'; }); // Navigation document.getElementById('back-instructor-btn').addEventListener('click', () => { window.location.hash = 'instructor'; }); // Modal Handling document.getElementById('add-instructor-btn').addEventListener('click', () => { document.getElementById('input-email').value = ''; document.getElementById('input-name').value = ''; document.querySelectorAll('.perm-check').forEach(c => c.checked = true); document.getElementById('instructor-modal').classList.remove('hidden'); }); // Save Logic document.getElementById('save-instructor-btn').addEventListener('click', async () => { const email = document.getElementById('input-email').value.trim(); const name = document.getElementById('input-name').value.trim(); const permissions = Array.from(document.querySelectorAll('.perm-check:checked')).map(c => c.value); if (!email || !name) { alert("請填寫完整資訊"); return; } try { await addInstructor(email, name, permissions); alert("新增成功"); document.getElementById('instructor-modal').classList.add('hidden'); loadInstructorList(); } catch (e) { console.error(e); alert("新增失敗: " + e.message); } }); // Global Helpers window.removeInstructorConfirm = async (email) => { if (confirm(`確定要移除講師權限 (${email}) 嗎?`)) { try { await removeInstructor(email); loadInstructorList(); } catch (e) { console.error(e); alert("移除失敗: " + e.message); } } }; } async function loadInstructorList() { const list = document.getElementById('instructors-list'); list.innerHTML = '載入中...'; try { const instructors = await getInstructors(); if (instructors.length === 0) { list.innerHTML = '目前沒有其他講師'; return; } list.innerHTML = instructors.map(inst => ` ${inst.email} ${inst.role === 'admin' ? 'Admin' : ''} ${inst.name}
${(inst.permissions || []).map(p => ` ${p} `).join('')}
${inst.role !== 'admin' ? ` ` : '不可變更'} `).join(''); } catch (e) { console.error(e); list.innerHTML = '載入失敗'; } }