Files
PowderCoatingLogix/scripts/seed_admins.sql
T
2026-04-23 21:38:24 -04:00

181 lines
7.3 KiB
Transact-SQL

-- =============================================================================
-- PowderCoating App - Initial Seed SQL
-- Generated: 2026-02-28 04:10:44 UTC
--
-- Run this against your Azure SQL database when startup seeding fails.
-- All inserts are guarded with IF NOT EXISTS and are safe to re-run.
-- =============================================================================
SET NOCOUNT ON;
GO
-- 1. Default Company
IF NOT EXISTS (SELECT 1 FROM Companies WHERE CompanyCode = 'DEMO')
BEGIN
SET IDENTITY_INSERT Companies ON;
INSERT INTO Companies (
Id, CompanyId, CompanyName, CompanyCode,
PrimaryContactName, PrimaryContactEmail, Phone,
Address, City, State, ZipCode,
IsActive, SubscriptionPlan, SubscriptionStatus,
SubscriptionStartDate, TimeZone,
CreatedAt, IsDeleted
) VALUES (
1, 1, 'Demo Company', 'DEMO',
'Admin User', 'admin@demo.com', '(555) 123-4567',
'123 Demo Street', 'Demo City', 'CA', '90210',
1, 2, 0,
'2026-02-28 04:10:44', 'America/New_York',
'2026-02-28 04:10:44', 0
);
SET IDENTITY_INSERT Companies OFF;
PRINT 'Company inserted.';
END
ELSE
PRINT 'Company already exists - skipped.';
GO
-- 2. Roles
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'SUPERADMIN')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('208a163b-c303-4083-856e-4060bc5a923d', 'SuperAdmin', 'SUPERADMIN', NEWID());
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'ADMINISTRATOR')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('bf92ab6a-0d14-42d5-b19d-b5f1a5da8df0', 'Administrator', 'ADMINISTRATOR', NEWID());
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'MANAGER')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('c12dcd9d-408a-4d38-ba55-ef2a3f88ccb5', 'Manager', 'MANAGER', NEWID());
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'EMPLOYEE')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('1ab093d9-f1fb-439e-9194-5fe76be041dc', 'Employee', 'EMPLOYEE', NEWID());
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'SHOPFLOOR')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('13ba213d-3118-4d93-ac5d-d0674369f409', 'ShopFloor', 'SHOPFLOOR', NEWID());
IF NOT EXISTS (SELECT 1 FROM AspNetRoles WHERE NormalizedName = 'READONLY')
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES ('1181bde5-0034-439b-8351-c7821faf6c28', 'ReadOnly', 'READONLY', NEWID());
PRINT 'Roles inserted.';
GO
-- 3. SuperAdmin Users
-- User 1: superadmin@powdercoating.com / SuperAdmin123!
IF NOT EXISTS (SELECT 1 FROM AspNetUsers WHERE NormalizedEmail = 'SUPERADMIN@POWDERCOATING.COM')
BEGIN
INSERT INTO AspNetUsers (
Id, UserName, NormalizedUserName, Email, NormalizedEmail,
EmailConfirmed, PasswordHash, SecurityStamp, ConcurrencyStamp,
PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled,
LockoutEnd, LockoutEnabled, AccessFailedCount,
CompanyId, CompanyRole,
FirstName, LastName, EmployeeNumber,
HireDate, IsActive,
Department, Position, HourlyRate,
Theme, DateFormat, TimeZone, SidebarColor,
CanViewShopFloor, CanManageJobs, CanManageInventory, CanManageCustomers,
CanCreateQuotes, CanApproveQuotes, CanManageCalendar, CanViewCalendar,
CanManageProducts, CanViewProducts, CanManageEquipment,
CanManageSuppliers, CanManageMaintenance,
CreatedAt
) VALUES (
'd0a94944-60ab-49dd-aff5-3f9ae6a351bc',
'superadmin@powdercoating.com', 'SUPERADMIN@POWDERCOATING.COM',
'superadmin@powdercoating.com', 'SUPERADMIN@POWDERCOATING.COM',
1, 'AQAAAAEAAYagAAAAEFSYOADLy+Inki1mJqCFcIUyEsv584NI8kyE5rorPABmuphaRajTEFbXK/VoCGQrJA==', '3b604497-51cd-401f-92cd-eda6c7c60ff2', '7f532e9b-89ee-4a6c-ab12-ab16b69f45a9',
NULL, 0, 0, NULL, 1, 0,
1, NULL,
'Super', 'Admin', 'SA-001',
'2026-02-28 04:10:44', 1,
'Platform', 'Super Administrator', 0,
'light', 'MM/dd/yyyy', 'America/New_York', 'ocean',
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1,
1, 1,
'2026-02-28 04:10:44'
);
PRINT 'User superadmin@powdercoating.com inserted.';
END
ELSE
PRINT 'User superadmin@powdercoating.com already exists - skipped.';
GO
-- User 2: admin@powdercoating.com / Admin123!
IF NOT EXISTS (SELECT 1 FROM AspNetUsers WHERE NormalizedEmail = 'ADMIN@POWDERCOATING.COM')
BEGIN
INSERT INTO AspNetUsers (
Id, UserName, NormalizedUserName, Email, NormalizedEmail,
EmailConfirmed, PasswordHash, SecurityStamp, ConcurrencyStamp,
PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled,
LockoutEnd, LockoutEnabled, AccessFailedCount,
CompanyId, CompanyRole,
FirstName, LastName, EmployeeNumber,
HireDate, IsActive,
Department, Position, HourlyRate,
Theme, DateFormat, TimeZone, SidebarColor,
CanViewShopFloor, CanManageJobs, CanManageInventory, CanManageCustomers,
CanCreateQuotes, CanApproveQuotes, CanManageCalendar, CanViewCalendar,
CanManageProducts, CanViewProducts, CanManageEquipment,
CanManageSuppliers, CanManageMaintenance,
CreatedAt
) VALUES (
'6b0f44fe-8547-41ac-81b7-6451a49077c3',
'admin@powdercoating.com', 'ADMIN@POWDERCOATING.COM',
'admin@powdercoating.com', 'ADMIN@POWDERCOATING.COM',
1, 'AQAAAAEAAYagAAAAENnCYaYw3wsQ5ZW8u7tHBs6eEtAcFKJ+35B93yDq0TMiP524/UcWO8qEoTcfyiAJnw==', '7d2b9944-345a-4819-af02-2f7f56e28120', 'b4b820d5-3168-465a-b107-2a0e99e3eab1',
NULL, 0, 0, NULL, 1, 0,
1, NULL,
'Admin', 'User', 'SA-002',
'2026-02-28 04:10:44', 1,
'Platform', 'Platform Administrator', 0,
'light', 'MM/dd/yyyy', 'America/New_York', 'ocean',
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1,
1, 1,
'2026-02-28 04:10:44'
);
PRINT 'User admin@powdercoating.com inserted.';
END
ELSE
PRINT 'User admin@powdercoating.com already exists - skipped.';
GO
-- 4. Assign SuperAdmin role to both users
DECLARE @roleId NVARCHAR(450) = (SELECT Id FROM AspNetRoles WHERE NormalizedName = 'SUPERADMIN');
DECLARE @u1Id NVARCHAR(450) = (SELECT Id FROM AspNetUsers WHERE NormalizedEmail = 'SUPERADMIN@POWDERCOATING.COM');
DECLARE @u2Id NVARCHAR(450) = (SELECT Id FROM AspNetUsers WHERE NormalizedEmail = 'ADMIN@POWDERCOATING.COM');
IF @u1Id IS NOT NULL AND @roleId IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM AspNetUserRoles WHERE UserId = @u1Id AND RoleId = @roleId)
BEGIN
INSERT INTO AspNetUserRoles (UserId, RoleId) VALUES (@u1Id, @roleId);
PRINT 'Role assigned to superadmin@powdercoating.com.';
END
IF @u2Id IS NOT NULL AND @roleId IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM AspNetUserRoles WHERE UserId = @u2Id AND RoleId = @roleId)
BEGIN
INSERT INTO AspNetUserRoles (UserId, RoleId) VALUES (@u2Id, @roleId);
PRINT 'Role assigned to admin@powdercoating.com.';
END
GO
PRINT '================================================';
PRINT 'Seed complete.';
PRINT 'Login 1: superadmin@powdercoating.com / SuperAdmin123!';
PRINT 'Login 2: admin@powdercoating.com / Admin123!';
PRINT '================================================';
GO