public async Task InitializeAsync(Setup item) { string defaultPostPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data/Setup/defaultPost.dxt"); var defaultPostTask = this.GetDefaultPostContent(defaultPostPath, item.SiteDomain.Host); var membershipTask = this.CreateMembershipAndRole(item); BlogConfigurationDto configuration = new BlogConfigurationDto(item.BlogName, item.SiteDomain); configuration.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("UTC"); this.configurationDataService.CreateSetupConfiguration(configuration); this.logger.Debug("Created blog configuration."); //Creating default category this.categoryService.SaveOrUpdate(new CategoryDto { Name = "Various", IsDefault = true }); this.logger.Debug("Created default category."); PostDto defaultPost = new PostDto(); defaultPost.Title = "Welcome to Dexter!"; defaultPost.Tags = new[] { "Dexter" }; defaultPost.Categories = new[] { "Various" }; defaultPost.Status = ItemStatus.Published; defaultPost.PublishAt = DateTimeOffset.Now.AsMinutes(); defaultPost.Author = item.AdminUsername; defaultPost.AllowComments = true; await Task.WhenAll(defaultPostTask, membershipTask); defaultPost.Content = defaultPostTask.Result; this.postDataService.SaveOrUpdate(defaultPost); this.logger.Debug("Created default post."); }
public Task CreateMembershipAndRole(Setup item) { //NOTE:The membership use a different session, so it could be runned in an async thread. Unluckily this request is not under transaction return Task.Run(() => { var user = Membership.GetUser(item.AdminUsername); if (user == null) { // Creating user Membership.CreateUser(item.AdminUsername, item.AdminPassword, item.Email.Address); this.logger.Debug("Created admin user."); } var roles = Roles.GetAllRoles(); if (!roles.Contains(Constants.AdministratorRole)) { // Creating administrator role Roles.CreateRole(Constants.AdministratorRole); this.logger.Debug("Created administrator role."); } if (!roles.Contains(Constants.Editor)) { // Creating administrator role Roles.CreateRole(Constants.Editor); this.logger.Debug("Created editor role."); } if (!roles.Contains(Constants.Moderator)) { // Creating administrator role Roles.CreateRole(Constants.Moderator); this.logger.Debug("Created moderator role."); } // Adding user to role Roles.AddUserToRole(item.AdminUsername, Constants.AdministratorRole); Roles.AddUserToRole(item.AdminUsername, Constants.Editor); Roles.AddUserToRole(item.AdminUsername, Constants.Moderator); this.logger.Debug("Assigned user to administration role."); }); }