deleted: .env
modified: README.md deleted: node_servers/authserver.js deleted: node_servers/feedbackserver.js deleted: node_servers/techsupportserver.js deleted: scripts/renew.sh new file: serv_golang_rest_api/docker-compose.yaml deleted: serv_keycloak/docker-compose.yaml deleted: serv_keycloak/keycloak/Dockerfile deleted: serv_keycloak/keycloak/start.sh deleted: serv_keycloak/laksjfdhdsa.txt deleted: serv_migration/.env deleted: serv_migration/docker-compose.yml deleted: serv_migration/migrator/Dockerfile deleted: serv_migration/migrator/go.mod deleted: serv_migration/migrator/go.sum deleted: serv_migration/migrator/migrations/20240819162009_create_users_table.sql deleted: serv_migration/migrator/migrations/20240825004755_add_column_role_to_users.sql deleted: serv_postgres/.env deleted: serv_postgres/docker-compose.yaml deleted: serv_zitadel/.env deleted: serv_zitadel/docker-compose.yaml modified: valitovgaziz/html/style.css delete deprecated files, a lot of files
This commit is contained in:
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# MIGRATOR
|
|
||||||
MIGRATOR_PORT=3000
|
|
||||||
GOOSE_DRIVER=postgres
|
|
||||||
GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable'
|
|
||||||
GOOSE_MIGRATION_DIR=migrations
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@ Hosting by ValitovGaziz team
|
|||||||
|
|
||||||
on docker compose
|
on docker compose
|
||||||
|
|
||||||
create site begushiyBashkir
|
create REST API on Golang 1.25.1
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
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: 'db',
|
|
||||||
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}`);
|
|
||||||
})
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const bodyParser = require('body-parser');
|
|
||||||
const { Pool } = require('pg');
|
|
||||||
const cors = require('cors');
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
const port = 3000;
|
|
||||||
|
|
||||||
app.use(cors());
|
|
||||||
|
|
||||||
app.use(bodyParser.json());
|
|
||||||
|
|
||||||
const pool = new Pool({
|
|
||||||
user: 'postgres',
|
|
||||||
host: 'db',
|
|
||||||
database: 'postgres',
|
|
||||||
password: 'postgres',
|
|
||||||
port: 5432,
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/reviews', async(req, res) => {
|
|
||||||
try {
|
|
||||||
const result = await pool.query('SELECT * FROM reviews;');
|
|
||||||
res.json(result.rows);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
res.status(500).send("Server error");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post('/reviews', async(req, res) => {
|
|
||||||
const { text } = req.body;
|
|
||||||
try {
|
|
||||||
const result = await pool.query('INSERT INTO reviews (text) VALUES ($1) RETURNING *', [text]);
|
|
||||||
res.status(201).json(result.rows[0]);
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err);
|
|
||||||
res.status(500).send("Server error");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
app.listen(port, '0.0.0.0', () => {
|
|
||||||
console.log("Server is running on port ${port}");
|
|
||||||
});
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const bodyParser = require('body-parser');
|
|
||||||
const { Pool } = require('pg');
|
|
||||||
const cors = require('cors');
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
const port = 4000;
|
|
||||||
|
|
||||||
app.use(cors());
|
|
||||||
|
|
||||||
app.use(bodyParser.json());
|
|
||||||
|
|
||||||
const pool = new Pool({
|
|
||||||
user: 'postgres',
|
|
||||||
host: 'db',
|
|
||||||
database: 'postgres',
|
|
||||||
password: 'postgres',
|
|
||||||
port: 5432,
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post('/support', async (req, res) => {
|
|
||||||
const { email, text } = req.body;
|
|
||||||
try {
|
|
||||||
const result = await pool.query('INSERT INTO posts (email, text) VALUES ($1, $2) RETURNING *', [email, text]);
|
|
||||||
res.status(201).json(result.rows[0]);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
res.status(500).send("Server error");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/support', async (req, res) => {
|
|
||||||
try {
|
|
||||||
const result = await pool.query('SELECT * FROM posts;');
|
|
||||||
res.json(result.rows);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
res.status(500).send("Server error");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.listen(port, '0.0.0.0', () => {
|
|
||||||
console.log("Server is running on port ${port}");
|
|
||||||
});
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
docker compose down nginx
|
|
||||||
certbot certonly --standalone --noninteractive --agree-tos --email ${EMAIL} -d ${DOMAINS} --keep-until-expiring
|
|
||||||
docker compose up -d nginx
|
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Golang API сервис
|
||||||
|
api:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
environment:
|
||||||
|
- DB_HOST=db
|
||||||
|
- DB_PORT=5432
|
||||||
|
- DB_USER=postgres
|
||||||
|
- DB_PASSWORD=password
|
||||||
|
- DB_NAME=gorestapi
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# PostgreSQL база данных
|
||||||
|
db:
|
||||||
|
image: postgres:15-alpine
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=gorestapi
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=password
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
services:
|
|
||||||
kk_db:
|
|
||||||
image: postgres:16
|
|
||||||
container_name: kk_db
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: keycloak
|
|
||||||
POSTGRES_USER: postgres
|
|
||||||
POSTGRES_PASSWORD: postgres
|
|
||||||
volumes:
|
|
||||||
- keycloak-postgres:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
keycloak_network:
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
keycloak:
|
|
||||||
build:
|
|
||||||
context: ./keycloak
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: keycloak
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
- "8443:8443"
|
|
||||||
environment:
|
|
||||||
KC_ADMIN: admin
|
|
||||||
KC_ADMIN_PASSWORD: admin_password
|
|
||||||
PROXY_ADDRESS_FORWARDING: true
|
|
||||||
KC_HTTPS_PORT: 8443
|
|
||||||
KC_HTTP_PORT: 8080
|
|
||||||
KC_LOG_LEVEL: INFO
|
|
||||||
KC_HTTP_PROXY: true
|
|
||||||
KC_HTTPS_REDIRECT: false
|
|
||||||
KC_HOSTNAME_STRICT: false
|
|
||||||
KC_PROXY: passthrough
|
|
||||||
KC_HTTP_ENABLED: true
|
|
||||||
KC_HOSTNAME: yalarba.ru
|
|
||||||
KC_HOSTNAME_STRICT_BACKCHANNEL: false
|
|
||||||
KC_FRONTEND_URL: https://yalarba.ru/auth
|
|
||||||
command: start --optimized
|
|
||||||
networks:
|
|
||||||
keycloak_network:
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
keycloak-postgres:
|
|
||||||
name: keycloak_postgres_data
|
|
||||||
driver: local
|
|
||||||
|
|
||||||
networks:
|
|
||||||
keycloak_network:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
FROM quay.io/keycloak/keycloak:latest AS builder
|
|
||||||
|
|
||||||
# Enable health and metrics support
|
|
||||||
ENV KC_HEALTH_ENABLED=true
|
|
||||||
ENV KC_METRICS_ENABLED=true
|
|
||||||
|
|
||||||
# Configure a database vendor
|
|
||||||
ENV KC_DB=postgres
|
|
||||||
|
|
||||||
WORKDIR /opt/keycloak
|
|
||||||
RUN /opt/keycloak/bin/kc.sh build
|
|
||||||
|
|
||||||
FROM quay.io/keycloak/keycloak:latest
|
|
||||||
COPY --from=builder /opt/keycloak/ /opt/keycloak/
|
|
||||||
|
|
||||||
ENV KC_DB=postgres
|
|
||||||
ENV KC_DB_URL=jdbc:postgresql://kk_db:5432/keycloak
|
|
||||||
ENV KC_DB_USERNAME=postgres
|
|
||||||
ENV KC_DB_PASSWORD=postgres
|
|
||||||
ENV KC_HOSTNAME=yalarba.ru
|
|
||||||
ENV KC_FRONTEND_URL=https://yalarba.ru/auth
|
|
||||||
|
|
||||||
ENTRYPOINT ["/opt/keycloak/bin/kc.sh"]
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Применяем начальную загрузку и устанавливаем необходимые переменные
|
|
||||||
/opt/keycloak/bin/kc.sh build && /opt/keycloak/bin/kc.sh start
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
services:
|
|
||||||
keycloak:
|
|
||||||
image: quay.io/keycloak/keycloak:22.0.0
|
|
||||||
container_name: keycloak
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
KC_HOSTNAME: keycloak.your-domain.com # Замените на ваш домен
|
|
||||||
KC_HOSTNAME_PORT: 443
|
|
||||||
KC_HOSTNAME_STRICT: "false"
|
|
||||||
KC_HTTP_ENABLED: "true"
|
|
||||||
KC_PROXY: edge
|
|
||||||
KC_PROXY_HEADERS: xforwarded
|
|
||||||
|
|
||||||
# Режим запуска (dev для разработки, production для продакшена)
|
|
||||||
KC_HEALTH_ENABLED: "true"
|
|
||||||
KC_METRICS_ENABLED: "true"
|
|
||||||
|
|
||||||
# База данных
|
|
||||||
KC_DB: postgres
|
|
||||||
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
|
|
||||||
KC_DB_USERNAME: keycloak
|
|
||||||
KC_DB_PASSWORD: strong_password
|
|
||||||
|
|
||||||
# Админ пользователь
|
|
||||||
KEYCLOAK_ADMIN: admin
|
|
||||||
KEYCLOAK_ADMIN_PASSWORD: secure_admin_password
|
|
||||||
|
|
||||||
# Дополнительные настройки
|
|
||||||
KC_LOG_LEVEL: INFO
|
|
||||||
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m"
|
|
||||||
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
- "8443:8443"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- ./data:/opt/keycloak/data
|
|
||||||
- ./logs:/opt/keycloak/log
|
|
||||||
- ./import:/opt/keycloak/import
|
|
||||||
- ./export:/opt/keycloak/export
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
|
|
||||||
networks:
|
|
||||||
- keycloak-network
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
image: postgres:15
|
|
||||||
container_name: keycloak-postgres
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: keycloak
|
|
||||||
POSTGRES_USER: keycloak
|
|
||||||
POSTGRES_PASSWORD: strong_password
|
|
||||||
volumes:
|
|
||||||
- ./postgres_data:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- keycloak-network
|
|
||||||
command: postgres -c 'max_connections=200'
|
|
||||||
|
|
||||||
networks:
|
|
||||||
keycloak-network:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
postgres_data:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
# MIGRATOR
|
|
||||||
MIGRATOR_PORT=3000
|
|
||||||
GOOSE_DRIVER=postgres
|
|
||||||
GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable'
|
|
||||||
GOOSE_MIGRATION_DIR=migrations
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
service:
|
|
||||||
migrator:
|
|
||||||
container_name: migrator
|
|
||||||
build:
|
|
||||||
context: ./migrator
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
depends_on:
|
|
||||||
- api
|
|
||||||
- db
|
|
||||||
volumes:
|
|
||||||
- goose:/migrations
|
|
||||||
command: goose up
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
goose:
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
FROM golang:latest
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
RUN go mod tidy
|
|
||||||
|
|
||||||
RUN go install github.com/pressly/goose/v3/cmd/goose@latest
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
module migrator
|
|
||||||
|
|
||||||
go 1.22.5
|
|
||||||
|
|
||||||
require (
|
|
||||||
bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c // indirect
|
|
||||||
filippo.io/edwards25519 v1.1.0 // indirect
|
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4 // indirect
|
|
||||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
|
|
||||||
github.com/denisenkom/go-mssqldb v0.12.3 // indirect
|
|
||||||
github.com/go-sql-driver/mysql v1.8.1 // indirect
|
|
||||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
|
|
||||||
github.com/golang-sql/sqlexp v0.1.0 // indirect
|
|
||||||
github.com/kylelemons/go-gypsy v1.0.0 // indirect
|
|
||||||
github.com/lib/pq v1.10.9 // indirect
|
|
||||||
github.com/mattn/go-sqlite3 v1.14.22 // indirect
|
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
|
||||||
github.com/pressly/goose v2.7.0+incompatible // indirect
|
|
||||||
github.com/ziutek/mymysql v1.5.4 // indirect
|
|
||||||
golang.org/x/crypto v0.26.0 // indirect
|
|
||||||
)
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c h1:bkb2NMGo3/Du52wvYj9Whth5KZfMV6d3O0Vbr3nz/UE=
|
|
||||||
bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4=
|
|
||||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
|
||||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
|
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
|
||||||
github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4=
|
|
||||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg=
|
|
||||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw=
|
|
||||||
github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
|
|
||||||
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
|
|
||||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
|
||||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
|
||||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
|
||||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
|
||||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
|
||||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
|
||||||
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
|
|
||||||
github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI=
|
|
||||||
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
|
||||||
github.com/kylelemons/go-gypsy v1.0.0 h1:7/wQ7A3UL1bnqRMnZ6T8cwCOArfZCxFmb1iTxaOOo1s=
|
|
||||||
github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU=
|
|
||||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
|
||||||
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
|
||||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
|
||||||
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
|
||||||
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
|
|
||||||
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
|
||||||
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
|
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
|
||||||
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/pressly/goose v2.7.0+incompatible h1:PWejVEv07LCerQEzMMeAtjuyCKbyprZ/LBa6K5P0OCQ=
|
|
||||||
github.com/pressly/goose v2.7.0+incompatible/go.mod h1:m+QHWCqxR3k8D9l7qfzuC/djtlfzxr34mozWDYEu1z8=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
|
||||||
github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
|
|
||||||
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
|
||||||
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
|
|
||||||
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
|
||||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DROP TABLE IF EXISTS users;
|
|
||||||
CREATE TABLE IF NOT EXISTS users(
|
|
||||||
id UUID NOT NULL PRIMARY KEY,
|
|
||||||
name VARCHAR(50) NOT NULL,
|
|
||||||
email VARCHAR(50) NOT NULL UNIQUE,
|
|
||||||
password VARCHAR(500) NOT NULL,
|
|
||||||
phone VARCHAR(50) NOT NULL UNIQUE
|
|
||||||
);
|
|
||||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
||||||
CREATE INDEX email_index ON users (email);
|
|
||||||
CREATE INDEX phone_index ON users (phone);
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DROP TABLE IF EXISTS users;
|
|
||||||
DROP EXTENSION IF EXISTS "uuid-ossp";
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
ALTER TABLE users ADD COLUMN role VARCHAR(50);
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
ALTER TABLE users DROP COLUMN role;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# POSTGRESQL
|
|
||||||
|
|
||||||
PGHOST=db
|
|
||||||
PGPORT=5432
|
|
||||||
PGUSER=postgres
|
|
||||||
PGPASSWORD=postgres
|
|
||||||
PGDATABASE=postgres
|
|
||||||
SSLmode=disable
|
|
||||||
PGURL='postgres://postgres:postgres@db:5432/postgres?sslmode=disable'
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
services:
|
|
||||||
db:
|
|
||||||
image: postgres:16
|
|
||||||
container_name: db
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
ports:
|
|
||||||
- "${PGPORT}:${PGPORT}"
|
|
||||||
volumes:
|
|
||||||
- postgres-db:/var/lib/postgresql/data
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${PGUSER}
|
|
||||||
- POSTGRES_PASSWORD=${PGPASSWORD}
|
|
||||||
- POSTGRES_DB=${PGDATABASE}
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
postgres-db:
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
DOMAIN=yalarba.ru
|
|
||||||
CERTBOT_EMAIL=vaitovgaziz@yandex.ru
|
|
||||||
NGINX_PROXY_PORT=80
|
|
||||||
NGINX_SSL_PORT=443
|
|
||||||
ZITADEL_HOST=zitadel.yalarba.ru
|
|
||||||
ZITADEL_PORT=8080
|
|
||||||
ZITADEL_VERSION=v2.13.0
|
|
||||||
POSTGRES_PASSWORD=strongpassword
|
|
||||||
POSTGRES_USER=zitadel
|
|
||||||
POSTGRES_DB=zitadel
|
|
||||||
@@ -12,9 +12,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||||
@@ -51,7 +51,7 @@ h1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#telegram a {
|
#telegram a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section {
|
.section {
|
||||||
@@ -129,7 +129,7 @@ footer {
|
|||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-box{
|
.footer-box {
|
||||||
width: 4rem;
|
width: 4rem;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
}
|
}
|
||||||
@@ -142,6 +142,10 @@ footer {
|
|||||||
|
|
||||||
.footer-link:hover {
|
.footer-link:hover {
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-box-shadow: 2px 2px 8px 0px rgba(32, 187, 108, 0.43);
|
||||||
|
-moz-box-shadow: 2px 2px 8px 0px rgba(32, 187, 108, 0.43);
|
||||||
|
box-shadow: 2px 2px 8px 0px rgba(32, 187, 108, 0.43);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-end-text {
|
.footer-end-text {
|
||||||
|
|||||||
Reference in New Issue
Block a user