public async Task EnsureRequiredRoles(ISiteSettings site) { bool exists = await _userQueries.RoleExists(site.Id, "Administrators", CancellationToken); if (!exists) { var adminRole = InitialData.BuildAdminRole(); adminRole.SiteId = site.Id; await _userCommands.CreateRole(adminRole, CancellationToken.None); } exists = await _userQueries.RoleExists(site.Id, "Role Administrators", CancellationToken); if (!exists) { var roleAdminRole = InitialData.BuildRoleAdminRole(); roleAdminRole.SiteId = site.Id; await _userCommands.CreateRole(roleAdminRole, CancellationToken.None); } exists = await _userQueries.RoleExists(site.Id, "Content Administrators", CancellationToken); if (!exists) { var contentAdminRole = InitialData.BuildContentAdminsRole(); contentAdminRole.SiteId = site.Id; await _userCommands.CreateRole(contentAdminRole, CancellationToken.None); } exists = await _userQueries.RoleExists(site.Id, "Authenticated Users", CancellationToken); if (!exists) { var authenticatedUserRole = InitialData.BuildAuthenticatedRole(); authenticatedUserRole.SiteId = site.Id; await _userCommands.CreateRole(authenticatedUserRole, CancellationToken.None); } }
private static async Task EnsureData( CoreDbContext db ) { int rowsAffected = 0; int count = await db.Countries.CountAsync <GeoCountry>(); if (count == 0) { foreach (GeoCountry c in InitialData.BuildCountryList()) { db.Countries.Add(c); } rowsAffected = await db.SaveChangesAsync(); } count = await db.States.CountAsync <GeoZone>(); if (count == 0) { foreach (GeoZone c in InitialData.BuildStateList()) { db.States.Add(c); } rowsAffected = await db.SaveChangesAsync(); } //count = await db.Languages.CountAsync<Language>(); //if (count == 0) //{ // foreach (Language c in InitialData.BuildLanguageList()) // { // db.Languages.Add(c); // } // rowsAffected = await db.SaveChangesAsync(); //} count = await db.Currencies.CountAsync <Currency>(); if (count == 0) { foreach (Currency c in InitialData.BuildCurrencyList()) { db.Currencies.Add(c); } rowsAffected = await db.SaveChangesAsync(); } count = await db.Sites.CountAsync <SiteSettings>(); SiteSettings newSite = null; if (count == 0) { // create first site newSite = InitialData.BuildInitialSite(); db.Sites.Add(newSite); rowsAffected = await db.SaveChangesAsync(); } // ensure roles count = await db.Roles.CountAsync <SiteRole>(); if (count == 0) { var site = newSite; if (site == null) { site = await db.Sites.SingleOrDefaultAsync <SiteSettings>( s => s.Id != Guid.Empty && s.IsServerAdminSite == true); } if (site != null) { var adminRole = InitialData.BuildAdminRole(); adminRole.SiteId = site.Id; db.Roles.Add(adminRole); var roleAdminRole = InitialData.BuildRoleAdminRole(); roleAdminRole.SiteId = site.Id; db.Roles.Add(roleAdminRole); var contentAdminRole = InitialData.BuildContentAdminsRole(); contentAdminRole.SiteId = site.Id; db.Roles.Add(contentAdminRole); var authenticatedUserRole = InitialData.BuildAuthenticatedRole(); authenticatedUserRole.SiteId = site.Id; db.Roles.Add(authenticatedUserRole); rowsAffected = await db.SaveChangesAsync(); } } // ensure admin user count = await db.Users.CountAsync <SiteUser>(); if (count == 0) { SiteSettings site = await db.Sites.SingleOrDefaultAsync <SiteSettings>( s => s.Id != Guid.Empty && s.IsServerAdminSite == true); if (site != null) { var role = await db.Roles.SingleOrDefaultAsync( x => x.SiteId == site.Id && x.NormalizedRoleName == "Administrators".ToUpperInvariant()); if (role != null) { var adminUser = InitialData.BuildInitialAdmin(); adminUser.SiteId = site.Id; db.Users.Add(adminUser); rowsAffected = await db.SaveChangesAsync(); if (rowsAffected > 0 && adminUser.Id != Guid.Empty) { var ur = new UserRole(); ur.RoleId = role.Id; ur.UserId = adminUser.Id; db.UserRoles.Add(ur); await db.SaveChangesAsync(); role = await db.Roles.SingleOrDefaultAsync( x => x.SiteId == site.Id && x.NormalizedRoleName == "Authenticated Users".ToUpperInvariant()); if (role != null) { ur = new UserRole(); ur.RoleId = role.Id; ur.UserId = adminUser.Id; db.UserRoles.Add(ur); await db.SaveChangesAsync(); } } } } } }
private static async Task EnsureData( ISiteQueries siteQueries, ISiteCommands siteCommands, IUserQueries userQueries, IUserCommands userCommands, IGeoQueries geoQueries, IGeoCommands geoCommands, IBasicQueries <SiteRole> roleQueries, IBasicQueries <SiteUser> userBasic ) { int count = await geoQueries.GetCountryCount(); if (count == 0) { foreach (GeoCountry c in InitialData.BuildCountryList()) { await geoCommands.Add(c); } foreach (GeoZone c in InitialData.BuildStateList()) { await geoCommands.Add(c); } } count = await siteQueries.GetCount(); SiteSettings newSite = null; Guid siteId = Guid.Empty; if (count == 0) { // create first site newSite = InitialData.BuildInitialSite(); await siteCommands.Create(newSite); siteId = newSite.Id; } else if (count == 1) { var allSites = await siteQueries.GetList().ConfigureAwait(false); var site = allSites[0]; if (site != null) { siteId = site.Id; } } else { return; } // ensure roles //var projectId = await projectResolver.ResolveProjectId(); var projectId = siteId.ToString();; count = await roleQueries.GetCountAsync(projectId); if (count == 0) { var adminRole = InitialData.BuildAdminRole(); adminRole.SiteId = siteId; await userCommands.CreateRole(adminRole); var roleAdminRole = InitialData.BuildRoleAdminRole(); roleAdminRole.SiteId = siteId; await userCommands.CreateRole(roleAdminRole); var contentAdminRole = InitialData.BuildContentAdminsRole(); contentAdminRole.SiteId = siteId; await userCommands.CreateRole(contentAdminRole); var authenticatedUserRole = InitialData.BuildAuthenticatedRole(); authenticatedUserRole.SiteId = siteId; await userCommands.CreateRole(authenticatedUserRole); } // ensure admin user count = await userBasic.GetCountAsync(projectId); if (count == 0) { var role = await userQueries.FetchRole(newSite.Id, "Administrators"); if (role != null) { var adminUser = InitialData.BuildInitialAdmin(); adminUser.SiteId = siteId; adminUser.CanAutoLockout = false; await userCommands.Create(adminUser); await userCommands.AddUserToRole(siteId, role.Id, adminUser.Id); role = await userQueries.FetchRole(siteId, "Authenticated Users"); if (role != null) { await userCommands.AddUserToRole(siteId, role.Id, adminUser.Id); } } } }
private static async Task EnsureData( ISiteQueries siteQueries, ISiteCommands siteCommands, IUserQueries userQueries, IUserCommands userCommands, IGeoQueries geoQueries, IGeoCommands geoCommands, IBasicQueries <SiteRole> roleQueries, IBasicQueries <SiteUser> userBasic, IProjectResolver projectResolver ) { int count = await geoQueries.GetCountryCount(); if (count == 0) { foreach (GeoCountry c in InitialData.BuildCountryList()) { await geoCommands.Add(c); } foreach (GeoZone c in InitialData.BuildStateList()) { await geoCommands.Add(c); } } //count = await geoQueries.GetLanguageCount(); //if (count == 0) //{ // foreach (Language c in InitialData.BuildLanguageList()) // { // await geoCommands.Add(c); // } //} var all = await geoQueries.GetAllCurrencies(); count = all.Count; if (count == 0) { foreach (Currency c in InitialData.BuildCurrencyList()) { await geoCommands.Add(c); } } count = await siteQueries.GetCount(); SiteSettings newSite = null; if (count == 0) { // create first site newSite = InitialData.BuildInitialSite(); await siteCommands.Create(newSite); } // ensure roles var projectId = await projectResolver.ResolveProjectId(); count = await roleQueries.GetCountAsync(projectId); if (count == 0) { var adminRole = InitialData.BuildAdminRole(); adminRole.SiteId = newSite.Id; await userCommands.CreateRole(adminRole); var roleAdminRole = InitialData.BuildRoleAdminRole(); roleAdminRole.SiteId = newSite.Id; await userCommands.CreateRole(roleAdminRole); var contentAdminRole = InitialData.BuildContentAdminsRole(); contentAdminRole.SiteId = newSite.Id; await userCommands.CreateRole(contentAdminRole); var authenticatedUserRole = InitialData.BuildAuthenticatedRole(); authenticatedUserRole.SiteId = newSite.Id; await userCommands.CreateRole(authenticatedUserRole); } // ensure admin user count = await userBasic.GetCountAsync(projectId); if (count == 0) { var role = await userQueries.FetchRole(newSite.Id, "Administrators"); if (role != null) { var adminUser = InitialData.BuildInitialAdmin(); adminUser.SiteId = newSite.Id; await userCommands.Create(adminUser); await userCommands.AddUserToRole(role.Id, adminUser.Id); role = await userQueries.FetchRole(newSite.Id, "Authenticated Users"); if (role != null) { await userCommands.AddUserToRole(role.Id, adminUser.Id); } } } }
private static async Task EnsureData( ICoreDbContext db, SiteConfigOptions config ) { int rowsAffected = 0; int count = await db.Countries.CountAsync <GeoCountry>(); if (count == 0) { foreach (GeoCountry c in InitialData.BuildCountryList()) { db.Countries.Add(c); } rowsAffected = await db.SaveChangesAsync(); } count = await db.States.CountAsync <GeoZone>(); if (count == 0) { foreach (GeoZone c in InitialData.BuildStateList()) { db.States.Add(c); } rowsAffected = await db.SaveChangesAsync(); } count = await db.Sites.CountAsync <SiteSettings>(); SiteSettings newSite = null; if (count == 0) { // create first site newSite = InitialData.BuildInitialSite(); newSite.Theme = config.FirstSiteTheme; db.Sites.Add(newSite); rowsAffected = await db.SaveChangesAsync(); } // ensure roles count = await db.Roles.CountAsync <SiteRole>(); if (count == 0) { var site = newSite; if (site == null) { site = await db.Sites.SingleOrDefaultAsync <SiteSettings>( s => s.Id != Guid.Empty && s.IsServerAdminSite == true); } if (site != null) { var adminRole = InitialData.BuildAdminRole(); adminRole.SiteId = site.Id; db.Roles.Add(adminRole); var roleAdminRole = InitialData.BuildRoleAdminRole(); roleAdminRole.SiteId = site.Id; db.Roles.Add(roleAdminRole); var contentAdminRole = InitialData.BuildContentAdminsRole(); contentAdminRole.SiteId = site.Id; db.Roles.Add(contentAdminRole); var authenticatedUserRole = InitialData.BuildAuthenticatedRole(); authenticatedUserRole.SiteId = site.Id; db.Roles.Add(authenticatedUserRole); rowsAffected = await db.SaveChangesAsync(); } } // ensure admin user count = await db.Users.CountAsync <SiteUser>(); if (count == 0) { SiteSettings site = await db.Sites.FirstOrDefaultAsync <SiteSettings>( s => s.Id != Guid.Empty && s.IsServerAdminSite == true); if (site != null) { var role = await db.Roles.FirstOrDefaultAsync( x => x.SiteId == site.Id && x.NormalizedRoleName == "ADMINISTRATORS"); if (role != null) { var adminUser = InitialData.BuildInitialAdmin(); adminUser.SiteId = site.Id; adminUser.Id = Guid.NewGuid(); adminUser.CanAutoLockout = false; db.Users.Add(adminUser); rowsAffected = await db.SaveChangesAsync(); if (rowsAffected > 0 && adminUser.Id != Guid.Empty) { var ur = new UserRole(); ur.RoleId = role.Id; ur.UserId = adminUser.Id; db.UserRoles.Add(ur); await db.SaveChangesAsync(); role = await db.Roles.SingleOrDefaultAsync( x => x.SiteId == site.Id && x.NormalizedRoleName == "Authenticated Users".ToUpperInvariant()); if (role != null) { ur = new UserRole(); ur.RoleId = role.Id; ur.UserId = adminUser.Id; db.UserRoles.Add(ur); await db.SaveChangesAsync(); } } } } } }