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:
2025-09-24 05:32:16 +05:00
parent 5bbb97c0c3
commit e7cb1cb6cc
23 changed files with 43 additions and 551 deletions
-9
View File
@@ -1,9 +0,0 @@
# MIGRATOR
MIGRATOR_PORT=3000
GOOSE_DRIVER=postgres
GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable'
GOOSE_MIGRATION_DIR=migrations
+1 -1
View File
@@ -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
-106
View File
@@ -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}`);
})
-45
View File
@@ -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}");
});
-44
View File
@@ -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}");
});
-5
View File
@@ -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
+33
View File
@@ -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:
-52
View File
@@ -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
-23
View File
@@ -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"]
-5
View File
@@ -1,5 +0,0 @@
#!/bin/sh
set -e
# Применяем начальную загрузку и устанавливаем необходимые переменные
/opt/keycloak/bin/kc.sh build && /opt/keycloak/bin/kc.sh start
-67
View File
@@ -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:
-6
View File
@@ -1,6 +0,0 @@
# MIGRATOR
MIGRATOR_PORT=3000
GOOSE_DRIVER=postgres
GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable'
GOOSE_MIGRATION_DIR=migrations
-17
View File
@@ -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:
-9
View File
@@ -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
-21
View File
@@ -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
)
-69
View File
@@ -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
-9
View File
@@ -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'
-19
View File
@@ -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:
-10
View File
@@ -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
View File
+9 -5
View File
@@ -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 {