feature/add supabase auth
This commit is contained in:
54
server/routers/kfu-m-24-1/sber_mobile/auth.js
Normal file
54
server/routers/kfu-m-24-1/sber_mobile/auth.js
Normal 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;
|
||||
18
server/routers/kfu-m-24-1/sber_mobile/get-constants.js
Normal file
18
server/routers/kfu-m-24-1/sber_mobile/get-constants.js
Normal 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,
|
||||
};
|
||||
6
server/routers/kfu-m-24-1/sber_mobile/index.js
Normal file
6
server/routers/kfu-m-24-1/sber_mobile/index.js
Normal file
@@ -0,0 +1,6 @@
|
||||
const router = require('express').Router();
|
||||
const authRouter = require('./auth');
|
||||
|
||||
module.exports = router;
|
||||
|
||||
router.use('/auth', authRouter);
|
||||
Reference in New Issue
Block a user