| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- using System.Linq;
- using WePlatform.Authorization.Roles;
- using WePlatform.Authorization.Users;
- using WePlatform.Configuration;
- using WePlatform.EF;
- using WePlatform.MultiTenancy;
- using IwbZero.Authorization.Base.Permissions;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.MultiTenancy;
- namespace WePlatform.SeedData
- {
- public class RoleAndUserCreator
- {
- private readonly WePlatformDbContext _context;
- private int DefaultTenantId { get; set; }
- public RoleAndUserCreator(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();
- }
- }
- #region 添加权限
- /// <summary>
- /// 添加用户权限
- /// </summary>
- /// <param name="userId"></param>
- /// <param name="tenantId"></param>
- private void AddUserPermission(long userId, int? tenantId = 0)
- {
- tenantId = tenantId == 0 ? DefaultTenantId : tenantId;
- var funs = _context.SysFunctions.Where(a => a.IsDeleted == false).OrderBy(a => a.CreationTime);
- foreach (var fun in funs)
- {
- _context.Permissions.Add(new PermissionSetting()
- {
- Name = fun.PermissionName,
- TenantId = tenantId,
- IsGranted = true,
- Master = 2,
- MasterValue = userId + ""
- });
- }
- _context.SaveChanges();
- }
- /// <summary>
- /// 添加角色权限
- /// </summary>
- /// <param name="roleId"></param>
- /// <param name="tenantId"></param>
- private void AddRolePermission(int roleId, int? tenantId = 0)
- {
- var funs = _context.SysFunctions.Where(a => a.IsDeleted == false).OrderBy(a => a.CreationTime);
- tenantId = tenantId == 0 ? DefaultTenantId : tenantId;
- foreach (var fun in funs)
- {
- _context.Permissions.Add(new PermissionSetting
- {
- Name = fun.PermissionName,
- TenantId = tenantId,
- IsGranted = true,
- Master = 1,
- MasterValue = roleId + ""
- });
- }
- _context.SaveChanges();
- }
- #endregion
- }
- }
|