-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSeedData.sql
More file actions
184 lines (153 loc) · 6.33 KB
/
Copy pathSeedData.sql
File metadata and controls
184 lines (153 loc) · 6.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
-- ================================================================
-- Script de Inicialización de Datos (Seed Data)
-- Sistema PoliMarket - Módulo de Seguridad
-- ================================================================
-- Este script inicializa los datos básicos necesarios para el MVP
-- Incluye roles iniciales y un usuario administrador por defecto
-- ================================================================
USE PoliMarketDb;
GO
-- ================================================================
-- 1. INSERTAR ROLES INICIALES
-- ================================================================
PRINT 'Insertando roles iniciales...';
-- Verificar si ya existen roles para evitar duplicados
IF NOT EXISTS (SELECT 1 FROM Security.Roles WHERE RoleName = 'Vendedor Activo')
BEGIN
INSERT INTO Security.Roles (RoleName) VALUES ('Vendedor Activo');
PRINT ' ✓ Rol "Vendedor Activo" creado';
END
ELSE
PRINT ' - Rol "Vendedor Activo" ya existe';
IF NOT EXISTS (SELECT 1 FROM Security.Roles WHERE RoleName = 'Vendedor Inactivo')
BEGIN
INSERT INTO Security.Roles (RoleName) VALUES ('Vendedor Inactivo');
PRINT ' ✓ Rol "Vendedor Inactivo" creado';
END
ELSE
PRINT ' - Rol "Vendedor Inactivo" ya existe';
IF NOT EXISTS (SELECT 1 FROM Security.Roles WHERE RoleName = 'Administrador')
BEGIN
INSERT INTO Security.Roles (RoleName) VALUES ('Administrador');
PRINT ' ✓ Rol "Administrador" creado';
END
ELSE
PRINT ' - Rol "Administrador" ya existe';
IF NOT EXISTS (SELECT 1 FROM Security.Roles WHERE RoleName = 'Recursos Humanos')
BEGIN
INSERT INTO Security.Roles (RoleName) VALUES ('Recursos Humanos');
PRINT ' ✓ Rol "Recursos Humanos" creado';
END
ELSE
PRINT ' - Rol "Recursos Humanos" ya existe';
GO
-- ================================================================
-- 2. CREAR USUARIO ADMINISTRADOR POR DEFECTO
-- ================================================================
PRINT 'Creando usuario administrador por defecto...';
DECLARE @AdminRoleId INT;
SELECT @AdminRoleId = Id FROM Security.Roles WHERE RoleName = 'Administrador';
-- Password: Admin123! (hasheado con SHA256)
-- Hash: PrP+ZrMeO00Q+nC1ytSccRIpSvauTkdqHEBRVdRaoSE=
DECLARE @HashedPassword NVARCHAR(255) = 'PrP+ZrMeO00Q+nC1ytSccRIpSvauTkdqHEBRVdRaoSE=';
IF NOT EXISTS (SELECT 1 FROM Security.Users WHERE Username = 'admin')
BEGIN
INSERT INTO Security.Users (FirstName, Username, HashedPassword, RoleId, IsActive)
VALUES ('Administrador del Sistema', 'admin', @HashedPassword, @AdminRoleId, 1);
PRINT ' ✓ Usuario administrador creado';
PRINT ' Username: admin';
PRINT ' Password: Admin123!';
PRINT ' IMPORTANTE: Cambiar esta contraseña en producción';
END
ELSE
PRINT ' - Usuario administrador ya existe';
GO
-- ================================================================
-- 3. CREAR USUARIOS DE EJEMPLO (OPCIONAL)
-- ================================================================
PRINT 'Creando usuarios de ejemplo...';
DECLARE @VendedorActivoRoleId INT;
DECLARE @VendedorInactivoRoleId INT;
DECLARE @RRHHRoleId INT;
SELECT @VendedorActivoRoleId = Id FROM Security.Roles WHERE RoleName = 'Vendedor Activo';
SELECT @VendedorInactivoRoleId = Id FROM Security.Roles WHERE RoleName = 'Vendedor Inactivo';
SELECT @RRHHRoleId = Id FROM Security.Roles WHERE RoleName = 'Recursos Humanos';
-- Password para todos los usuarios de ejemplo: Test123!
-- Hash: VN5/YG8lI8uo76wXP6tC+39Z1Wzv+XTI/bc0LPLP40U=
DECLARE @TestPassword NVARCHAR(255) = 'VN5/YG8lI8uo76wXP6tC+39Z1Wzv+XTI/bc0LPLP40U=';
-- Vendedor Activo 1
IF NOT EXISTS (SELECT 1 FROM Security.Users WHERE Username = 'jperez')
BEGIN
INSERT INTO Security.Users (FirstName, Username, HashedPassword, RoleId, IsActive)
VALUES ('Juan Pérez', 'jperez', @TestPassword, @VendedorActivoRoleId, 1);
PRINT ' ✓ Usuario "jperez" creado (Vendedor Activo)';
END
-- Vendedor Activo 2
IF NOT EXISTS (SELECT 1 FROM Security.Users WHERE Username = 'mgarcia')
BEGIN
INSERT INTO Security.Users (FirstName, Username, HashedPassword, RoleId, IsActive)
VALUES ('María García', 'mgarcia', @TestPassword, @VendedorActivoRoleId, 1);
PRINT ' ✓ Usuario "mgarcia" creado (Vendedor Activo)';
END
-- Vendedor Inactivo (para probar CA 1.2)
IF NOT EXISTS (SELECT 1 FROM Security.Users WHERE Username = 'cinactivo')
BEGIN
INSERT INTO Security.Users (FirstName, Username, HashedPassword, RoleId, IsActive)
VALUES ('Carlos Inactivo', 'cinactivo', @TestPassword, @VendedorInactivoRoleId, 0);
PRINT ' ✓ Usuario "cinactivo" creado (Vendedor Inactivo)';
END
-- Usuario de Recursos Humanos
IF NOT EXISTS (SELECT 1 FROM Security.Users WHERE Username = 'rrhh')
BEGIN
INSERT INTO Security.Users (FirstName, Username, HashedPassword, RoleId, IsActive)
VALUES ('Recursos Humanos', 'rrhh', @TestPassword, @RRHHRoleId, 1);
PRINT ' ✓ Usuario "rrhh" creado (Recursos Humanos)';
END
GO
-- ================================================================
-- 4. VERIFICACIÓN DE DATOS INSERTADOS
-- ================================================================
PRINT '';
PRINT '================================================================';
PRINT 'RESUMEN DE DATOS INICIALIZADOS';
PRINT '================================================================';
PRINT '';
PRINT 'ROLES:';
SELECT
Id,
RoleName,
CreatedAt
FROM Security.Roles
ORDER BY Id;
PRINT '';
PRINT 'USUARIOS:';
SELECT
u.Id,
FirstName,
Username,
r.RoleName,
CASE WHEN IsActive = 1 THEN 'Activo' ELSE 'Inactivo' END AS Estado,
u.CreatedAt
FROM Security.Users u
INNER JOIN Security.Roles r ON u.RoleId = r.Id
ORDER BY u.Id;
PRINT '';
PRINT '================================================================';
PRINT 'CREDENCIALES DE PRUEBA';
PRINT '================================================================';
PRINT 'Administrador:';
PRINT ' Username: admin';
PRINT ' Password: Admin123!';
PRINT '';
PRINT 'Vendedores (todos con password: Test123!):';
PRINT ' - jperez (Vendedor Activo)';
PRINT ' - mgarcia (Vendedor Activo)';
PRINT ' - cinactivo (Vendedor Inactivo - no puede hacer login)';
PRINT '';
PRINT 'Recursos Humanos:';
PRINT ' - rrhh (Password: Test123!)';
PRINT '';
PRINT '================================================================';
PRINT '¡Inicialización completada exitosamente!';
PRINT '================================================================';
GO