diff --git a/server/routers/kfu-m-24-1/sber_mobile/auth.js b/server/routers/kfu-m-24-1/sber_mobile/auth.js index faff6fa..39ef7bd 100644 --- a/server/routers/kfu-m-24-1/sber_mobile/auth.js +++ b/server/routers/kfu-m-24-1/sber_mobile/auth.js @@ -1,18 +1,10 @@ const router = require('express').Router(); -const { createClient } = require('@supabase/supabase-js'); -const { getSupabaseUrl, getSupabaseKey } = require('./get-constants'); - -let supabase; - -(async () => { - const supabaseUrl = await getSupabaseUrl(); - const supabaseAnonKey = await getSupabaseKey(); - supabase = createClient(supabaseUrl, supabaseAnonKey); // supabase — глобальная переменная -})(); +const { getSupabaseClient } = require('./supabaseClient'); // POST /sign-in router.post('/sign-in', async (req, res) => { const { email, password } = req.body; + const supabase = getSupabaseClient(); const { data, error } = await supabase.auth.signInWithPassword({ email, password }); if (error) return res.status(400).json({ error: error.message }); res.json(data); @@ -21,6 +13,7 @@ router.post('/sign-in', async (req, res) => { // POST /sign-up router.post('/sign-up', async (req, res) => { const { email, password } = req.body; + const supabase = getSupabaseClient(); const { data, error } = await supabase.auth.signUp({ email, password }); if (error) return res.status(400).json({ error: error.message }); res.json(data); @@ -29,6 +22,7 @@ router.post('/sign-up', async (req, res) => { // POST /sign-out router.post('/sign-out', async (req, res) => { const { access_token } = req.body; + const supabase = getSupabaseClient(); supabase.auth.setSession({ access_token, refresh_token: '' }); const { error } = await supabase.auth.signOut(); if (error) return res.status(400).json({ error: error.message }); @@ -38,6 +32,7 @@ router.post('/sign-out', async (req, res) => { // POST /reset-password router.post('/reset-password', async (req, res) => { const { email } = req.body; + const supabase = getSupabaseClient(); const { data, error } = await supabase.auth.resetPasswordForEmail(email); if (error) return res.status(400).json({ error: error.message }); res.json(data); @@ -46,6 +41,7 @@ router.post('/reset-password', async (req, res) => { // POST /update-password router.post('/update-password', async (req, res) => { const { access_token, newPassword } = req.body; + const supabase = getSupabaseClient(); supabase.auth.setSession({ access_token, refresh_token: '' }); const { data, error } = await supabase.auth.updateUser({ password: newPassword }); if (error) return res.status(400).json({ error: error.message }); diff --git a/server/routers/kfu-m-24-1/sber_mobile/index.js b/server/routers/kfu-m-24-1/sber_mobile/index.js index 8429488..e93bb14 100644 --- a/server/routers/kfu-m-24-1/sber_mobile/index.js +++ b/server/routers/kfu-m-24-1/sber_mobile/index.js @@ -1,6 +1,8 @@ const router = require('express').Router(); const authRouter = require('./auth'); +const supabaseRouter = require('./supabaseClient'); module.exports = router; -router.use('/auth', authRouter); \ No newline at end of file +router.use('/auth', authRouter); +router.use('/supabase', supabaseRouter); \ No newline at end of file diff --git a/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js b/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js new file mode 100644 index 0000000..8b1c7b7 --- /dev/null +++ b/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js @@ -0,0 +1,37 @@ +const { createClient } = require('@supabase/supabase-js'); +const { getSupabaseUrl, getSupabaseKey } = require('./get-constants'); + +let supabase = null; + +async function initSupabaseClient() { + const supabaseUrl = await getSupabaseUrl(); + const supabaseAnonKey = await getSupabaseKey(); + supabase = createClient(supabaseUrl, supabaseAnonKey); + return supabase; +} + +function getSupabaseClient() { + if (!supabase) { + throw new Error('Supabase client is not initialized. Call initSupabaseClient first.'); + } + return supabase; +} + +// POST /refresh-supabase-client +router.post('/refresh-supabase-client', async (req, res) => { +try { + await initSupabaseClient(); + res.json({ success: true, message: 'Supabase client refreshed' }); +} catch (error) { + res.status(500).json({ error: error.message }); +} +}); + +// Инициализация клиента при старте +(async () => { + await initSupabaseClient(); +})(); + +module.exports = { + getSupabaseClient, +}; \ No newline at end of file