Files
python-oauth2-proxy-k8s/db/init.sql
2025-10-01 15:04:07 +05:00

121 lines
4.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Создание таблиц для демо-приложения
-- Организации
CREATE TABLE IF NOT EXISTS organizations (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Пользователи
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
full_name VARCHAR(255) NOT NULL,
organization_id INTEGER REFERENCES organizations(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Роли
CREATE TABLE IF NOT EXISTS roles (
id SERIAL PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Связь пользователей и ролей
CREATE TABLE IF NOT EXISTS user_roles (
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
role_id INTEGER REFERENCES roles(id) ON DELETE CASCADE,
assigned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, role_id)
);
-- Доступные ссылки
CREATE TABLE IF NOT EXISTS links (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
url VARCHAR(512) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Связь ролей и доступных ссылок
CREATE TABLE IF NOT EXISTS role_links (
role_id INTEGER REFERENCES roles(id) ON DELETE CASCADE,
link_id INTEGER REFERENCES links(id) ON DELETE CASCADE,
PRIMARY KEY (role_id, link_id)
);
-- Заполнение тестовыми данными
-- Организации
INSERT INTO organizations (name) VALUES
('Acme Corporation'),
('Tech Innovators Inc'),
('Global Solutions Ltd');
-- Роли
INSERT INTO roles (name, description) VALUES
('admin', 'Администратор с полным доступом'),
('developer', 'Разработчик с доступом к техническим ресурсам'),
('user', 'Обычный пользователь с базовым доступом'),
('manager', 'Менеджер с доступом к управленческим ресурсам');
-- Пользователи (используйте реальные email из Dex)
INSERT INTO users (email, full_name, organization_id) VALUES
('egor.muratov@gmail.com', 'Иван Администраторов', 1),
('developer@example.com', 'Мария Разработчикова', 2),
('user@example.com', 'Петр Пользователев', 3),
('manager@example.com', 'Анна Менеджерова', 1);
-- Назначение ролей пользователям
-- admin@example.com - admin + developer
INSERT INTO user_roles (user_id, role_id) VALUES
(1, 1), -- admin role
(1, 2); -- developer role
-- developer@example.com - developer + user
INSERT INTO user_roles (user_id, role_id) VALUES
(2, 2), -- developer role
(2, 3); -- user role
-- user@example.com - user
INSERT INTO user_roles (user_id, role_id) VALUES
(3, 3); -- user role
-- manager@example.com - manager + user
INSERT INTO user_roles (user_id, role_id) VALUES
(4, 4), -- manager role
(4, 3); -- user role
-- Ссылки
INSERT INTO links (title, url, description) VALUES
('Панель администрирования', 'https://admin.example.com', 'Управление системой'),
('Мониторинг', 'https://monitoring.example.com', 'Grafana и Prometheus'),
('CI/CD', 'https://ci.example.com', 'Jenkins/GitLab CI'),
('Документация API', 'https://docs.example.com', 'Swagger документация'),
('Git Repository', 'https://git.example.com', 'Репозиторий проекта'),
('Дашборд проектов', 'https://projects.example.com', 'Управление проектами'),
('Отчеты', 'https://reports.example.com', 'Аналитика и отчеты'),
('База знаний', 'https://wiki.example.com', 'Корпоративная wiki');
-- Связь ролей и ссылок
-- admin - доступ ко всему
INSERT INTO role_links (role_id, link_id) VALUES
(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8);
-- developer - технические ресурсы
INSERT INTO role_links (role_id, link_id) VALUES
(2, 2), (2, 3), (2, 4), (2, 5), (2, 8);
-- user - базовые ресурсы
INSERT INTO role_links (role_id, link_id) VALUES
(3, 8);
-- manager - управленческие ресурсы
INSERT INTO role_links (role_id, link_id) VALUES
(4, 6), (4, 7), (4, 8);