UDT-001: Login (scaffolding + JWT RS256 end-to-end) #1
43
database/migrations/V001__create_usuario.sql
Normal file
43
database/migrations/V001__create_usuario.sql
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
-- V001__create_usuario.sql
|
||||||
|
-- Creates the core Usuario table for SIG-CM2
|
||||||
|
-- Run on: SIGCM2 (prod) and SIGCM2_Test (integration tests)
|
||||||
|
|
||||||
|
SET QUOTED_IDENTIFIER ON;
|
||||||
|
SET ANSI_NULLS ON;
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF OBJECT_ID('dbo.Usuario', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE dbo.Usuario (
|
||||||
|
Id INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_Usuario PRIMARY KEY,
|
||||||
|
Username NVARCHAR(50) NOT NULL,
|
||||||
|
PasswordHash NVARCHAR(255) NOT NULL,
|
||||||
|
Nombre NVARCHAR(100) NOT NULL,
|
||||||
|
Apellido NVARCHAR(100) NOT NULL,
|
||||||
|
Email NVARCHAR(150) NULL,
|
||||||
|
Rol VARCHAR(30) NOT NULL,
|
||||||
|
PermisosJson NVARCHAR(MAX) NOT NULL CONSTRAINT DF_Usuario_Permisos DEFAULT('[]'),
|
||||||
|
Activo BIT NOT NULL CONSTRAINT DF_Usuario_Activo DEFAULT(1),
|
||||||
|
FechaCreacion DATETIME2(3) NOT NULL CONSTRAINT DF_Usuario_FechaCreacion DEFAULT(SYSUTCDATETIME()),
|
||||||
|
FechaModificacion DATETIME2(3) NULL,
|
||||||
|
UltimoLogin DATETIME2(3) NULL,
|
||||||
|
CONSTRAINT UQ_Usuario_Username UNIQUE (Username),
|
||||||
|
CONSTRAINT CK_Usuario_Rol CHECK (Rol IN ('admin','vendedor','tasador','consulta'))
|
||||||
|
);
|
||||||
|
|
||||||
|
PRINT 'Table dbo.Usuario created successfully.';
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
PRINT 'Table dbo.Usuario already exists — skipping.';
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_Usuario_Username_Activo' AND object_id = OBJECT_ID('dbo.Usuario'))
|
||||||
|
BEGIN
|
||||||
|
CREATE INDEX IX_Usuario_Username_Activo
|
||||||
|
ON dbo.Usuario(Username)
|
||||||
|
WHERE Activo = 1;
|
||||||
|
PRINT 'Index IX_Usuario_Username_Activo created.';
|
||||||
|
END
|
||||||
|
GO
|
||||||
30
database/seeds/S001__seed_admin.sql
Normal file
30
database/seeds/S001__seed_admin.sql
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
-- S001__seed_admin.sql
|
||||||
|
-- Seeds the default admin user for SIG-CM2
|
||||||
|
-- BCrypt hash of '@Diego550@' at cost 12
|
||||||
|
-- Generated: 2026-04-13
|
||||||
|
|
||||||
|
SET QUOTED_IDENTIFIER ON;
|
||||||
|
SET ANSI_NULLS ON;
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM dbo.Usuario WHERE Username = 'admin')
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO dbo.Usuario (Username, PasswordHash, Nombre, Apellido, Email, Rol, PermisosJson, Activo)
|
||||||
|
VALUES (
|
||||||
|
'admin',
|
||||||
|
'$2a$12$rmq6tlSAQ8WXhR2CwLCSeuwCJKz/.8Eab95UQCUNfwe4dokeOqMcW',
|
||||||
|
'Administrador',
|
||||||
|
'Sistema',
|
||||||
|
NULL,
|
||||||
|
'admin',
|
||||||
|
'["*"]',
|
||||||
|
1
|
||||||
|
);
|
||||||
|
PRINT 'Admin user seeded successfully.';
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
PRINT 'Admin user already exists — skipping.';
|
||||||
|
END
|
||||||
|
GO
|
||||||
Reference in New Issue
Block a user