152 lines
6.1 KiB
MySQL
152 lines
6.1 KiB
MySQL
|
|
-- Tabela de roles
|
||
|
|
CREATE TABLE IF NOT EXISTS roles (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
nome VARCHAR(50) NOT NULL UNIQUE,
|
||
|
|
nivel INTEGER NOT NULL,
|
||
|
|
descricao TEXT
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Tabela de permissões
|
||
|
|
CREATE TABLE IF NOT EXISTS permissions (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
nome VARCHAR(50) NOT NULL UNIQUE,
|
||
|
|
descricao TEXT
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Tabela de mapeamento Role-Permission
|
||
|
|
CREATE TABLE IF NOT EXISTS role_permissions (
|
||
|
|
role_id INTEGER NOT NULL,
|
||
|
|
permission_id INTEGER NOT NULL,
|
||
|
|
PRIMARY KEY (role_id, permission_id),
|
||
|
|
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (permission_id) REFERENCES permissions(id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Tabela de mapeamento User-Role
|
||
|
|
CREATE TABLE IF NOT EXISTS user_roles (
|
||
|
|
user_id INTEGER NOT NULL,
|
||
|
|
role_id INTEGER NOT NULL,
|
||
|
|
PRIMARY KEY (user_id, role_id),
|
||
|
|
FOREIGN KEY (user_id) REFERENCES usuarios(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Inserir roles básicas
|
||
|
|
INSERT OR IGNORE INTO roles (nome, nivel, descricao) VALUES
|
||
|
|
('Militante Básico', 1, 'Militante com permissões básicas'),
|
||
|
|
('Secretário de Célula', 2, 'Responsável por uma célula'),
|
||
|
|
('Membro de Setor', 3, 'Membro de um setor'),
|
||
|
|
('Secretário de Setor', 4, 'Responsável por um setor'),
|
||
|
|
('Membro de CR', 5, 'Membro de um Comitê Regional'),
|
||
|
|
('Secretário de CR', 6, 'Responsável por um Comitê Regional'),
|
||
|
|
('Membro do CC', 7, 'Membro do Comitê Central'),
|
||
|
|
('Secretário Geral', 8, 'Secretário Geral ou de Organização do CC');
|
||
|
|
|
||
|
|
-- Inserir permissões básicas
|
||
|
|
INSERT OR IGNORE INTO permissions (nome, descricao) VALUES
|
||
|
|
-- Permissões básicas
|
||
|
|
('view_own_data', 'Visualizar próprios dados'),
|
||
|
|
('edit_own_data', 'Editar próprios dados'),
|
||
|
|
('view_cell_data', 'Visualizar dados da célula'),
|
||
|
|
('create_militant', 'Criar novos militantes'),
|
||
|
|
|
||
|
|
-- Permissões de célula
|
||
|
|
('manage_cell_members', 'Gerenciar membros da célula'),
|
||
|
|
('create_cell_member', 'Criar membros na célula'),
|
||
|
|
('view_cell_reports', 'Visualizar relatórios da célula'),
|
||
|
|
|
||
|
|
-- Permissões de setor
|
||
|
|
('manage_sector_cells', 'Gerenciar células do setor'),
|
||
|
|
('create_sector_cell', 'Criar células no setor'),
|
||
|
|
('view_sector_reports', 'Visualizar relatórios do setor'),
|
||
|
|
|
||
|
|
-- Permissões de CR
|
||
|
|
('manage_cr_sectors', 'Gerenciar setores do CR'),
|
||
|
|
('create_cr_sector', 'Criar setores no CR'),
|
||
|
|
('view_cr_reports', 'Visualizar relatórios do CR'),
|
||
|
|
|
||
|
|
-- Permissões de CC
|
||
|
|
('manage_cc_crs', 'Gerenciar CRs'),
|
||
|
|
('create_cc_cr', 'Criar CRs'),
|
||
|
|
('view_cc_reports', 'Visualizar relatórios nacionais'),
|
||
|
|
('system_config', 'Configurar sistema');
|
||
|
|
|
||
|
|
-- Mapear permissões para roles
|
||
|
|
-- Militante Básico
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Militante Básico'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data');
|
||
|
|
|
||
|
|
-- Secretário de Célula
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Secretário de Célula'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'create_militant');
|
||
|
|
|
||
|
|
-- Membro de Setor
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Membro de Setor'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'create_militant');
|
||
|
|
|
||
|
|
-- Secretário de Setor
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Secretário de Setor'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'manage_sector_cells', 'create_sector_cell',
|
||
|
|
'create_militant');
|
||
|
|
|
||
|
|
-- Membro de CR
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Membro de CR'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'manage_sector_cells', 'create_sector_cell',
|
||
|
|
'view_cr_reports', 'create_militant');
|
||
|
|
|
||
|
|
-- Secretário de CR
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Secretário de CR'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'manage_sector_cells', 'create_sector_cell',
|
||
|
|
'view_cr_reports', 'manage_cr_sectors', 'create_cr_sector',
|
||
|
|
'create_militant');
|
||
|
|
|
||
|
|
-- Membro do CC
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Membro do CC'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'manage_sector_cells', 'create_sector_cell',
|
||
|
|
'view_cr_reports', 'manage_cr_sectors', 'create_cr_sector',
|
||
|
|
'view_cc_reports', 'create_militant');
|
||
|
|
|
||
|
|
-- Secretário Geral
|
||
|
|
INSERT OR IGNORE INTO role_permissions (role_id, permission_id)
|
||
|
|
SELECT r.id, p.id
|
||
|
|
FROM roles r, permissions p
|
||
|
|
WHERE r.nome = 'Secretário Geral'
|
||
|
|
AND p.nome IN ('view_own_data', 'edit_own_data', 'view_cell_data',
|
||
|
|
'manage_cell_members', 'create_cell_member', 'view_cell_reports',
|
||
|
|
'view_sector_reports', 'manage_sector_cells', 'create_sector_cell',
|
||
|
|
'view_cr_reports', 'manage_cr_sectors', 'create_cr_sector',
|
||
|
|
'view_cc_reports', 'manage_cc_crs', 'create_cc_cr',
|
||
|
|
'system_config', 'create_militant');
|