feature/add supabase auth

This commit is contained in:
Max
2025-05-18 21:58:54 +03:00
parent 8a1868482c
commit f89729dbeb
6 changed files with 191 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ const router = Router()
router.use('/eng-it-lean', require('./eng-it-lean/index'))
router.use('/sberhubproject', require('./sberhubproject/index'))
router.use('/sber_web', require('./sber_web/index'))
router.use('/sber_mobile', require('./sber_mobile/index'))
module.exports = router

View File

@@ -0,0 +1,54 @@
const router = require('express').Router();
const { createClient } = require('@supabase/supabase-js');
const { getSupabaseUrl, getSupabaseKey } = require('./get-constants');
(async () => {
const supabaseUrl = await getSupabaseUrl();
const supabaseAnonKey = await getSupabaseKey();
supabase = createClient(supabaseUrl, supabaseAnonKey); // supabase — глобальная переменная
})();
// POST /sign-in
router.post('/sign-in', async (req, res) => {
const { email, password } = req.body;
const { data, error } = await supabase.auth.signInWithPassword({ email, password });
if (error) return res.status(400).json({ error: error.message });
res.json(data);
});
// POST /sign-up
router.post('/sign-up', async (req, res) => {
const { email, password } = req.body;
const { data, error } = await supabase.auth.signUp({ email, password });
if (error) return res.status(400).json({ error: error.message });
res.json(data);
});
// POST /sign-out
router.post('/sign-out', async (req, res) => {
const { access_token } = req.body;
supabase.auth.setSession({ access_token, refresh_token: '' });
const { error } = await supabase.auth.signOut();
if (error) return res.status(400).json({ error: error.message });
res.json({ success: true });
});
// POST /reset-password
router.post('/reset-password', async (req, res) => {
const { email } = req.body;
const { data, error } = await supabase.auth.resetPasswordForEmail(email);
if (error) return res.status(400).json({ error: error.message });
res.json(data);
});
// POST /update-password
router.post('/update-password', async (req, res) => {
const { access_token, newPassword } = req.body;
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 });
res.json(data);
});
module.exports = router;

View File

@@ -0,0 +1,18 @@
const fetch = require('node-fetch');
const getSupabaseUrl = async () => {
const response = await fetch('https://admin.bro-js.ru/api/config/v1/dev');
const data = await response.json();
return data.features['sber_mobile'].SUPABASE_URL.value;
};
const getSupabaseKey = async () => {
const response = await fetch('https://admin.bro-js.ru/api/config/v1/dev');
const data = await response.json();
return data.features['sber_mobile'].SUPABASE_KEY.value;
};
module.exports = {
getSupabaseUrl,
getSupabaseKey,
};

View File

@@ -0,0 +1,6 @@
const router = require('express').Router();
const authRouter = require('./auth');
module.exports = router;
router.use('/auth', authRouter);