From c251a640b652af7d3b5667b03402dab8e85ea68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B5=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 3 Jun 2025 12:24:19 +0300 Subject: [PATCH] add profile --- .../kfu-m-24-1/sber_mobile/get-constants.js | 7 +++ .../routers/kfu-m-24-1/sber_mobile/index.js | 2 +- .../routers/kfu-m-24-1/sber_mobile/profile.js | 54 +++++++++++++++++++ .../kfu-m-24-1/sber_mobile/supabaseClient.js | 5 +- .../kfu-m-24-1/sber_mobile/users/index.js | 26 --------- 5 files changed, 65 insertions(+), 29 deletions(-) create mode 100644 server/routers/kfu-m-24-1/sber_mobile/profile.js delete mode 100644 server/routers/kfu-m-24-1/sber_mobile/users/index.js diff --git a/server/routers/kfu-m-24-1/sber_mobile/get-constants.js b/server/routers/kfu-m-24-1/sber_mobile/get-constants.js index 0834951..fba7807 100644 --- a/server/routers/kfu-m-24-1/sber_mobile/get-constants.js +++ b/server/routers/kfu-m-24-1/sber_mobile/get-constants.js @@ -12,7 +12,14 @@ const getSupabaseKey = async () => { return data.features['sber_mobile'].SUPABASE_KEY.value; }; +const getSupabaseServiceKey = 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_SERVICE_KEY.value; +}; + module.exports = { getSupabaseUrl, getSupabaseKey, + getSupabaseServiceKey }; \ No newline at end of file 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 d645f49..f8dd26f 100644 --- a/server/routers/kfu-m-24-1/sber_mobile/index.js +++ b/server/routers/kfu-m-24-1/sber_mobile/index.js @@ -1,7 +1,7 @@ const router = require('express').Router(); const authRouter = require('./auth'); const { supabaseRouter } = require('./supabaseClient'); -const profileRouter = require('./users/index'); +const profileRouter = require('./profile'); module.exports = router; diff --git a/server/routers/kfu-m-24-1/sber_mobile/profile.js b/server/routers/kfu-m-24-1/sber_mobile/profile.js new file mode 100644 index 0000000..cb4612a --- /dev/null +++ b/server/routers/kfu-m-24-1/sber_mobile/profile.js @@ -0,0 +1,54 @@ +const router = require('express').Router(); +const { getSupabaseClient } = require('./supabaseClient'); + +// GET /profile +router.get('/profile', async (req, res) => { + const { user_id } = req.body; + const supabase = getSupabaseClient(); + let { data: userData, error: userError } = await supabase.auth.admin.getUserById(user_id); + + if (userError) return res.status(400).json({ error: userError.message }); + + let { data: profileData, error: profileError } = await supabase.from('user_profiles').select(` + id, + full_name, + avatar_url, + updated_at + `).eq('id', user_id).single(); + + if (profileError) return res.status(400).json({ error: profileError.message }); + + res.json({ + id: profileData.id, + username: profileData.full_name, + avatar_url: profileData.avatar_url, + phone: userData.user.phone, + apartment: '9', + updated_at: profileData.updated_at + }); +}); + +// POST /profile +router.post('/profile', async (req, res) => { + const { user_id, data } = req.body; + const supabase = getSupabaseClient(); + + const { data: userData, error: userError } = await supabase.auth.admin.updateUserById( + user_id, + { phone: data.phone } + ) + + if (userError) return res.status(400).json({ error: userError.message }); + + let { error: profileError } = await supabase.from('user_profiles').update({ + full_name: data.username, + avatar_url: data.avatar_url, + // apartment: data.apartment + }).eq('id', user_id).single(); + + if (profileError) return res.status(400).json({ error: profileError.message }); + + res.json({ success: true }); +}); + +module.exports = router; \ 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 index bac0342..938cc18 100644 --- a/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js +++ b/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js @@ -1,13 +1,14 @@ const router = require('express').Router(); const { createClient } = require('@supabase/supabase-js'); -const { getSupabaseUrl, getSupabaseKey } = require('./get-constants'); +const { getSupabaseUrl, getSupabaseKey, getSupabaseServiceKey } = require('./get-constants'); let supabase = null; async function initSupabaseClient() { const supabaseUrl = await getSupabaseUrl(); const supabaseAnonKey = await getSupabaseKey(); - supabase = createClient(supabaseUrl, supabaseAnonKey); + const supabaseServiceRoleKey = await getSupabaseServiceKey(); + supabase = createClient(supabaseUrl, supabaseServiceRoleKey); } function getSupabaseClient() { diff --git a/server/routers/kfu-m-24-1/sber_mobile/users/index.js b/server/routers/kfu-m-24-1/sber_mobile/users/index.js deleted file mode 100644 index 45e16bf..0000000 --- a/server/routers/kfu-m-24-1/sber_mobile/users/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const router = require('express').Router(); -const { getSupabaseClient } = require('../supabaseClient'); - -// POST /profile -router.get('/profile', async (req, res) => { - const { user_id } = req.body; - const supabase = getSupabaseClient(); - const { data, error } = await supabase.from('users').select(` - id, - phone, - user_profiles(full_name,avatar_url,updated_at) - `).eq('id', user_id); - console.log('@@@@@@@@@@@@@@@@@@@@@@@@'); - console.log(data); - if (error) return res.status(400).json({ error: error.message }); - res.json({ - id: data.id, - username: data.user_profiles.full_name, - avatar_url: data.user_profiles.avatar_url, - phone: data.phone, - apartment: '9', - updated_at: data.user_profiles.updated_at - }); -}); - -module.exports = router; \ No newline at end of file