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 = '| 載入失敗 |
';
}
}