sequelize-game-bank 3.0.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -36
- package/config/setup-env.js +34 -0
- package/database/services/account/transfer.js +1 -1
- package/index.js +19 -11
- package/package.json +1 -1
- package/public/accounts.html +11 -11
- package/public/admin.html +5 -5
- package/public/credit.html +10 -10
- package/public/css/style.css +3 -1
- package/public/general.html +11 -11
- package/public/history.html +11 -11
- package/public/home.html +2 -2
- package/public/js/js.js +19 -95
- package/public/login.html +3 -3
- package/public/profile.html +10 -10
- package/public/register.html +7 -7
- package/public/transfer.html +10 -10
- package/public/uploads/avatars/PAVEL_1792314486483.png +0 -0
- package/public/uploads/avatars/root_1792312973479.png +0 -0
- package/public/uploads/avatars/root_1792313212019.png +0 -0
- package/server/server.js +31 -28
- package/database/services/bot/generators/ban-bot.html +0 -1
- package/database/services/bot/generators/ban-bot.txt +0 -1
- package/database/services/bot/generators/disable-2FA-bot.html +0 -1
- package/database/services/bot/generators/disable-2FA-bot.txt +0 -1
- package/database/services/bot/generators/enable-2FA-bot.html +0 -1
- package/database/services/bot/generators/enable-2FA-bot.txt +0 -1
- package/database/services/bot/generators/login-bot.html +0 -1
- package/database/services/bot/generators/login-bot.txt +0 -1
- package/database/services/bot/generators/register-bot.html +0 -1
- package/database/services/bot/generators/register-bot.txt +0 -7
- package/database/services/bot/generators/transfer-from-bot.html +0 -1
- package/database/services/bot/generators/transfer-from-bot.txt +0 -1
- package/database/services/bot/generators/transfer-to-bot.html +0 -1
- package/database/services/bot/generators/transfer-to-bot.txt +0 -1
- package/database/services/bot/generators/unban-bot.html +0 -1
- package/database/services/bot/generators/unban-bot.txt +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> # sequelize-game-bank
|
|
2
2
|
|
|
3
|
-
<img src="
|
|
3
|
+
<img src="https://github.com/RPM-programmer/sequelize-game-bank/blob/main/src/logo/icon.png?raw=true" alt="sequelize-game-bank logo" width="160" height="160" style="border-radius: 12%; margin-bottom: 20px;" />
|
|
4
4
|
|
|
5
5
|
## npm модуль для создания полноценного банка на express, sequelize (sqlite).
|
|
6
6
|
|
|
@@ -15,50 +15,78 @@
|
|
|
15
15
|
|
|
16
16
|
## 🚀 Установка
|
|
17
17
|
|
|
18
|
-
Установите пакет через
|
|
18
|
+
Установите пакет через менеджер пакетов:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npm install sequelize-game-bank
|
|
22
22
|
# или
|
|
23
23
|
yarn add sequelize-game-bank
|
|
24
24
|
```
|
|
25
|
-
##
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
## Установка и настройка (Инициализация)
|
|
26
|
+
|
|
27
|
+
Модуль `sequelize-game-bank` требует асинхронной инициализации базы данных и настройки роутов.
|
|
28
|
+
|
|
29
|
+
### 1. Настройка окружения (.env)
|
|
30
|
+
После первого запуска откройте `.env` и настройте эти поля:
|
|
31
|
+
|
|
32
|
+
```env
|
|
33
|
+
SEQUELIZE_GAME_BANK_INITIALIZED = true
|
|
34
|
+
JWT_SECRET = 0000
|
|
35
|
+
ROOT_PASSWORD = bank-root
|
|
36
|
+
GMAIL =
|
|
37
|
+
GOOGLE_APP_PASSWORD =
|
|
38
38
|
```
|
|
39
|
-
|
|
39
|
+
|
|
40
|
+
### 2. Подключение в проект
|
|
41
|
+
|
|
42
|
+
Так как модуль является асинхронным, его необходимо подключать **ДО** финальных обработчиков несуществующих маршрутов (404) и ошибок сервера (500). Поместите вызов модуля внутрь асинхронного блока:
|
|
43
|
+
|
|
40
44
|
```javascript
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
const app = (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const express = require('express');
|
|
46
|
+
const sequelize_game_bank = require('sequelize-game-bank');
|
|
47
|
+
|
|
48
|
+
const app = express();
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
(async () => {
|
|
52
|
+
try {
|
|
53
|
+
await sequelize_game_bank(app);
|
|
54
|
+
|
|
55
|
+
app.use((req, res) => {
|
|
56
|
+
res.status(404).send("<h1>404 - Страница не найдена</h1>");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
app.use((err, req, res, next) => {
|
|
60
|
+
res.status(500).send("<h1>500 - Внутренняя ошибка сервера</h1>");
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
} catch (error) {
|
|
64
|
+
}
|
|
65
|
+
})();
|
|
66
|
+
|
|
67
|
+
module.exports = { app };
|
|
49
68
|
```
|
|
69
|
+
## 🌐 Маршрутизация и точки входа (v4.0.0)
|
|
50
70
|
|
|
51
|
-
|
|
71
|
+
В версии 4.0.0 вся логика путей полностью изолирована внутри модуля и работает в автоматическом режиме. Разработчику или пользователю доступны всего **3 основные веб-страницы** для ручного перехода из браузера:
|
|
52
72
|
|
|
53
|
-
|
|
73
|
+
* **`GET`** `/bank/home.html` — Главная приветственная страница банка.
|
|
74
|
+
* **`GET`** `/bank/login.html` — Страница авторизации пользователей.
|
|
75
|
+
* **`GET`** `/bank/register.html` — Страница регистрации новых аккаунтов.
|
|
54
76
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### ⚙️ Как это работает изнутри (Автоматика модуля)
|
|
80
|
+
|
|
81
|
+
Вам больше не нужно вручную настраивать эндпоинты в основном проекте `CITY`. После подключения модуля в `server.js` автоматически разворачиваются два изолированных роутера:
|
|
82
|
+
|
|
83
|
+
1. **Интерфейс банка (Префикс `/bank`)**
|
|
84
|
+
Автоматически управляет отображением всех внутренних страниц личного кабинета (панели управления, счета, переводы, кредиты, админка) и раздачей статических файлов (CSS, JS, загруженные аватарки).
|
|
85
|
+
|
|
86
|
+
2. **Серверное API (Префикс `/api/bank`)**
|
|
87
|
+
Полностью берет на себя фоновый обмен JSON-данными между вашим фронтендом и базой данных Sequelize. На этот префикс автоматически завязаны все типы сетевых операций:
|
|
88
|
+
* Получение данных (`GET` запросы профилей, счетов, баланса и истории логов).
|
|
89
|
+
* Изменение состояния (`POST` запросы авторизации, переводов, кредитов и настройки 2FA).
|
|
90
|
+
* Удаление сущностей (`DELETE` запросы на закрытие игровых счетов).
|
|
91
|
+
|
|
92
|
+
## Лицензия [ISC](LICENSE)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const process = require('process');
|
|
4
|
+
const envPath = path.resolve(process.cwd(), '.env');
|
|
5
|
+
const logger = require("custom-color-logs").print;
|
|
6
|
+
const defaultEnvContent = `
|
|
7
|
+
# ==============================================================================
|
|
8
|
+
# sequelize-game-bank v4.0.0
|
|
9
|
+
# ==============================================================================
|
|
10
|
+
SEQUELIZE_GAME_BANK_INITIALIZED = true
|
|
11
|
+
JWT_SECRET = 0000
|
|
12
|
+
ROOT_PASSWORD = bank-root
|
|
13
|
+
GMAIL = example@gmail.com
|
|
14
|
+
GOOGLE_APP_PASSWORD = abcd efgh ijkl mnop
|
|
15
|
+
`;
|
|
16
|
+
function initializeEnvironment() {
|
|
17
|
+
try {
|
|
18
|
+
if (!fs.existsSync(envPath)) {
|
|
19
|
+
fs.writeFileSync(envPath, defaultEnvContent, 'utf8');
|
|
20
|
+
} else {
|
|
21
|
+
const currentEnv = fs.readFileSync(envPath, 'utf8');
|
|
22
|
+
if (currentEnv.includes('SEQUELIZE_GAME_BANK_INITIALIZED')) {
|
|
23
|
+
require("dotenv").config({ path: envPath });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
fs.appendFileSync(envPath, `\n\n${defaultEnvContent}`, 'utf8');
|
|
27
|
+
}
|
|
28
|
+
} catch (err) {
|
|
29
|
+
console.log(logger.ServerError('Не удалось проверить или обновить .env:', err.message));
|
|
30
|
+
}
|
|
31
|
+
require("dotenv").config({ path: envPath });
|
|
32
|
+
}
|
|
33
|
+
initializeEnvironment();
|
|
34
|
+
module.exports = { envPath };
|
|
@@ -35,7 +35,7 @@ module.exports = async function transferManny(fromId, toId, amount, pinCode, tot
|
|
|
35
35
|
await t.rollback();
|
|
36
36
|
return { status: false, statusCode: -23, message: 'Неверный пароль счета отправителя' };
|
|
37
37
|
}
|
|
38
|
-
if (
|
|
38
|
+
if (parseFloat(fromAcc.manny) < numericAmount) {
|
|
39
39
|
await t.rollback();
|
|
40
40
|
return { status: false, statusCode: -11, message: 'Недостаточно средств на счете' };
|
|
41
41
|
}
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const logger = require("custom-color-logs").print;
|
|
2
2
|
console.log(logger.ServerBankInfo("Модуль банка запущен!"))
|
|
3
|
-
require('dotenv').config();
|
|
4
3
|
const path = require("path")
|
|
4
|
+
const setupEnv = require(path.join(__dirname, "config", "setup-env.js"));
|
|
5
5
|
const express = require('express');
|
|
6
6
|
const cookieParser = require('cookie-parser');
|
|
7
7
|
const bcrypt = require('bcrypt');
|
|
@@ -35,25 +35,33 @@ async function Bank(app) {
|
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
console.log(logger.ServerBankInfo(`Супер пользвотель создан`))
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const gp = registerRoutes();
|
|
39
|
+
const get = gp.GET;
|
|
40
|
+
const post = gp.POST;
|
|
41
|
+
post.use('/css', express.static(path.join(__dirname, 'public', 'css')));
|
|
42
|
+
post.use('/js', express.static(path.join(__dirname, 'public', 'js')));
|
|
43
|
+
post.use('/uploads', express.static(path.join(__dirname, 'public', 'uploads')));
|
|
42
44
|
const { verifyPageSession } = require(path.join(__dirname, 'server', 'middleware', 'auth'));
|
|
43
45
|
const pages = ['general.html', 'profile.html', 'accounts.html', 'transfer.html', 'history.html', 'credit.html', 'admin.html'];
|
|
44
46
|
pages.forEach(page => {
|
|
45
|
-
|
|
47
|
+
get.get(`/${page}`, verifyPageSession, (req, res) => {
|
|
46
48
|
res.sendFile(path.join(__dirname, 'public', page));
|
|
47
49
|
});
|
|
48
50
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
get.get('/login.html', (req, res) => res.sendFile(path.join(__dirname, 'public', 'login.html')));
|
|
52
|
+
get.get('/register.html', (req, res) => res.sendFile(path.join(__dirname, 'public', 'register.html')));
|
|
53
|
+
get.get('/home.html', (req, res) => res.sendFile(path.join(__dirname, 'public', 'home.html')));
|
|
52
54
|
app.get('/favicon.ico', (req, res) => res.sendFile(path.join(__dirname, 'public', 'icon', 'icon.png')));
|
|
53
|
-
|
|
55
|
+
get.get('/', (req, res) => res.redirect('/home.html'));
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
app.use("/bank", get);
|
|
61
|
+
app.use("/api/bank", post)
|
|
54
62
|
|
|
55
63
|
require(path.join(__dirname, 'database', 'services', 'bot', 'cron-schedule'));
|
|
56
|
-
return
|
|
64
|
+
return app;
|
|
57
65
|
} catch (err) {
|
|
58
66
|
console.log(logger.ServerBankError("Критическая ошибка инициализации модулей", err));
|
|
59
67
|
throw err;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sequelize-game-bank",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "A Sequelize-based gaming economy and banking system featuring user profiles, credits, admin management, and detailed transaction history.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "commonjs",
|
package/public/accounts.html
CHANGED
|
@@ -3,25 +3,25 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<title>City-Bank | Мои Счета</title>
|
|
6
|
-
<link rel="stylesheet" href="/css/style.css">
|
|
6
|
+
<link rel="stylesheet" href="/api/bank/css/style.css">
|
|
7
7
|
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css"/>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<div class="main-container">
|
|
11
11
|
<div class="sidebar">
|
|
12
12
|
<div style="text-align: center; margin-bottom: 15px;">
|
|
13
|
-
<img id="user-avatar" src="/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
13
|
+
<img id="user-avatar" src="/api/bank/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
14
14
|
</div>
|
|
15
15
|
<h2 id="user-display">Загрузка...</h2>
|
|
16
16
|
<p style="text-align: center; color: #bbb;">Всего средств: <span id="total-manny" style="font-weight: bold; color: #1abc9c;">0.00</span> руб.</p>
|
|
17
17
|
<hr style="border-color: #34495e;">
|
|
18
|
-
<a href="/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
18
|
+
<a href="/bank/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
19
19
|
<a class="nav-item"><button class="menu-btn active" id="acccount">Мои Счета</button></a>
|
|
20
|
-
<a href="/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
21
|
-
<a href="/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
22
|
-
<a href="/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
23
|
-
<a href="/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
-
<button class="menu-btn" onclick="location.href='/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
20
|
+
<a href="/bank/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
21
|
+
<a href="/bank/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
22
|
+
<a href="/bank/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
23
|
+
<a href="/bank/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
+
<button class="menu-btn" onclick="location.href='/bank/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
25
25
|
<br><br>
|
|
26
26
|
<button class="menu-btn btn-danger" id="logoutBtn" style="text-align: center;">Выйти из системы</button>
|
|
27
27
|
</div>
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
41
41
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script>
|
|
42
|
-
<script src="/js/sweetalert2.js"></script>
|
|
42
|
+
<script src="/api/bank/js/sweetalert2.js"></script>
|
|
43
43
|
<script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js"></script>
|
|
44
44
|
<script src="https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js"></script>
|
|
45
|
-
<script src="/js/js.js"></script>
|
|
45
|
+
<script src="/api/bank/js/js.js"></script>
|
|
46
46
|
</body>
|
|
47
|
-
</html>
|
|
47
|
+
</html>
|
package/public/admin.html
CHANGED
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
<body>
|
|
40
40
|
|
|
41
41
|
<div class="container">
|
|
42
|
-
<h2
|
|
43
|
-
<button class="btn" onclick="location.href='/general.html'" style="background:#6c757d;"><- В личный кабинет</button>
|
|
42
|
+
<h2>ЦЕНТРАЛЬНЫЙ ПУЛЬТ АДМИНИСТРАТОРА (ROOT)</h2>
|
|
43
|
+
<button class="btn" onclick="location.href='/bank/general.html'" style="background:#6c757d;"><- В личный кабинет</button>
|
|
44
44
|
|
|
45
45
|
<!-- Интерактивная таблица всех счетов -->
|
|
46
46
|
<table id="all-accounts-table">
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
// Загрузка таблицы при старте страницы
|
|
91
91
|
async function loadAdminDashboard() {
|
|
92
92
|
try {
|
|
93
|
-
const response = await fetch('/api/admin/accounts/all');
|
|
93
|
+
const response = await fetch('/api/bank/admin/accounts/all');
|
|
94
94
|
const result = await response.json();
|
|
95
95
|
|
|
96
96
|
if (!response.ok || !result.status) {
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
// Переключение статуса бана/разбана
|
|
129
129
|
async function toggleAccountStatus(accountId, makeActive) {
|
|
130
130
|
try {
|
|
131
|
-
const response = await fetch(`/api/admin/accounts/${accountId}/status`, {
|
|
131
|
+
const response = await fetch(`/api/bank/admin/accounts/${accountId}/status`, {
|
|
132
132
|
method: 'POST',
|
|
133
133
|
headers: {'Content-Type': 'application/json'},
|
|
134
134
|
body: JSON.stringify({ active: makeActive })
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
|
|
170
170
|
try {
|
|
171
171
|
// Роут /modify работает через add-manny.js и remove-manny.js, которые НЕ шлют письма по ТЗ
|
|
172
|
-
const response = await fetch(`/api/admin/accounts/${accountId}/modify`, {
|
|
172
|
+
const response = await fetch(`/api/bank/admin/accounts/${accountId}/modify`, {
|
|
173
173
|
method: 'POST',
|
|
174
174
|
headers: {'Content-Type': 'application/json'},
|
|
175
175
|
body: JSON.stringify({ amount, type })
|
package/public/credit.html
CHANGED
|
@@ -3,25 +3,25 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<title>City-Bank | Кредитование</title>
|
|
6
|
-
<link rel="stylesheet" href="/css/style.css">
|
|
6
|
+
<link rel="stylesheet" href="/api/bank/css/style.css">
|
|
7
7
|
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css"/>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<div class="main-container">
|
|
11
11
|
<div class="sidebar">
|
|
12
12
|
<div style="text-align: center; margin-bottom: 15px;">
|
|
13
|
-
<img id="user-avatar" src="/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
13
|
+
<img id="user-avatar" src="/api/bank/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
14
14
|
</div>
|
|
15
15
|
<h2 id="user-display">Загрузка...</h2>
|
|
16
16
|
<p style="text-align: center; color: #bbb;">Всего средств: <span id="total-manny" style="font-weight: bold; color: #1abc9c;">0.00</span> руб.</p>
|
|
17
17
|
<hr style="border-color: #34495e;">
|
|
18
|
-
<a href="/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
19
|
-
<a href="/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
20
|
-
<a href="/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
21
|
-
<a href="/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
18
|
+
<a href="/bank/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
19
|
+
<a href="/bank/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
20
|
+
<a href="/bank/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
21
|
+
<a href="/bank/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
22
22
|
<a class="nav-item"><button class="menu-btn active" id="credit">Оформить Кредит</button></a>
|
|
23
|
-
<a href="/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
-
<button class="menu-btn" onclick="location.href='/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
23
|
+
<a href="/bank/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
+
<button class="menu-btn" onclick="location.href='/bank/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
25
25
|
<br><br>
|
|
26
26
|
<button class="menu-btn btn-danger" id="logoutBtn" style="text-align: center;">Выйти из системы</button>
|
|
27
27
|
</div>
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
</div>
|
|
83
83
|
</div>
|
|
84
84
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script>
|
|
85
|
-
<script src="/js/sweetalert2.js"></script>
|
|
85
|
+
<script src="/api/bank/js/sweetalert2.js"></script>
|
|
86
86
|
<script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js"></script>
|
|
87
87
|
<script src="https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js"></script>
|
|
88
|
-
<script src="/js/js.js"></script>
|
|
88
|
+
<script src="/api/bank/js/js.js"></script>
|
|
89
89
|
</body>
|
|
90
90
|
</html>
|
package/public/css/style.css
CHANGED
package/public/general.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<title>City-Bank | Главная</title>
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
-
<link rel="stylesheet" href="/css/style.css">
|
|
7
|
+
<link rel="stylesheet" href="/api/bank/css/style.css">
|
|
8
8
|
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css"/>
|
|
9
9
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
|
|
10
10
|
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
<p style="text-align: center; color: #bbb;">Всего средств: <span id="total-manny" style="font-weight: bold; color: #1abc9c;">0.00</span> руб.</p>
|
|
20
20
|
<hr style="border-color: #34495e;">
|
|
21
21
|
<a class="nav-item"><button class="menu-btn active" id="general">Главная</button></a>
|
|
22
|
-
<a href="/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
23
|
-
<a href="/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
24
|
-
<a href="/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
25
|
-
<a href="/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
26
|
-
<a href="/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
27
|
-
<button class="menu-btn" onclick="location.href='/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
22
|
+
<a href="/bank/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
23
|
+
<a href="/bank/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
24
|
+
<a href="/bank/history.html" class="nav-item"><button class="menu-btn" id="history">История транзакций</button></a>
|
|
25
|
+
<a href="/bank/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
26
|
+
<a href="/bank/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
27
|
+
<button class="menu-btn" onclick="location.href='/bank/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
28
28
|
<br><br>
|
|
29
29
|
<button class="menu-btn btn-danger" id="logoutBtn" style="text-align: center;">Выйти из системы</button>
|
|
30
30
|
</div>
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
<div class="container">
|
|
33
33
|
<div class="container-center">
|
|
34
34
|
<div style="text-align: center; margin-bottom: 15px;" onclick="uploadAvatar()">
|
|
35
|
-
<img id="user-avatar2" src="/uploads/avatars/default.png" style="width: 250px; height: 250px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
35
|
+
<img id="user-avatar2" src="/api/bank/uploads/avatars/default.png" style="width: 250px; height: 250px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
36
36
|
</div>
|
|
37
37
|
<h1 id="user-display-page">Загрузка...</h1>
|
|
38
38
|
<!--и так далее-->
|
|
39
39
|
<p>Подать запрос в поддержку</p>
|
|
40
40
|
<form action="/help-message" method="post" class="help_msg-form">
|
|
41
41
|
<input type="text" name="hm" placeholder="Здраствуйте. Я .. хочу попросить помощи. У меня не работает ... . Спасибо">
|
|
42
|
-
<input type="submit" value="Отправить">
|
|
42
|
+
<input disabled type="submit" value="Отправить">
|
|
43
43
|
</form>
|
|
44
44
|
<footer>
|
|
45
45
|
<p style="color: lightslategray;">Банк ©2026</p>
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
</div>
|
|
50
50
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script>
|
|
51
|
-
<script src="/js/sweetalert2.js"></script>
|
|
51
|
+
<script src="/api/bank/js/sweetalert2.js"></script>
|
|
52
52
|
<script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js"></script>
|
|
53
53
|
<script src="https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js"></script>
|
|
54
|
-
<script src="/js/js.js"></script>
|
|
54
|
+
<script src="/api/bank/js/js.js"></script>
|
|
55
55
|
</body>
|
|
56
56
|
</html>
|
package/public/history.html
CHANGED
|
@@ -3,32 +3,32 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<title>City-Bank | История</title>
|
|
6
|
-
<link rel="stylesheet" href="/css/style.css">
|
|
6
|
+
<link rel="stylesheet" href="/api/bank/css/style.css">
|
|
7
7
|
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css"/>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<div class="main-container">
|
|
11
11
|
<div class="sidebar">
|
|
12
12
|
<div style="text-align: center; margin-bottom: 15px;">
|
|
13
|
-
<img id="user-avatar" src="/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
13
|
+
<img id="user-avatar" src="/api/bank/uploads/avatars/default.png" style="width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
14
14
|
</div>
|
|
15
15
|
<h2 id="user-display">Загрузка...</h2>
|
|
16
16
|
<p style="text-align: center; color: #bbb;">Всего средств: <span id="total-manny" style="font-weight: bold; color: #1abc9c;">0.00</span> руб.</p>
|
|
17
17
|
<hr style="border-color: #34495e;">
|
|
18
|
-
<a href="/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
19
|
-
<a href="/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
20
|
-
<a href="/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
18
|
+
<a href="/bank/general.html" class="nav-item"><button class="menu-btn" id="general">Главная</button></a>
|
|
19
|
+
<a href="/bank/accounts.html" class="nav-item"><button class="menu-btn" id="acccount">Мои Счета</button></a>
|
|
20
|
+
<a href="/bank/transfer.html" class="nav-item"><button class="menu-btn" id="transfer">Перевод средств</button></a>
|
|
21
21
|
<a class="nav-item"><button class="menu-btn active" id="history">История транзакций</button></a>
|
|
22
|
-
<a href="/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
23
|
-
<a href="/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
-
<button class="menu-btn" onclick="location.href='/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
22
|
+
<a href="/bank/credit.html" class="nav-item"><button class="menu-btn" id="credit">Оформить Кредит</button></a>
|
|
23
|
+
<a href="/bank/profile.html" class="nav-item"><button class="menu-btn" id="profile">Управление профилем</button></a>
|
|
24
|
+
<button class="menu-btn" onclick="location.href='/bank/admin.html'" id="admin-nav" style="display: none; color: #ffc107;">Админ-панель</button>
|
|
25
25
|
<br><br>
|
|
26
26
|
<button class="menu-btn btn-danger" id="logoutBtn" style="text-align: center;">Выйти из системы</button>
|
|
27
27
|
</div>
|
|
28
28
|
<div class="container">
|
|
29
29
|
<div class="container-center">
|
|
30
30
|
<div style="text-align: center; margin-bottom: 15px;">
|
|
31
|
-
<img id="user-avatar2" src="/uploads/avatars/default.png" style="width: 250px; height: 250px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
31
|
+
<img id="user-avatar2" src="/api/bank/uploads/avatars/default.png" style="width: 250px; height: 250px; border-radius: 50%; object-fit: cover; border: 3px solid #1abc9c;">
|
|
32
32
|
</div>
|
|
33
33
|
<h3>История финансовых операций</h3>
|
|
34
34
|
<div class="card">
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
<h1>hello</h1>
|
|
58
58
|
</dialog>
|
|
59
59
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script>
|
|
60
|
-
<script src="/js/sweetalert2.js"></script>
|
|
60
|
+
<script src="/api/bank/js/sweetalert2.js"></script>
|
|
61
61
|
<script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js"></script>
|
|
62
62
|
<script src="https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js"></script>
|
|
63
|
-
<script src="/js/js.js"></script>
|
|
63
|
+
<script src="/api/bank/js/js.js"></script>
|
|
64
64
|
</body>
|
|
65
65
|
</html>
|
package/public/home.html
CHANGED
|
@@ -297,8 +297,8 @@
|
|
|
297
297
|
<header class="bank-navbar">
|
|
298
298
|
<div class="logo">GAME-<span>BANK</span></div>
|
|
299
299
|
<div class="auth-buttons">
|
|
300
|
-
<a href="/login.html"><button class="btn-auth btn-login">Войти</button></a>
|
|
301
|
-
<a href="/register.html"><button class="btn-auth btn-register">Регистрация</button></a>
|
|
300
|
+
<a href="/bank/login.html"><button class="btn-auth btn-login">Войти</button></a>
|
|
301
|
+
<a href="/bank/register.html"><button class="btn-auth btn-register">Регистрация</button></a>
|
|
302
302
|
</div>
|
|
303
303
|
</header>
|
|
304
304
|
<main class="main-content">
|