TestDataBuilder.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System.Linq;
  2. using EntityFramework.DynamicFilters;
  3. using IwbZero.Authorization.Base.Users;
  4. using IwbZero.MultiTenancy;
  5. using WePlatform.Authorization.Roles;
  6. using WePlatform.Authorization.Users;
  7. using WePlatform.Configuration;
  8. using WePlatform.EF;
  9. using WePlatform.MultiTenancy;
  10. namespace WePlatform.SeedData
  11. {
  12. public class TestDataBuilder
  13. {
  14. private readonly WePlatformDbContext _context;
  15. private readonly int _tenantId;
  16. public TestDataBuilder(WePlatformDbContext context, int tenantId=1)
  17. {
  18. _context = context;
  19. _tenantId = tenantId;
  20. }
  21. public void Create()
  22. {
  23. _context.DisableAllFilters();
  24. //new DefaultViewAndSpCreate(_context).Create();
  25. new DefaultTypesCreator(_context).Create();
  26. new DefaultDataCreator(_context).Create();
  27. new RoleUserCreator(_context).Create();
  28. new DefaultSettingsCreator(_context).Create();
  29. new DefaultStatesCreator(_context).Create();
  30. new DefaultNotificationsCreator(_context).Create();
  31. //new DefaultAppGuidsCreator(_context).Create();
  32. _context.SaveChanges();
  33. }
  34. }
  35. public class RoleUserCreator
  36. {
  37. private readonly WePlatformDbContext _context;
  38. private int DefaultTenantId { get; set; }
  39. public RoleUserCreator(WePlatformDbContext context)
  40. {
  41. _context = context;
  42. DefaultTenantId = 1;
  43. }
  44. public void Create()
  45. {
  46. CreateHostUsers();
  47. CreateDefaultTenant();
  48. CreateRolesAndUsers();
  49. }
  50. private void CreateHostUsers()
  51. {
  52. // Admin user for host
  53. var adminUserForHost = _context.Users
  54. .FirstOrDefault(u => u.TenantId == null && u.UserName == UserBase.HostAdminName);
  55. if (adminUserForHost == null)
  56. {
  57. var user = User.CreateHostAdminUser();
  58. user.SetNormalizedNames();
  59. adminUserForHost = _context.Users.Add(user);
  60. _context.SaveChanges();
  61. }
  62. //AddUserPermission(adminUserForHost.Id, null);
  63. // SYSTEM user for host
  64. var systemUserForHost = _context.Users
  65. .FirstOrDefault(u => u.TenantId == null && u.UserName == UserBase.HostSystemName);
  66. if (systemUserForHost == null)
  67. {
  68. var user = User.CreateHostSystemUser();
  69. user.SetNormalizedNames();
  70. systemUserForHost = _context.Users.Add(user);
  71. _context.SaveChanges();
  72. }
  73. //AddUserPermission(systemUserForHost.Id, null);
  74. }
  75. private void CreateDefaultTenant()
  76. {
  77. var defaultTenant = _context.Tenants.FirstOrDefault(t => t.TenancyName == "Iwb");
  78. if (defaultTenant == null)
  79. {
  80. defaultTenant = _context.Tenants.Add(new Tenant(TenantBase.DefaultTenantName, $"{TenantBase.DefaultTenantName}-租主"));
  81. _context.SaveChanges();
  82. }
  83. DefaultTenantId = defaultTenant.Id;
  84. }
  85. private void CreateRolesAndUsers()
  86. {
  87. // admin role
  88. var adminRole = _context.Roles.FirstOrDefault(r => r.TenantId == DefaultTenantId && r.Name == StaticRoleNames.Tenants.Admin);
  89. if (adminRole == null)
  90. {
  91. adminRole = _context.Roles
  92. .Add(new Role(DefaultTenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin)
  93. {
  94. IsStatic = true,
  95. RoleType = UsersAndRolesTypeDefinition.Supper,
  96. AccountType = AccountTypeDefinition.System,
  97. });
  98. _context.SaveChanges();
  99. }
  100. //AddRolePermission(adminRole.Id);
  101. // Admin user
  102. var adminUser = _context.Users.FirstOrDefault(u => u.TenantId == DefaultTenantId && u.UserName == UserBase.AdminUserName);
  103. if (adminUser == null)
  104. {
  105. adminUser = User.CreateTenantAdminUser(DefaultTenantId);
  106. adminUser.IsEmailConfirmed = true;
  107. adminUser.IsActive = true;
  108. adminUser = _context.Users.Add(adminUser);
  109. _context.SaveChanges();
  110. }
  111. // User Permission
  112. //AddUserPermission(adminUser.Id);
  113. // System role
  114. var systemRole = _context.Roles.FirstOrDefault(r => r.TenantId == DefaultTenantId && r.Name == StaticRoleNames.Tenants.System);
  115. if (systemRole == null)
  116. {
  117. systemRole = _context.Roles
  118. .Add(new Role(DefaultTenantId, StaticRoleNames.Tenants.System, StaticRoleNames.Tenants.System)
  119. {
  120. IsStatic = true,
  121. RoleType = UsersAndRolesTypeDefinition.Supper,
  122. AccountType = AccountTypeDefinition.System,
  123. });
  124. _context.SaveChanges();
  125. }
  126. // Role Permission
  127. //AddRolePermission(systemRole.Id);
  128. // System user
  129. var systemUser = _context.Users.FirstOrDefault(u => u.TenantId == DefaultTenantId && u.UserName == UserBase.SystemUserName);
  130. if (systemUser == null)
  131. {
  132. systemUser = User.CreateTenantSystemUser(DefaultTenantId);
  133. systemUser.IsEmailConfirmed = true;
  134. systemUser.IsActive = true;
  135. systemUser = _context.Users.Add(systemUser);
  136. _context.SaveChanges();
  137. // Assign Admin role to admin user
  138. _context.UserRoles.Add(new UserRole(DefaultTenantId, systemUser.Id, systemRole.Id));
  139. _context.SaveChanges();
  140. }
  141. }
  142. }
  143. }