Skip to main content
Glama
permissions.js4.8 kB
// Role-based Permission System /** * Sistem rolleri ve yetkileri */ export const ROLES = { ADMIN: 'admin', MANAGER: 'manager', EMPLOYEE: 'employee' }; /** * İzin türleri */ export const PERMISSIONS = { // Kullanıcı yönetimi USER_CREATE: 'user:create', USER_READ: 'user:read', USER_UPDATE: 'user:update', USER_DELETE: 'user:delete', USER_LIST: 'user:list', USER_SEARCH: 'user:search', // Telefon transkript yönetimi TRANSCRIPT_CREATE: 'transcript:create', TRANSCRIPT_READ: 'transcript:read', TRANSCRIPT_UPDATE: 'transcript:update', TRANSCRIPT_DELETE: 'transcript:delete', TRANSCRIPT_LIST: 'transcript:list', TRANSCRIPT_SEARCH: 'transcript:search', TRANSCRIPT_ANALYTICS: 'transcript:analytics', TRANSCRIPT_EXPORT: 'transcript:export', // Çağrı yönetimi CALL_VIEW_ALL: 'call:view_all', CALL_VIEW_OWN: 'call:view_own', CALL_ASSIGN: 'call:assign', CALL_ESCALATE: 'call:escalate', // Sistem yönetimi SYSTEM_ADMIN: 'system:admin', PROFILE_UPDATE: 'profile:update', PASSWORD_CHANGE: 'password:change', // Audit log yönetimi AUDIT_READ: 'audit:read', AUDIT_READ_ALL: 'audit:read_all', AUDIT_READ_SENSITIVE: 'audit:read_sensitive' }; /** * Role bazında izin matrisi */ export const ROLE_PERMISSIONS = { [ROLES.ADMIN]: [ // Admin tüm yetkilere sahip ...Object.values(PERMISSIONS) ], [ROLES.MANAGER]: [ // Kullanıcı yönetimi (kısıtlı) PERMISSIONS.USER_READ, PERMISSIONS.USER_UPDATE, PERMISSIONS.USER_LIST, PERMISSIONS.USER_SEARCH, // Telefon transkript yönetimi PERMISSIONS.TRANSCRIPT_CREATE, PERMISSIONS.TRANSCRIPT_READ, PERMISSIONS.TRANSCRIPT_UPDATE, PERMISSIONS.TRANSCRIPT_LIST, PERMISSIONS.TRANSCRIPT_SEARCH, PERMISSIONS.TRANSCRIPT_ANALYTICS, PERMISSIONS.TRANSCRIPT_EXPORT, // Çağrı yönetimi PERMISSIONS.CALL_VIEW_ALL, PERMISSIONS.CALL_ASSIGN, PERMISSIONS.CALL_ESCALATE, // Audit log PERMISSIONS.AUDIT_READ, // Profil PERMISSIONS.PROFILE_UPDATE, PERMISSIONS.PASSWORD_CHANGE ], [ROLES.EMPLOYEE]: [ // Kullanıcı yönetimi (sadece okuma) PERMISSIONS.USER_READ, PERMISSIONS.USER_LIST, PERMISSIONS.USER_SEARCH, // Telefon transkript (kendi çağrıları) PERMISSIONS.TRANSCRIPT_CREATE, PERMISSIONS.TRANSCRIPT_READ, PERMISSIONS.TRANSCRIPT_UPDATE, PERMISSIONS.TRANSCRIPT_LIST, PERMISSIONS.TRANSCRIPT_SEARCH, // Çağrı yönetimi (kendi çağrıları) PERMISSIONS.CALL_VIEW_OWN, // Audit log (sadece kendi logları) PERMISSIONS.AUDIT_READ, // Profil PERMISSIONS.PROFILE_UPDATE, PERMISSIONS.PASSWORD_CHANGE ] }; /** * Kullanıcının belirli bir yetkiye sahip olup olmadığını kontrol eder */ export function hasPermission(userRole, permission) { if (!userRole || !permission) return false; const rolePermissions = ROLE_PERMISSIONS[userRole]; if (!rolePermissions) return false; return rolePermissions.includes(permission); } /** * Kullanıcının birden fazla yetkiye sahip olup olmadığını kontrol eder */ export function hasAnyPermission(userRole, permissions) { if (!userRole || !permissions || !Array.isArray(permissions)) return false; return permissions.some(permission => hasPermission(userRole, permission)); } /** * Kullanıcının tüm yetkilere sahip olup olmadığını kontrol eder */ export function hasAllPermissions(userRole, permissions) { if (!userRole || !permissions || !Array.isArray(permissions)) return false; return permissions.every(permission => hasPermission(userRole, permission)); } /** * Kullanıcının sahip olduğu tüm yetkileri döndürür */ export function getUserPermissions(userRole) { if (!userRole) return []; return ROLE_PERMISSIONS[userRole] || []; } /** * Kaynak bazlı yetki kontrolü (kendi kaydını düzenleyebilir) */ export function canAccessResource(userRole, userId, resourceUserId, permission) { // Admin her şeye erişebilir if (userRole === ROLES.ADMIN) return true; // Kullanıcı kendi kaydına erişebilir if (userId === resourceUserId) { return hasPermission(userRole, permission); } // Manager kendi departmanındaki kullanıcılara erişebilir (gelecekte eklenebilir) if (userRole === ROLES.MANAGER) { return hasPermission(userRole, permission); } return false; } /** * Yetki hatası fırlatır */ export function throwPermissionError(permission) { throw new Error(`Bu işlem için '${permission}' yetkisine sahip değilsiniz`); } /** * Middleware benzeri yetki kontrolü */ export function requirePermission(userRole, permission) { if (!hasPermission(userRole, permission)) { throwPermissionError(permission); } }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yusuferenkt/mcp-database'

If you have feedback or need assistance with the MCP directory API, please join our Discord server