| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using System.Linq;
- using EntityFramework.DynamicFilters;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.MultiTenancy;
- using WePlatform.Authorization.Roles;
- using WePlatform.Authorization.Users;
- using WePlatform.Configuration;
- using WePlatform.EF;
- using WePlatform.MultiTenancy;
- namespace WePlatform.SeedData
- {
- public class TestDataBuilder
- {
- private readonly WePlatformDbContext _context;
- private readonly int _tenantId;
- public TestDataBuilder(WePlatformDbContext context, int tenantId=1)
- {
- _context = context;
- _tenantId = tenantId;
- }
- public void Create()
- {
- _context.DisableAllFilters();
- //new DefaultViewAndSpCreate(_context).Create();
- new DefaultTypesCreator(_context).Create();
- new DefaultDataCreator(_context).Create();
- new RoleUserCreator(_context).Create();
- new DefaultSettingsCreator(_context).Create();
- new DefaultStatesCreator(_context).Create();
- new DefaultNotificationsCreator(_context).Create();
- //new DefaultAppGuidsCreator(_context).Create();
- _context.SaveChanges();
- }
- }
- public class RoleUserCreator
- {
- private readonly WePlatformDbContext _context;
- private int DefaultTenantId { get; set; }
- public RoleUserCreator(WePlatformDbContext context)
- {
- _context = context;
- DefaultTenantId = 1;
- }
- public void Create()
- {
- CreateHostUsers();
- CreateDefaultTenant();
- CreateRolesAndUsers();
- }
- private void CreateHostUsers()
- {
- // Admin user for host
- var adminUserForHost = _context.Users
- .FirstOrDefault(u => u.TenantId == null && u.UserName == UserBase.HostAdminName);
- if (adminUserForHost == null)
- {
- var user = User.CreateHostAdminUser();
- user.SetNormalizedNames();
- adminUserForHost = _context.Users.Add(user);
- _context.SaveChanges();
- }
- //AddUserPermission(adminUserForHost.Id, null);
- // SYSTEM user for host
- var systemUserForHost = _context.Users
- .FirstOrDefault(u => u.TenantId == null && u.UserName == UserBase.HostSystemName);
- if (systemUserForHost == null)
- {
- var user = User.CreateHostSystemUser();
- user.SetNormalizedNames();
- systemUserForHost = _context.Users.Add(user);
- _context.SaveChanges();
- }
- //AddUserPermission(systemUserForHost.Id, null);
- }
- private void CreateDefaultTenant()
- {
- var defaultTenant = _context.Tenants.FirstOrDefault(t => t.TenancyName == "Iwb");
- if (defaultTenant == null)
- {
- defaultTenant = _context.Tenants.Add(new Tenant(TenantBase.DefaultTenantName, $"{TenantBase.DefaultTenantName}-租主"));
- _context.SaveChanges();
- }
- DefaultTenantId = defaultTenant.Id;
- }
- private void CreateRolesAndUsers()
- {
- // admin role
- var adminRole = _context.Roles.FirstOrDefault(r => r.TenantId == DefaultTenantId && r.Name == StaticRoleNames.Tenants.Admin);
- if (adminRole == null)
- {
- adminRole = _context.Roles
- .Add(new Role(DefaultTenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin)
- {
- IsStatic = true,
- RoleType = UsersAndRolesTypeDefinition.Supper,
- AccountType = AccountTypeDefinition.System,
- });
- _context.SaveChanges();
- }
- //AddRolePermission(adminRole.Id);
- // Admin user
- var adminUser = _context.Users.FirstOrDefault(u => u.TenantId == DefaultTenantId && u.UserName == UserBase.AdminUserName);
- if (adminUser == null)
- {
- adminUser = User.CreateTenantAdminUser(DefaultTenantId);
- adminUser.IsEmailConfirmed = true;
- adminUser.IsActive = true;
- adminUser = _context.Users.Add(adminUser);
- _context.SaveChanges();
- }
- // User Permission
- //AddUserPermission(adminUser.Id);
- // System role
- var systemRole = _context.Roles.FirstOrDefault(r => r.TenantId == DefaultTenantId && r.Name == StaticRoleNames.Tenants.System);
- if (systemRole == null)
- {
- systemRole = _context.Roles
- .Add(new Role(DefaultTenantId, StaticRoleNames.Tenants.System, StaticRoleNames.Tenants.System)
- {
- IsStatic = true,
- RoleType = UsersAndRolesTypeDefinition.Supper,
- AccountType = AccountTypeDefinition.System,
- });
- _context.SaveChanges();
- }
- // Role Permission
- //AddRolePermission(systemRole.Id);
- // System user
- var systemUser = _context.Users.FirstOrDefault(u => u.TenantId == DefaultTenantId && u.UserName == UserBase.SystemUserName);
- if (systemUser == null)
- {
- systemUser = User.CreateTenantSystemUser(DefaultTenantId);
- systemUser.IsEmailConfirmed = true;
- systemUser.IsActive = true;
- systemUser = _context.Users.Add(systemUser);
- _context.SaveChanges();
- // Assign Admin role to admin user
- _context.UserRoles.Add(new UserRole(DefaultTenantId, systemUser.Id, systemRole.Id));
- _context.SaveChanges();
- }
- }
- }
- }
|