private void CreateEditions()
        {
            var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName);

            if (defaultEdition == null)
            {
                defaultEdition = new Edition {
                    Name = EditionManager.DefaultEditionName, DisplayName = EditionManager.DefaultEditionName
                };
                _context.Editions.Add(defaultEdition);
                _context.SaveChanges();

                /* Add desired features to the standard edition, if wanted... */
            }
        }
 public Task <int> CommitAsync()
 {
     try
     {
         //此处保存不能异步SaveChangesAsync。因为Commit是同步的,这样就会导致save没有执行就执行了commit方法。
         var returnValue = dbcontext.SaveChanges();
         if (dbTransaction != null)
         {
             dbTransaction.Commit();
         }
         return(Task.FromResult(0));
     }
     catch (Exception ex)
     {
         if (dbTransaction != null)
         {
             this.dbTransaction.Rollback();
         }
         throw;
     }
     finally
     {
         this.Dispose();
     }
 }
        public void Create()
        {
            new DefaultEditionCreator(_context).Create();
            new DefaultLanguagesCreator(_context).Create();
            new HostRoleAndUserCreator(_context).Create();
            new DefaultSettingsCreator(_context).Create();

            _context.SaveChanges();
        }
        private void AddSettingIfNotExists(string name, string value, int?tenantId = null)
        {
            if (_context.Settings.IgnoreQueryFilters().Any(s => s.Name == name && s.TenantId == tenantId && s.UserId == null))
            {
                return;
            }

            _context.Settings.Add(new Setting(tenantId, null, name, value));
            _context.SaveChanges();
        }
Esempio n. 5
0
        private void AddLanguageIfNotExists(ApplicationLanguage language)
        {
            if (_context.Languages.IgnoreQueryFilters().Any(l => l.TenantId == language.TenantId && l.Name == language.Name))
            {
                return;
            }

            _context.Languages.Add(language);
            _context.SaveChanges();
        }
        private void CreateDefaultTenant()
        {
            // Default tenant

            var defaultTenant = _context.Tenants.IgnoreQueryFilters().FirstOrDefault(t => t.TenancyName == AbpTenantBase.DefaultTenantName);

            if (defaultTenant == null)
            {
                defaultTenant = new Tenant(AbpTenantBase.DefaultTenantName, AbpTenantBase.DefaultTenantName);

                var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName);
                if (defaultEdition != null)
                {
                    defaultTenant.EditionId = defaultEdition.Id;
                }

                _context.Tenants.Add(defaultTenant);
                _context.SaveChanges();
            }
        }
        private void CreateHostRoleAndUsers()
        {
            // Admin role for host

            var adminRoleForHost = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == null && r.Name == StaticRoleNames.Host.Admin);

            if (adminRoleForHost == null)
            {
                adminRoleForHost = _context.Roles.Add(new Role(null, StaticRoleNames.Host.Admin, StaticRoleNames.Host.Admin)
                {
                    IsStatic = true, IsDefault = true
                }).Entity;
                _context.SaveChanges();
            }

            // Grant all permissions to admin role for host

            var grantedPermissions = _context.Permissions.IgnoreQueryFilters()
                                     .OfType <RolePermissionSetting>()
                                     .Where(p => p.TenantId == null && p.RoleId == adminRoleForHost.Id)
                                     .Select(p => p.Name)
                                     .ToList();

            var permissions = PermissionFinder
                              .GetAllPermissions(new EvolutionAuthorizationProvider())
                              .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host) &&
                                     !grantedPermissions.Contains(p.Name))
                              .ToList();

            if (permissions.Any())
            {
                _context.Permissions.AddRange(
                    permissions.Select(permission => new RolePermissionSetting
                {
                    TenantId  = null,
                    Name      = permission.Name,
                    IsGranted = true,
                    RoleId    = adminRoleForHost.Id
                })
                    );
                _context.SaveChanges();
            }

            // Admin user for host

            var adminUserForHost = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == null && u.UserName == AbpUserBase.AdminUserName);

            if (adminUserForHost == null)
            {
                var user = new User
                {
                    TenantId         = null,
                    UserName         = AbpUserBase.AdminUserName,
                    Name             = "admin",
                    Surname          = "admin",
                    EmailAddress     = "*****@*****.**",
                    IsEmailConfirmed = true,
                    IsActive         = true
                };

                user.Password = new PasswordHasher <User>(new OptionsWrapper <PasswordHasherOptions>(new PasswordHasherOptions())).HashPassword(user, "123qwe");
                user.SetNormalizedNames();

                adminUserForHost = _context.Users.Add(user).Entity;
                _context.SaveChanges();

                // Assign Admin role to admin user
                _context.UserRoles.Add(new UserRole(null, adminUserForHost.Id, adminRoleForHost.Id));
                _context.SaveChanges();

                _context.SaveChanges();
            }
        }
Esempio n. 8
0
        private void CreateRolesAndUsers()
        {
            // Admin role

            var adminRole = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == _tenantId && r.Name == StaticRoleNames.Tenants.Admin);

            if (adminRole == null)
            {
                adminRole = _context.Roles.Add(new Role(_tenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin)
                {
                    IsStatic = true
                }).Entity;
                _context.SaveChanges();
            }

            // Grant all permissions to admin role

            var grantedPermissions = _context.Permissions.IgnoreQueryFilters()
                                     .OfType <RolePermissionSetting>()
                                     .Where(p => p.TenantId == _tenantId && p.RoleId == adminRole.Id)
                                     .Select(p => p.Name)
                                     .ToList();

            var permissions = PermissionFinder
                              .GetAllPermissions(new EvolutionAuthorizationProvider())
                              .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant) &&
                                     !grantedPermissions.Contains(p.Name))
                              .ToList();

            if (permissions.Any())
            {
                _context.Permissions.AddRange(
                    permissions.Select(permission => new RolePermissionSetting
                {
                    TenantId  = _tenantId,
                    Name      = permission.Name,
                    IsGranted = true,
                    RoleId    = adminRole.Id
                })
                    );
                _context.SaveChanges();
            }

            // Admin user

            var adminUser = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == _tenantId && u.UserName == AbpUserBase.AdminUserName);

            if (adminUser == null)
            {
                adminUser                  = User.CreateTenantAdminUser(_tenantId, "*****@*****.**");
                adminUser.Password         = new PasswordHasher <User>(new OptionsWrapper <PasswordHasherOptions>(new PasswordHasherOptions())).HashPassword(adminUser, "123qwe");
                adminUser.IsEmailConfirmed = true;
                adminUser.IsActive         = true;

                _context.Users.Add(adminUser);
                _context.SaveChanges();

                // Assign Admin role to admin user
                _context.UserRoles.Add(new UserRole(_tenantId, adminUser.Id, adminRole.Id));
                _context.SaveChanges();
            }
        }
        public static async Task InitializeBasicDb(IServiceProvider applicationServices, string webRootPath)
        {
            WebRootPath = webRootPath;
            using (EvolutionDbContext dbContext = applicationServices.GetService <EvolutionDbContext>())
            {
                var sqlServerDatabase = dbContext.Database;
                try
                {
                    int r = sqlServerDatabase.ExecuteSqlCommand("select count(*) from Sys_Area");
                    //如果正常,则表示数据库有表,不需要创建
                    return;
                }
                catch (Exception ex)
                {
                }

                sqlServerDatabase.EnsureDeleted();
                if (sqlServerDatabase.EnsureCreated())
                {
                    //sqlServerDatabase.Migrate();
                    ProcessFile("Sys_Area.csv", colums => {
                        AreaEntity entity     = new AreaEntity();
                        entity.Id             = colums[0];
                        entity.ParentId       = colums[1];
                        entity.Layers         = int.Parse(colums[2]);
                        entity.EnCode         = colums[3];
                        entity.FullName       = colums[4];
                        entity.SimpleSpelling = colums[5];
                        entity.SortCode       = int.Parse(colums[6]);
                        entity.EnabledMark    = bool.Parse(colums[8]);
                        entity.CreatorTime    = DateTime.MinValue;
                        dbContext.Areas.Add(entity);
                    });
                    ProcessFile("Sys_DbBackup.csv", colums => {
                        DbBackupEntity entity = new DbBackupEntity();
                        entity.Id             = colums[0];
                        entity.BackupType     = colums[1];
                        entity.DbName         = colums[2];
                        entity.FileName       = colums[3];
                        entity.FileSize       = colums[4];
                        entity.FilePath       = colums[5];
                        entity.BackupTime     = DateTime.Parse(colums[6]);
                        entity.EnabledMark    = bool.Parse(colums[9]);
                        entity.CreatorTime    = DateTime.MinValue;
                        dbContext.DbBackups.Add(entity);
                    });
                    ProcessFile("Sys_FilterIP.csv", colums => {
                        FilterIPEntity entity = new FilterIPEntity();
                        entity.Id             = colums[0];
                        entity.Type           = bool.Parse(colums[1]);
                        entity.StartIP        = colums[2];
                        entity.EndIP          = colums[3];
                        entity.EnabledMark    = bool.Parse(colums[6]);
                        entity.Description    = colums[7];
                        entity.CreatorTime    = DateTime.Parse(colums[8]);
                        dbContext.FilterIPs.Add(entity);
                    });
                    ProcessFile("Sys_Items.csv", colums => {
                        ItemsEntity entity = new ItemsEntity();
                        entity.Id          = colums[0];
                        entity.ParentId    = colums[1];
                        entity.EnCode      = colums[2];
                        entity.FullName    = colums[3];
                        entity.IsTree      = GetDefaultBool(colums[4], false);
                        entity.Layers      = int.Parse(colums[5]);
                        entity.SortCode    = int.Parse(colums[6]);
                        entity.DeleteMark  = GetDefaultBool(colums[7], false);
                        entity.EnabledMark = GetDefaultBool(colums[8], true);
                        entity.CreatorTime = DateTime.MinValue;
                        dbContext.Items.Add(entity);
                    });
                    ProcessFile("Sys_ItemsDetail.csv", colums => {
                        ItemsDetailEntity entity = new ItemsDetailEntity();
                        entity.Id          = colums[0];
                        entity.ItemId      = colums[1];
                        entity.ParentId    = colums[2];
                        entity.ItemCode    = colums[3];
                        entity.ItemName    = colums[4];
                        entity.IsDefault   = GetDefaultBool(colums[6], false);
                        entity.SortCode    = int.Parse(colums[8]);
                        entity.DeleteMark  = GetDefaultBool(colums[9], false);
                        entity.EnabledMark = GetDefaultBool(colums[10], true);
                        dbContext.ItemsDetails.Add(entity);
                    });
                    ProcessFile("Sys_Log.csv", colums => {
                        LogEntity entity     = new LogEntity();
                        entity.Id            = colums[0];
                        entity.Date          = DateTime.Parse(colums[1]);
                        entity.Account       = colums[2];
                        entity.NickName      = colums[3];
                        entity.Type          = colums[4];
                        entity.IPAddress     = colums[5];
                        entity.IPAddressName = colums[6];
                        entity.ModuleName    = colums[8];
                        entity.Result        = bool.Parse(colums[9]);
                        entity.Description   = colums[10];
                        entity.CreatorTime   = DateTime.MinValue;
                        entity.CreatorUserId = colums[12];
                        dbContext.Logs.Add(entity);
                    });
                    ProcessFile("Sys_Menu.csv", colums => {
                        MenuEntity entity       = new MenuEntity();
                        entity.Id               = colums[0];
                        entity.ParentId         = colums[1];
                        entity.Layers           = int.Parse(colums[2]);
                        entity.FullName         = colums[4];
                        entity.Icon             = colums[5];
                        entity.UrlAddress       = colums[6];
                        entity.Target           = colums[7];
                        entity.IsMenu           = bool.Parse(colums[8]);
                        entity.IsExpand         = bool.Parse(colums[9]);
                        entity.IsPublic         = bool.Parse(colums[10]);
                        entity.AllowEdit        = bool.Parse(colums[11]);
                        entity.AllowDelete      = bool.Parse(colums[12]);
                        entity.SortCode         = int.Parse(colums[13]);
                        entity.DeleteMark       = bool.Parse(colums[14]);
                        entity.EnabledMark      = bool.Parse(colums[15]);
                        entity.Description      = colums[16];
                        entity.CreatorTime      = DateTime.MinValue;
                        entity.LastModifyTime   = DateTime.MinValue;
                        entity.LastModifyUserId = colums[20];
                        dbContext.Menus.Add(entity);
                    });
                    ProcessFile("Sys_MenuButton.csv", colums => {
                        MenuButtonEntity entity = new MenuButtonEntity();
                        entity.Id       = colums[0];
                        entity.MenuId   = colums[1];
                        entity.ParentId = colums[2];
                        if (!string.IsNullOrEmpty(colums[3]))
                        {
                            entity.Layers = int.Parse(colums[3]);
                        }
                        entity.EnCode   = colums[4];
                        entity.FullName = colums[5];
                        if (!string.IsNullOrEmpty(colums[7]))
                        {
                            entity.Location = int.Parse(colums[7]);
                        }
                        entity.JsEvent    = colums[8];
                        entity.UrlAddress = colums[9];
                        if (!string.IsNullOrEmpty(colums[10]))
                        {
                            entity.Split = bool.Parse(colums[10]);
                        }
                        if (!string.IsNullOrEmpty(colums[11]))
                        {
                            entity.IsPublic = bool.Parse(colums[11]);
                        }
                        if (!string.IsNullOrEmpty(colums[12]))
                        {
                            entity.AllowEdit = bool.Parse(colums[12]);
                        }
                        if (!string.IsNullOrEmpty(colums[13]))
                        {
                            entity.AllowDelete = bool.Parse(colums[13]);
                        }
                        if (!string.IsNullOrEmpty(colums[14]))
                        {
                            entity.SortCode = int.Parse(colums[14]);
                        }
                        if (!string.IsNullOrEmpty(colums[15]))
                        {
                            entity.DeleteMark = bool.Parse(colums[15]);
                        }
                        if (!string.IsNullOrEmpty(colums[16]))
                        {
                            entity.EnabledMark = bool.Parse(colums[16]);
                        }
                        entity.CreatorTime      = DateTime.MinValue;
                        entity.LastModifyTime   = DateTime.MinValue;
                        entity.LastModifyUserId = colums[20];
                        dbContext.ModuleButtons.Add(entity);
                    });
                    ProcessFile("Sys_Organize.csv", colums => {
                        OrganizeEntity entity = new OrganizeEntity();
                        entity.Id             = colums[0];
                        entity.ParentId       = colums[1];
                        entity.Layers         = int.Parse(colums[2]);
                        entity.EnCode         = colums[3];
                        entity.FullName       = colums[4];
                        entity.ShortName      = colums[5];
                        entity.CategoryId     = colums[6];
                        entity.ManagerId      = colums[7];
                        entity.Address        = colums[14];
                        entity.SortCode       = int.Parse(colums[17]);
                        entity.DeleteMark     = bool.Parse(colums[18]);
                        entity.EnabledMark    = bool.Parse(colums[19]);
                        entity.CreatorTime    = DateTime.MinValue;
                        dbContext.Organizes.Add(entity);
                    });
                    ProcessFile("Sys_Role.csv", colums => {
                        RoleEntity entity  = new RoleEntity();
                        entity.Id          = colums[0];
                        entity.OrganizeId  = colums[1];
                        entity.Category    = int.Parse(colums[2]);
                        entity.EnCode      = colums[3];
                        entity.FullName    = colums[4];
                        entity.Type        = colums[5];
                        entity.AllowEdit   = bool.Parse(colums[6]);
                        entity.AllowDelete = bool.Parse(colums[7]);
                        entity.SortCode    = int.Parse(colums[8]);
                        entity.DeleteMark  = bool.Parse(colums[9]);
                        entity.EnabledMark = bool.Parse(colums[10]);

                        entity.CreatorTime      = DateTime.MinValue;
                        entity.LastModifyTime   = DateTime.MinValue;
                        entity.LastModifyUserId = colums[15];
                        dbContext.Roles.Add(entity);
                    });
                    ProcessFile("Sys_RoleAuthorize.csv", colums => {
                        RoleAuthorizeEntity entity = new RoleAuthorizeEntity();
                        entity.Id         = colums[0];
                        entity.ItemType   = int.Parse(colums[1]);
                        entity.ItemId     = colums[2];
                        entity.ObjectType = int.Parse(colums[3]);
                        entity.ObjectId   = colums[4];
                        //entity.SortCode = int.Parse(colums[5]);
                        entity.CreatorTime   = DateTime.MinValue;
                        entity.CreatorUserId = colums[7];
                        dbContext.RoleAuthorize.Add(entity);
                    });
                    ProcessFile("Sys_User.csv", colums => {
                        UserEntity entity       = new UserEntity();
                        entity.Id               = colums[0];
                        entity.Account          = colums[1];
                        entity.RealName         = colums[2];
                        entity.NickName         = colums[3];
                        entity.Gender           = bool.Parse(colums[5]);
                        entity.MobilePhone      = colums[7];
                        entity.OrganizeId       = colums[13];
                        entity.DepartmentId     = colums[14];
                        entity.RoleId           = colums[15];
                        entity.DutyId           = colums[16];
                        entity.IsAdministrator  = bool.Parse(colums[17]);
                        entity.DeleteMark       = bool.Parse(colums[19]);
                        entity.EnabledMark      = bool.Parse(colums[20]);
                        entity.Description      = colums[21];
                        entity.CreatorTime      = DateTime.MinValue;
                        entity.LastModifyTime   = DateTime.MinValue;
                        entity.LastModifyUserId = colums[25];
                        dbContext.Users.Add(entity);
                    });
                    ProcessFile("Sys_UserLogOn.csv", colums => {
                        UserLogOnEntity entityt = new UserLogOnEntity();
                        entityt.Id            = colums[0];
                        entityt.UserId        = colums[1];
                        entityt.UserPassword  = colums[2];
                        entityt.UserSecretkey = colums[3];
                        if (!string.IsNullOrEmpty(colums[9]))
                        {
                            entityt.PreviousVisitTime = DateTime.Parse(colums[9]);
                        }
                        if (!string.IsNullOrEmpty(colums[10]))
                        {
                            entityt.LastVisitTime = DateTime.Parse(colums[10]);
                        }
                        if (!string.IsNullOrEmpty(colums[13]))
                        {
                            entityt.LogOnCount = int.Parse(colums[13]);
                        }
                        dbContext.UserLogOn.Add(entityt);
                    });
                    dbContext.SaveChanges();
                }
            }
        }