Files
tp/spa/vue/servers/authserver.js
T
valitovgaziz 2d07814bb1 modified: .gitignore
new file:   spa/vue/.gitignore
	new file:   spa/vue/Makefile
	new file:   spa/vue/README.md
	new file:   spa/vue/advices.txt
	new file:   spa/vue/index.html
	new file:   spa/vue/jsconfig.json
	new file:   spa/vue/package-lock.json
	new file:   spa/vue/package.json
	new file:   spa/vue/servers/authserver.js
	new file:   spa/vue/servers/feedbackserver.js
	new file:   spa/vue/servers/techsupportserver.js
	new file:   spa/vue/src/App.vue
	new file:   spa/vue/src/assets/colors.css
	new file:   spa/vue/src/assets/fonts.css
	new file:   spa/vue/src/assets/fonts/Open_Sans/OFL.txt
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-Italic-VariableFont_wdth,wght.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-Italic.woff
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-Italic.woff2
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-Regular.woff
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-Regular.woff2
	new file:   spa/vue/src/assets/fonts/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/README.txt
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Italic.eot
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Italic.svg
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Regular.eot
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Regular.svg
	new file:   spa/vue/src/assets/fonts/Open_Sans/hinted-OpenSans-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-Light.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-Light.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_Condensed-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-Light.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Open_Sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/OFL.txt
	new file:   spa/vue/src/assets/fonts/Roboto/README.txt
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-Italic-VariableFont_wdth,wght.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-Italic.woff
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-Italic.woff2
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-Regular.woff
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-Regular.woff2
	new file:   spa/vue/src/assets/fonts/Roboto/Roboto-VariableFont_wdth,wght.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Italic.eot
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Italic.svg
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Regular.eot
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Regular.svg
	new file:   spa/vue/src/assets/fonts/Roboto/hinted-Roboto-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Black.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-BlackItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-ExtraLight.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-ExtraLightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Light.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-Thin.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto-ThinItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Black.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-BlackItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-ExtraLight.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-ExtraLightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Light.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-Thin.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_Condensed-ThinItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Black.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-BlackItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Bold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-BoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-ExtraBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-ExtraBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-ExtraLight.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-ExtraLightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Italic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Light.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-LightItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Medium.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-MediumItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Regular.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-SemiBold.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-SemiBoldItalic.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-Thin.ttf
	new file:   spa/vue/src/assets/fonts/Roboto/static/Roboto_SemiCondensed-ThinItalic.ttf
	new file:   spa/vue/src/assets/linksStyle.css
	new file:   spa/vue/src/assets/main.css
	new file:   spa/vue/src/auth/axios.js
	new file:   spa/vue/src/auth/services/auth.service.js
	new file:   spa/vue/src/auth/services/authService.js
	new file:   spa/vue/src/auth/stores/auth.store.js
	new file:   spa/vue/src/auth/stores/store.js
	new file:   spa/vue/src/auth/vueauth/auth.js
	new file:   spa/vue/src/auth/watch.js
	new file:   spa/vue/src/components/about/about.vue
	new file:   spa/vue/src/components/about/commits.vue
	new file:   spa/vue/src/components/about/developers.vue
	new file:   spa/vue/src/components/about/filosofy.vue
	new file:   spa/vue/src/components/feetback/feetback.vue
	new file:   spa/vue/src/components/footerB/footerB.vue
	new file:   spa/vue/src/components/header/darkThemeToggle.vue
	new file:   spa/vue/src/components/header/fullHeader.vue
	new file:   spa/vue/src/components/header/headerMemu.vue
	new file:   spa/vue/src/components/header/logo-rl-about.vue
	new file:   spa/vue/src/components/header/toggleMenu.vue
	new file:   spa/vue/src/components/images/icons/arrow_back_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg
	new file:   spa/vue/src/components/images/icons/arrow_forward_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg
	new file:   spa/vue/src/components/images/icons/close_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg
	new file:   spa/vue/src/components/images/icons/home_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg
	new file:   spa/vue/src/components/images/icons/menu_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg
	new file:   spa/vue/src/components/images/logo150x150.png
	new file:   spa/vue/src/components/images/photo_2025-01-25_05-57-24.jpg
	new file:   spa/vue/src/components/images/restObject.jpg
	new file:   spa/vue/src/components/inout/inout.vue
	new file:   spa/vue/src/components/inout/registration.vue
	new file:   spa/vue/src/components/profile/profile.vue
	new file:   spa/vue/src/components/profile/profileEdit.vue
	new file:   spa/vue/src/components/restObject/restObject.vue
	new file:   spa/vue/src/components/restObject/restObjectEdit.vue
	new file:   spa/vue/src/components/restObject/restOjbectAdd.vue
	new file:   spa/vue/src/components/saerch_results/results.vue
	new file:   spa/vue/src/components/searchLine/searchLine.vue
	new file:   spa/vue/src/components/settings.vue
	new file:   spa/vue/src/components/support.vue
	new file:   spa/vue/src/locales/bak.json
	new file:   spa/vue/src/locales/en.json
	new file:   spa/vue/src/locales/i18n.js
	new file:   spa/vue/src/locales/langToggle.vue
	new file:   spa/vue/src/locales/languages.json
	new file:   spa/vue/src/locales/ru.json
	new file:   spa/vue/src/locales/tat.json
	new file:   spa/vue/src/main.js
	new file:   spa/vue/src/router/index.js
	new file:   spa/vue/src/views/AboutView.vue
	new file:   spa/vue/src/views/FeetbackView.vue
	new file:   spa/vue/src/views/FilosofyView.vue
	new file:   spa/vue/src/views/HomeView.vue
	new file:   spa/vue/src/views/LogInView.vue
	new file:   spa/vue/src/views/ProfileView.vue
	new file:   spa/vue/src/views/RegistrationView.vue
	new file:   spa/vue/src/views/RestObjectView.vue
	new file:   spa/vue/src/views/ResultsView.vue
	new file:   spa/vue/src/views/SettingsView.vue
	new file:   spa/vue/src/views/SupportView.vue
	new file:   spa/vue/tailwind.config.js
	new file:   spa/vue/vite.config.js
add hole project on vue3 for a time
2025-07-14 13:10:18 +05:00

106 lines
3.7 KiB
JavaScript

const express = require('express');
const { Pool } = require('pg');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
const PORT = 6000;
const SECRET_KEY = '89044513447896254393432085332044367'; // Замените на свой секретный ключ
// Middleware
app.use(bodyParser.json());
app.use(cors());
// Подключение к PostgreSQL
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'postgres',
password: 'postgres',
port: 5432,
});
// Регистрация
app.post('/register', async (req, res) => {
try {
const { username, email, password } = req.body;
// Проверка, существует ли пользователь с таким email
const userExists = await pool.query('SELECT * FROM users WHERE email = $1', [email]);
if (userExists.rows.length > 0) {
return res.status(400).json({ message: 'User with this email already exists' });
}
// Хеширование пароля
const hashedPassword = await bcrypt.hash(password, 10);
// Создание нового пользователя
const newUser = await pool.query(
'INSERT INTO users (username, email, password) VALUES ($1, $2, $3) RETURNING *',
[username, email, hashedPassword]
);
res.status(201).json({ message: 'User registered successfully', email: newUser.rows[0].email });
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Something went wrong' });
}
});
// Авторизация
app.post('/login', async (req, res) => {
try {
const { email, password } = req.body;
// Поиск пользователя по email
const user = await pool.query('SELECT * FROM users WHERE email = $1', [email]);
if (user.rows.length === 0) {
return res.status(400).json({ message: 'User not found' });
}
// Проверка пароля
const isPasswordValid = await bcrypt.compare(password, user.rows[0].password);
if (!isPasswordValid) {
return res.status(400).json({ message: 'Invalid credentials' });
}
// Создание JWT токена
const token = jwt.sign({ userId: user.rows[0].id }, SECRET_KEY, { expiresIn: '1h' });
res.status(200).json({ token });
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Something went wrong' });
}
});
// Эндпоинт для проверки токенов
app.get('/check', async (req, res) => {
try {
// Извлекаем токен из заголовка Authorization
const authorizationHeader = req.headers.authorization;
if (!authorizationHeader) {
return res.status(401).send({ message: 'No token provided' });
}
// Разделяем строку на части: Bearer и сам токен
const token = authorizationHeader.split(' ')[1];
// Проверяем токен
const decodedToken = jwt.verify(token, SECRET_KEY);
// Если всё хорошо, отправляем положительный ответ
res.send({ message: 'Token is valid', userId: decodedToken.userId });
} catch (err) {
// Если произошла ошибка, возвращаем сообщение об ошибке
res.status(401).send({ message: err.message });
}
});
// Запуск сервера
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
})