mcp-quiz-server
Version:
🧠AI-Powered Quiz Management via Model Context Protocol (MCP) - Create, manage, and take quizzes directly from VS Code, Claude, and other AI agents.
49 lines (48 loc) • 1.87 kB
JavaScript
;
/**
* @fileoverview Simple Permission Service Implementation
* @version 1.0.0
* @since 2025-07-29
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.SimplePermissionService = void 0;
class SimplePermissionService {
constructor(config = {}) {
this.config = {
defaultPermissions: ['quiz:read'],
adminUsers: [],
...config,
};
}
async hasPermission(userId, permission) {
const userPermissions = await this.getUserPermissions(userId);
return userPermissions.includes(permission);
}
async hasAnyPermission(userId, permissions) {
const userPermissions = await this.getUserPermissions(userId);
return permissions.some(permission => userPermissions.includes(permission));
}
async hasAllPermissions(userId, permissions) {
const userPermissions = await this.getUserPermissions(userId);
return permissions.every(permission => userPermissions.includes(permission));
}
async getUserPermissions(userId) {
// Check if user is admin
if (this.config.adminUsers.includes(userId)) {
return ['*']; // Admin has all permissions
}
// Return default permissions for now
// In a real implementation, this would query a database or external service
return [...this.config.defaultPermissions];
}
async canAccessQuiz(quizId, userId) {
// Simple implementation - allow access for now
// In a real implementation, this would check quiz-specific permissions
if (!userId) {
return true; // Allow anonymous access for public quizzes
}
const hasReadPermission = await this.hasPermission(userId, 'quiz:read');
return hasReadPermission;
}
}
exports.SimplePermissionService = SimplePermissionService;