| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408 |
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using ContractService.Authorization;
- using ContractService.Authorization.Roles;
- using ContractService.Authorization.Users;
- using ContractService.Configuration;
- using ContractService.EF;
- using ContractService.MultiTenancy;
- using IwbZero.Authorization.Base.Permissions;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.MultiTenancy;
- namespace ContractService.SeedData
- {
- public class RoleAndUserCreator
- {
- private readonly ContractServiceDbContext _context;
- private int DefaultTenantId { get; set; }
- public RoleAndUserCreator(ContractServiceDbContext context)
- {
- _context = context;
- DefaultTenantId = 1;
- }
- public void Create()
- {
- _context.Database.ExecuteSqlCommand("TRUNCATE TABLE [dbo].[Sys_Permissions]");
- CreateHostUsers();
- CreateDefaultTenant();
- CreateRolesAndUsers();
- CreateDefaultRoles();
- }
- 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
- readonly List<string> sys= new List<string>()
- {
- PermissionNames.Pages,
- PermissionNames.PagesCaseContractMg ,
- PermissionNames.PagesCaseContractMgCaseMg,
- PermissionNames.PagesCaseContractMgCaseMgQuery,
- PermissionNames.PagesCaseContractMgContractMg,
- PermissionNames.PagesCaseContractMgContractMgQuery,
- PermissionNames.PagesCaseContractMgContractMgSetLawFirm,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMg,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgQuery,
- PermissionNames.PagesLegalLawFirmMg,
- PermissionNames.PagesLegalLawFirmMgLawFirmMg,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgQuery,
- PermissionNames.PagesLegalLawFirmMgLawyerMg,
- PermissionNames.PagesLegalLawFirmMgLawyerMgQuery,
- PermissionNames.PagesClientMg,
- PermissionNames.PagesClientMgCompanyMg,
- PermissionNames.PagesClientMgCompanyMgQuery,
- PermissionNames.PagesClientMgStaffMg,
- PermissionNames.PagesClientMgStaffMgQuery,
- PermissionNames.PagesBasicMg,
- PermissionNames.PagesBasicMgServiceTypeMg,
- PermissionNames.PagesBasicMgServiceTypeMgQuery,
- PermissionNames.PagesBasicMgServiceTypeMgCreate,
- PermissionNames.PagesBasicMgServiceTypeMgUpdate,
- PermissionNames.PagesBasicMgServiceTypeMgDelete,
- PermissionNames.PagesSystemMg,
- PermissionNames.PagesSystemMgUserMg,
- PermissionNames.PagesSystemMgUserMgQuery,
- PermissionNames.PagesSystemMgUserMgCreate,
- PermissionNames.PagesSystemMgUserMgUpdate,
- PermissionNames.PagesSystemMgUserMgAuth,
- PermissionNames.PagesSystemMgUserMgResetLock,
- PermissionNames.PagesSystemMgHelpMg,
- PermissionNames.PagesSystemMgHelpMgQuery,
- PermissionNames.PagesSystemMgHelpMgCreate,
- PermissionNames.PagesSystemMgHelpMgUpdate,
- PermissionNames.PagesSystemMgHelpMgDelete,
- PermissionNames.PagesSystemMgLogMg,
- PermissionNames.PagesSystemMgLogMgQuery,
- PermissionNames.PagesUserHelpInfo,
- PermissionNames.PagesUserSysSetting,
- PermissionNames.PagesUserSysSettingLoginImage,
- PermissionNames.PagesUserSysSettingHomeImage,
- PermissionNames.PagesUserSysSettingRefreshCache,
- PermissionNames.PagesUserSysSettingRefreshLang,
- };
- readonly List<string> company= new List<string>()
- {
- PermissionNames.Pages,
- PermissionNames.PagesCaseContractMg ,
- PermissionNames.PagesCaseContractMgCaseMg,
- PermissionNames.PagesCaseContractMgCaseMgQuery,
- PermissionNames.PagesCaseContractMgCaseMgCreate,
- PermissionNames.PagesCaseContractMgCaseMgUpdate,
- PermissionNames.PagesCaseContractMgCaseMgDelete,
- PermissionNames.PagesCaseContractMgCaseMgSetStaff,
- PermissionNames.PagesCaseContractMgCaseMgChangeState,
- PermissionNames.PagesCaseContractMgCaseMgNote,
- PermissionNames.PagesCaseContractMgCaseMgRestart,
- PermissionNames.PagesCaseContractMgContractMg,
- PermissionNames.PagesCaseContractMgContractMgQuery,
- PermissionNames.PagesCaseContractMgContractMgCreate,
- PermissionNames.PagesCaseContractMgContractMgUpdate,
- PermissionNames.PagesCaseContractMgContractMgDelete,
- PermissionNames.PagesCaseContractMgContractMgSetStaff,
- PermissionNames.PagesCaseContractMgContractMgChangeState,
- PermissionNames.PagesCaseContractMgContractMgNote,
- PermissionNames.PagesCaseContractMgContractMgSupplement,
- PermissionNames.PagesCaseContractMgContractMgRestart,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMg,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgQuery,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgCreate,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgUpdate,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgDelete,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgChangeState,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgChangeEvidence,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgSetOrg,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgRestart,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgNote,
- PermissionNames.PagesClientMg,
- PermissionNames.PagesClientMgCompanyMg,
- PermissionNames.PagesClientMgCompanyMgQuery,
- PermissionNames.PagesClientMgCompanyMgCreate,
- PermissionNames.PagesClientMgCompanyMgUpdate,
- PermissionNames.PagesClientMgCompanyMgDelete,
- PermissionNames.PagesClientMgCompanyMgMasterStaff,
- PermissionNames.PagesClientMgStaffMg,
- PermissionNames.PagesClientMgStaffMgQuery,
- PermissionNames.PagesClientMgStaffMgCreate,
- PermissionNames.PagesClientMgStaffMgUpdate,
- PermissionNames.PagesClientMgStaffMgDelete,
- PermissionNames.PagesClientMgStaffMgBind,
- PermissionNames.PagesClientMgStaffMgUnBind,
- PermissionNames.PagesClientMgOrgMg,
- PermissionNames.PagesClientMgOrgMgQuery,
- PermissionNames.PagesClientMgOrgMgCreate,
- PermissionNames.PagesClientMgOrgMgUpdate,
- PermissionNames.PagesClientMgOrgMgDelete,
- PermissionNames.PagesClientMgOrgMgOrgAuth,
- PermissionNames.PagesSystemMg,
- //PermissionNames.PagesSystemMgUserMg,
- //PermissionNames.PagesSystemMgUserMgQuery,
- //PermissionNames.PagesSystemMgUserMgCreate,
- //PermissionNames.PagesSystemMgUserMgUpdate,
- //PermissionNames.PagesSystemMgUserMgAuth,
- //PermissionNames.PagesSystemMgUserMgResetLock,
- PermissionNames.PagesUserHelpInfo,
- PermissionNames.PagesUserSysSetting,
- PermissionNames.PagesUserSysSettingLoginImage,
- PermissionNames.PagesUserSysSettingHomeImage,
- PermissionNames.PagesUserSysSettingRefreshCache,
- PermissionNames.PagesUserSysSettingRefreshLang,
- };
- readonly List<string> lawFirm= new List<string>()
- {
- PermissionNames.Pages,
- PermissionNames.PagesCaseContractMg ,
- PermissionNames.PagesCaseContractMgCaseMg,
- PermissionNames.PagesCaseContractMgCaseMgQuery,
- PermissionNames.PagesCaseContractMgContractMg,
- PermissionNames.PagesCaseContractMgContractMgQuery,
- PermissionNames.PagesCaseContractMgContractMgNote,
- PermissionNames.PagesCaseContractMgContractMgLawNote,
- PermissionNames.PagesCaseContractMgContractMgSetLawyer,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMg,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgQuery,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgCreate,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgUpdate,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgDelete,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgChangeState,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgRestart,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgLawNote,
- PermissionNames.PagesCaseContractMgContractMgKeyPointMgNote,
- PermissionNames.PagesLegalLawFirmMg,
- PermissionNames.PagesLegalLawFirmMgLawFirmMg,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgQuery,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgCreate,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgUpdate,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgDelete,
- PermissionNames.PagesLegalLawFirmMgLawFirmMgMasterLawyer,
- PermissionNames.PagesLegalLawFirmMgLawyerMg,
- PermissionNames.PagesLegalLawFirmMgLawyerMgQuery,
- PermissionNames.PagesLegalLawFirmMgLawyerMgCreate,
- PermissionNames.PagesLegalLawFirmMgLawyerMgUpdate,
- PermissionNames.PagesLegalLawFirmMgLawyerMgDelete,
- PermissionNames.PagesLegalLawFirmMgLawyerMgBind,
- PermissionNames.PagesLegalLawFirmMgLawyerMgUnBind,
- PermissionNames.PagesLegalLawFirmMgLawOrgMg,
- PermissionNames.PagesLegalLawFirmMgLawOrgMgQuery,
- PermissionNames.PagesLegalLawFirmMgLawOrgMgCreate,
- PermissionNames.PagesLegalLawFirmMgLawOrgMgUpdate,
- PermissionNames.PagesLegalLawFirmMgLawOrgMgDelete,
- PermissionNames.PagesLegalLawFirmMgLawOrgMgOrgAuth,
- PermissionNames.PagesSystemMg,
- //PermissionNames.PagesSystemMgUserMg,
- //PermissionNames.PagesSystemMgUserMgQuery,
- //PermissionNames.PagesSystemMgUserMgCreate,
- //PermissionNames.PagesSystemMgUserMgUpdate,
- //PermissionNames.PagesSystemMgUserMgAuth,
- //PermissionNames.PagesSystemMgUserMgResetLock,
- PermissionNames.PagesUserHelpInfo,
- PermissionNames.PagesUserSysSetting,
- PermissionNames.PagesUserSysSettingLoginImage,
- PermissionNames.PagesUserSysSettingHomeImage,
- PermissionNames.PagesUserSysSettingRefreshCache,
- PermissionNames.PagesUserSysSettingRefreshLang,
- };
- private void CreateDefaultRoles()
- {
- CreateRole(ConfigurationManager.AppSettings["MasterRole.Default.System"], "系统管理员默认角色",
- UsersAndRolesTypeDefinition.Advanced, AccountTypeDefinition.System, sys);
- CreateRole(ConfigurationManager.AppSettings["MasterRole.Default.Company"], "企业负责人默认角色",
- UsersAndRolesTypeDefinition.Advanced, AccountTypeDefinition.Client, company);
- CreateRole(ConfigurationManager.AppSettings["MasterRole.Default.LawFirm"], "律所负责人默认角色",
- UsersAndRolesTypeDefinition.Advanced, AccountTypeDefinition.Lawyer, lawFirm);
- }
- private void CreateRole(string name,string displayName,int roleType,int accountType,List<string> permList)
- {
-
- var role = _context.Roles.FirstOrDefault(r => r.TenantId == DefaultTenantId && r.Name == name);
- if (role == null)
- {
- role = _context.Roles
- .Add(new Role(DefaultTenantId, name, displayName)
- {
- IsStatic = true,
- RoleType = roleType,
- AccountType = accountType,
- Description = displayName
- });
- _context.SaveChanges();
- }
- if (permList != null)
- {
- foreach (var perm in permList)
- {
- _context.Permissions.Add(new PermissionSetting
- {
- Name = perm,
- TenantId = DefaultTenantId,
- IsGranted = true,
- Master = 1,
- MasterValue = role.Id + ""
- });
- }
- }
- }
- }
- }
|