UNPKG

sourabhrealtime

Version:

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

85 lines (79 loc) 2.71 kB
const SUPABASE_URL = "https://supabase.merai.app"; const SERVICE_ROLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"; export const supabaseAuth = { async login(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 || 'editor' } }; } return { success: false, message: 'Invalid credentials' }; } catch (error) { return { success: false, message: 'Login failed' }; } }, async signup(email, password, name, role = 'editor') { 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 } }) }); if (response.ok) { return { success: true, message: 'Account created successfully' }; } const error = await response.json(); return { success: false, message: error.message || 'Signup failed' }; } catch (error) { return { success: false, message: 'Signup failed' }; } }, 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 || 'editor', created_at: user.created_at })) : []; } return []; } catch (error) { return []; } } };