Skip to main content
Glama
auth.js2.06 kB
import jwt from 'jsonwebtoken'; import bcrypt from 'bcryptjs'; import { hasPermission, requirePermission, ROLES } from './permissions.js'; // JWT Secret - Environment variable'dan okunuyor const JWT_SECRET = process.env.JWT_SECRET || 'your-super-secret-jwt-key-change-this-in-production'; const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || '24h'; /** * JWT token oluşturur */ export function generateToken(userId, email, role) { return jwt.sign( { userId, email, role, iat: Math.floor(Date.now() / 1000) }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN } ); } /** * JWT token doğrular */ export function verifyToken(token) { try { return jwt.verify(token, JWT_SECRET); } catch (error) { throw new Error('Geçersiz token'); } } /** * Şifreyi hash'ler */ export async function hashPassword(password) { const saltRounds = 10; return await bcrypt.hash(password, saltRounds); } /** * Şifreyi doğrular */ export async function comparePassword(password, hashedPassword) { return await bcrypt.compare(password, hashedPassword); } /** * Token'dan kullanıcı bilgilerini çıkarır */ export function extractUserFromToken(token) { try { const decoded = verifyToken(token); return { userId: decoded.userId, email: decoded.email, role: decoded.role }; } catch (error) { return null; } } /** * Token ile yetki kontrolü yapar */ export function checkPermissionWithToken(token, permission) { const user = extractUserFromToken(token); if (!user) { throw new Error('Geçersiz token'); } if (!hasPermission(user.role, permission)) { throw new Error(`Bu işlem için '${permission}' yetkisine sahip değilsiniz`); } return user; } /** * Kullanıcı rolünü validate eder */ export function validateRole(role) { const validRoles = Object.values(ROLES); return validRoles.includes(role); }

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