Files
workbloom-backend/database/v0/migrations/002_public.empresa.sql
Claudecio Martins ec216528b5 feat(auth): implementar rotas e serviços de autenticação
- Adicionadas rotas de login, logout e seleção de contexto de trabalho em AuthRoutes.php.
- AuthService aprimorado com login detalhado, validação de token, listagem de contexto de trabalho e métodos de seleção.
- JWTService introduzido para lidar com a geração e validação de JWT.
- Migração de banco de dados atualizada para incluir dados de amostra da empresa.
- Arquivo de migração RBAC criado para futura implementação de controle de acesso baseado em função.
2025-10-22 13:15:43 +02:00

109 lines
5.4 KiB
SQL

-- ===============================================================================================================
-- Status da Empresa
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.empresa_status (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO public.empresa_status (id, descricao) VALUES
(1, 'Ativa'),
(2, 'Inativa'),
(3, 'Pendente'),
(4, 'Suspensa');
SELECT setval(pg_get_serial_sequence('public.empresa_status','id'), (SELECT MAX(id) FROM public.empresa_status));
-- ===============================================================================================================
-- Empresa Tipo Unidade
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.empresa_tipo_unidade (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO public.empresa_tipo_unidade (id, descricao) VALUES
(1, 'Matriz'),
(2, 'Filial');
SELECT setval(pg_get_serial_sequence('public.empresa_tipo_unidade','id'), (SELECT MAX(id) FROM public.empresa_tipo_unidade));
-- ===============================================================================================================
-- Empresa
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.empresa (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
uuid UUID NOT NULL UNIQUE,
status_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.empresa_status(id) ON UPDATE CASCADE ON DELETE RESTRICT,
-- Dados da Empresa
tipo_unidade_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.empresa_tipo_unidade(id) ON UPDATE CASCADE ON DELETE RESTRICT,
razao_social VARCHAR(255) NOT NULL,
nome_fantasia VARCHAR(255) DEFAULT NULL,
inscricao_tipo_id BIGINT DEFAULT 1 NOT NULL REFERENCES esocial.tab_05(id) ON UPDATE CASCADE ON DELETE RESTRICT,
document_inscricao VARCHAR(20) NOT NULL UNIQUE,
inscricao_raiz VARCHAR(20) NOT NULL,
-- Endereço
endereco_codigo_ibge BIGINT DEFAULT NULL,
endereco_cep VARCHAR(10) DEFAULT NULL,
endereco_logradouro VARCHAR(255) DEFAULT NULL,
endereco_numero VARCHAR(20) DEFAULT NULL,
endereco_complemento VARCHAR(255) DEFAULT NULL,
endereco_bairro VARCHAR(100) DEFAULT NULL,
endereco_cidade VARCHAR(100) DEFAULT NULL,
endereco_estado VARCHAR(2) DEFAULT NULL,
-- Contato
contato_email VARCHAR(255) DEFAULT NULL,
contato_celular VARCHAR(20) DEFAULT NULL,
contato_telefone VARCHAR(20) DEFAULT NULL,
responsavel_nome VARCHAR(255) DEFAULT NULL,
responsavel_cargo VARCHAR(100) DEFAULT NULL,
responsavel_email VARCHAR(255) DEFAULT NULL,
responsavel_telefone VARCHAR(20) DEFAULT NULL,
responsavel_document_cpf CHAR(11) DEFAULT NULL,
-- Metadados
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT NULL,
deleted_at TIMESTAMP DEFAULT NULL
);
INSERT INTO public.empresa (uuid, razao_social, nome_fantasia, inscricao_tipo_id, document_inscricao, inscricao_raiz, endereco_codigo_ibge, endereco_cep, endereco_logradouro, endereco_numero, endereco_complemento, endereco_bairro, endereco_cidade, endereco_estado) VALUES
('019a07d3-9174-76b6-a9f0-9e0e189fdba8', 'Ativa Servicos em Refrigeracao e Servicos em Eletrica LTDA', 'Ativa Refrigeração e Elétrica', 1, '61365393000121', '61365393', '2304400', '60115191', 'Rua Monesenhor Bruno', '1153', 'Sala 1423', 'Aldeota', 'Fortaleza', 'CE'),
('019a07d3-9174-7879-93ae-4de7da3b5a93', 'A C C Andrade LTDA', 'A.c. Car', 1, '21899523000191', '21899523', '2307601', '62930000', 'Rua Leila Kristinna Lopes Maia', '58', NULL, 'Limoeirinho', 'Limoeiro do Norte', 'CE');
-- ===============================================================================================================
-- Empresa Certificado Digital
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.empresa_certificado_digital (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
uuid UUID NOT NULL UNIQUE,
-- Dados do Certificado Digital
tipo_certificado CHAR(2) NOT NULL DEFAULT 'A1',
distinguished_name VARCHAR(255) NOT NULL,
categoria_certificado VARCHAR(100) NOT NULL DEFAULT 'e-CNPJ',
issued_in TIMESTAMP NOT NULL,
expires_in TIMESTAMP NOT NULL,
file_path TEXT DEFAULT NULL,
file_hash CHAR(64) DEFAULT NULL,
senha_hash TEXT DEFAULT NULL,
pin_hash TEXT DEFAULT NULL,
numero_serie VARCHAR(100) NOT NULL UNIQUE,
-- Metadados
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT NULL,
deleted_at TIMESTAMP DEFAULT NULL
);
-- ===============================================================================================================
-- Empresa Certificado
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.empresa_has_certificado_digital (
empresa_id BIGINT NOT NULL REFERENCES public.empresa(id) ON UPDATE CASCADE ON DELETE CASCADE,
certificado_digital_id BIGINT NOT NULL REFERENCES public.empresa_certificado_digital(id) ON UPDATE CASCADE ON DELETE CASCADE,
PRIMARY KEY (empresa_id, certificado_digital_id)
);