UNPKG

sourabhrealtime

Version:

ROBUST RICH TEXT EDITOR: Single-pane contentEditable with direct text selection formatting, speech features, undo/redo, professional UI - Perfect TipTap alternative

119 lines (111 loc) 3.83 kB
// Supabase API integration for real users const SUPABASE_URL = "https://supabase.merai.app"; const SERVICE_ROLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"; export const supabaseAPI = { // Authenticate user with Supabase async authenticateUser(email, password) { try { const response = await fetch(`${SUPABASE_URL}/auth/v1/token?grant_type=password`, { method: 'POST', headers: { 'apikey': SERVICE_ROLE_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); if (response.ok) { const data = await response.json(); return { success: true, user: { id: data.user.id, email: data.user.email, name: data.user.user_metadata?.name || data.user.email.split('@')[0], role: data.user.user_metadata?.role || 'user', avatar: data.user.user_metadata?.avatar || null, created_at: data.user.created_at }, token: data.access_token }; } return { success: false, message: 'Invalid credentials' }; } catch (error) { return { success: false, message: 'Authentication failed' }; } }, // Get all users (Super Admin only) async getAllUsers() { try { const response = await fetch(`${SUPABASE_URL}/auth/v1/admin/users`, { headers: { 'apikey': SERVICE_ROLE_KEY, 'Authorization': `Bearer ${SERVICE_ROLE_KEY}`, 'Content-Type': 'application/json' } }); if (response.ok) { const data = await response.json(); return data.users ? data.users.map(user => ({ id: user.id, email: user.email, name: user.user_metadata?.name || user.email.split('@')[0], role: user.user_metadata?.role || 'user', avatar: user.user_metadata?.avatar || null, created_at: user.created_at, last_sign_in_at: user.last_sign_in_at, email_confirmed_at: user.email_confirmed_at })) : []; } return []; } catch (error) { console.error('Error fetching users:', error); return []; } }, // Create new user (Super Admin only) async createUser(email, password, name, role = 'user') { try { const response = await fetch(`${SUPABASE_URL}/auth/v1/admin/users`, { method: 'POST', headers: { 'apikey': SERVICE_ROLE_KEY, 'Authorization': `Bearer ${SERVICE_ROLE_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password, user_metadata: { name, role }, email_confirm: true }) }); if (response.ok) { const data = await response.json(); return { success: true, user: data }; } const error = await response.json(); return { success: false, message: error.message || 'User creation failed' }; } catch (error) { return { success: false, message: 'User creation failed' }; } }, // Update user role (Super Admin only) async updateUserRole(userId, role) { try { const response = await fetch(`${SUPABASE_URL}/auth/v1/admin/users/${userId}`, { method: 'PUT', headers: { 'apikey': SERVICE_ROLE_KEY, 'Authorization': `Bearer ${SERVICE_ROLE_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ user_metadata: { role } }) }); return response.ok; } catch (error) { return false; } } };