private static void CreateRoles(BackboneContext context) { // Manager & store var roleStore = new RoleStore <Role, int, UserRole>(context); var roleManager = new RoleManager <Role, int>(roleStore); // Guest role var guestRole = new Role { Name = "Guest" }; roleManager.Create(guestRole); // Regular role var regularRole = new Role { Name = "Regular" }; roleManager.Create(regularRole); // Admin role var adminRole = new Role { Name = "Administrator" }; roleManager.Create(adminRole); // Save context.SaveChanges(); }
private static void CreateSampleUser(BackboneContext context) { // Managers & stores & repositories var userStore = new AppUserStore(context); var userManager = new UserManager <User, int>(userStore); // Sample user var sampleUserName = "******"; var sampleEmail = "*****@*****.**"; var sampleUser = new User(sampleUserName, sampleEmail) { EmailConfirmed = true, EmailConfirmationSentOn = DateTime.UtcNow, HasPassword = true }; var sampleUserPassword = DateTime.Now.ToString("yyyyMMdd"); userManager.Create(sampleUser, sampleUserPassword); context.SaveChanges(); // Add to regular role userManager.AddToRole(sampleUser.Id, "Regular"); context.SaveChanges(); // Login as (required in order to save the rest of the items) Security.LoginAs(sampleUser.Id, "Regular"); // First save context.SaveChanges(); }
private static void CreateWealthEconomy(BackboneContext context, User wealthAdmin) { var projectStore = context.Set <Project>(); // Sample projects var billionDollarQuestion = CreateBillionDollarQuestion(wealthAdmin); var priorityIndexSample = CreatePriorityIndexSample(wealthAdmin); var knowledgeIndexSample = CreateKnowledgeIndexSample(wealthAdmin); var knowledgeIndexSoftwareLicenseSample = CreateKnowledgeIndexSoftwareLicenseSample(wealthAdmin); var allInOneSample = CreateAllInOneSample(wealthAdmin); // Set Id fields explicitly, since strangely EF doesn't save them in the order that they've been added to ProjectSet. // And they're referred with these Ids on front-end samples billionDollarQuestion.Id = 1; priorityIndexSample.Id = 2; knowledgeIndexSample.Id = 3; knowledgeIndexSoftwareLicenseSample.Id = 4; allInOneSample.Id = 5; // Insert projectStore.Add(billionDollarQuestion); projectStore.Add(priorityIndexSample); projectStore.Add(knowledgeIndexSample); projectStore.Add(knowledgeIndexSoftwareLicenseSample); projectStore.Add(allInOneSample); // First save context.SaveChanges(); }
public Task <CorsPolicy> GetCorsPolicyAsync(IOwinRequest request) { var policy = new CorsPolicy { AllowAnyHeader = true, AllowAnyMethod = true, SupportsCredentials = true, AllowAnyOrigin = false }; #if DEBUG policy.AllowAnyOrigin = true; #endif // Allowed origins: Default client origin and projects' Origin field var allowedOrigin = new List <string> { Framework.AppSettings.DefaultClientOrigin }; using (var db = new BackboneContext()) { allowedOrigin.AddRange(db.Project .Select(project => project.Origin) .Distinct() .ToArray()); } foreach (var allowedDomain in allowedOrigin.Distinct()) { policy.Origins.Add(allowedDomain); } return(Task.FromResult(policy)); }
public Task <CorsPolicy> GetCorsPolicyAsync(IOwinRequest request) { var policy = new CorsPolicy { AllowAnyHeader = true, AllowAnyMethod = true, SupportsCredentials = true }; // Allowed origins policy.AllowAnyOrigin = false; // Default client origin policy.Origins.Add(Framework.AppSettings.DefaultClientOrigin); using (var db = new BackboneContext()) { var allowedOrigins = db.Project .Select(project => project.Origin) .Distinct() .ToArray(); foreach (var allowedDomain in allowedOrigins) { policy.Origins.Add(allowedDomain); } } return(Task.FromResult(policy)); }
public RolesController() { var dbContext = new BackboneContext(); var appUserStore = new AppUserStore(dbContext); var appRoleStore = new AppRoleStore(dbContext); _userManager = new AppUserManager(appUserStore, appRoleStore); }
public static void Apply(BackboneContext context) { // Create roles CreateRoles(context); // Create admin user CreateAdminUser(context); // Create sample user CreateSampleUser(context); }
public static void Apply(BackboneContext context) { // Create roles CreateRoles(context); // Create initial users CreateUser(context, "admin", "*****@*****.**", "Administrator"); CreateUser(context, "sample", "*****@*****.**", "Regular"); // Create related projects // Create Wealth Economy Admin user var wealthAdmin = CreateUser(context, "wealthAdmin", "*****@*****.**", "Regular"); // Login as (required in order to save the rest of the items) Security.LoginAs(wealthAdmin.Id, "Regular"); // New CreateWealthEconomy(context, wealthAdmin); }
private static void CreateAdminUser(BackboneContext context) { // Manager & store var userStore = new AppUserStore(context); var userManager = new UserManager <User, int>(userStore); // Admin user var adminUserName = "******"; var adminEmail = "*****@*****.**"; var adminUser = new User(adminUserName, adminEmail) { EmailConfirmed = true, EmailConfirmationSentOn = DateTime.UtcNow, HasPassword = true }; var adminUserPassword = DateTime.Now.ToString("yyyyMMdd"); userManager.Create(adminUser, adminUserPassword); context.SaveChanges(); // Add to "admin" role userManager.AddToRole(adminUser.Id, "Administrator"); context.SaveChanges(); }
private static User CreateUser(BackboneContext context, string userName, string email, string role) { // Managers & stores & repositories var userStore = new AppUserStore(context); var userManager = new UserManager <User, int>(userStore); // Create user var user = new User(userName, email) { EmailConfirmed = true, EmailConfirmationSentOn = DateTime.UtcNow, HasPassword = true }; var password = DateTime.Now.ToString("yyyyMMdd"); HandleResult(userManager.Create(user, password)); context.SaveChanges(); // Add to regular role HandleResult(userManager.AddToRole(user.Id, role)); context.SaveChanges(); return(user); }
public AppRoleStore(BackboneContext context) : base(context) { }
static void Main(string[] args) { using (var sourceContext = new BackboneContext("SourceContext")) { using (var targetContext = new BackboneContext("TargetContext")) { // Init Security.LoginAs(-1, "Administrator"); sourceContext.Configuration.AutoDetectChangesEnabled = false; targetContext.Database.CreateIfNotExists(); targetContext.Configuration.AutoDetectChangesEnabled = false; // Roles if (!targetContext.Roles.Any()) { var sourceRoles = sourceContext.Roles.AsEnumerable(); foreach (var sourceRole in sourceRoles) { var targetRole = new Role { Name = sourceRole.Name, CreatedOn = sourceRole.CreatedOn, ModifiedOn = sourceRole.ModifiedOn, DeletedOn = sourceRole.DeletedOn, }; targetContext.Roles.Add(targetRole); } } // Users var sourceUsers = sourceContext.Users .Include(x => x.Logins) .Include(x => x.Roles) .AsEnumerable(); foreach (var sourceUser in sourceUsers) { Console.WriteLine($"User: {sourceUser.Id}"); var targetUser = new User { UserName = sourceUser.UserName, Email = sourceUser.Email, EmailConfirmed = sourceUser.EmailConfirmed, EmailConfirmationSentOn = sourceUser.EmailConfirmationSentOn, HasPassword = sourceUser.HasPassword, PasswordHash = sourceUser.PasswordHash, SecurityStamp = sourceUser.SecurityStamp, SingleUseToken = sourceUser.SingleUseToken, FirstName = sourceUser.FirstName, MiddleName = sourceUser.MiddleName, LastName = sourceUser.LastName, Notes = sourceUser.Notes, CreatedOn = sourceUser.CreatedOn, ModifiedOn = sourceUser.ModifiedOn, DeletedOn = sourceUser.DeletedOn, }; targetContext.Users.Add(targetUser); // User roles var sourceUserRoles = sourceUser.Roles; foreach (var sourceUserRole in sourceUserRoles) { // Console.WriteLine($"User role {sourceUserRole.UserId} - {sourceUserRole.RoleId}"); var targetUserRole = new UserRole { User = targetUser, RoleId = sourceUserRole.RoleId, CreatedOn = sourceUserRole.CreatedOn, ModifiedOn = sourceUserRole.ModifiedOn, DeletedOn = sourceUserRole.DeletedOn, }; targetUser.Roles.Add(targetUserRole); } // User logins var sourceUserLogins = sourceUser.Logins; foreach (var sourceUserLogin in sourceUserLogins) { // Console.WriteLine("user login " + userLogin.LoginProvider); var targetUserLogin = new UserLogin { User = targetUser, LoginProvider = sourceUserLogin.LoginProvider, ProviderKey = sourceUserLogin.ProviderKey, CreatedOn = sourceUserLogin.CreatedOn, ModifiedOn = sourceUserLogin.ModifiedOn, DeletedOn = sourceUserLogin.DeletedOn, }; targetUser.Logins.Add(targetUserLogin); } } // Projects var projects = sourceContext.Project .Include(x => x.User) .Include(x => x.ElementSet) .ToList(); foreach (var sourceProject in projects) { Console.WriteLine($"Project: {sourceProject.Name}"); var targetProject = new Project { User = targetContext.Users.Local.Single(x => x.UserName == sourceProject.User.UserName), Name = sourceProject.Name, Origin = sourceProject.Origin, Description = sourceProject.Description, RatingCount = sourceProject.RatingCount, CreatedOn = sourceProject.CreatedOn, ModifiedOn = sourceProject.ModifiedOn, DeletedOn = sourceProject.DeletedOn, }; targetContext.Project.Add(targetProject); // Elements var elements = sourceProject.ElementSet; foreach (var sourceElement in elements) { // Console.WriteLine($"Element {sourceElement.Name}"); var targetElement = new Element { Project = targetProject, Name = sourceElement.Name, CreatedOn = sourceElement.CreatedOn, ModifiedOn = sourceElement.ModifiedOn, DeletedOn = sourceElement.DeletedOn, }; targetContext.Element.Add(targetElement); // Fields var sourceFields = sourceContext.ElementField .Include(x => x.UserElementFieldSet) .Where(x => x.ElementId == sourceElement.Id) .AsEnumerable(); foreach (var sourceField in sourceFields) { var targetField = new ElementField { Element = targetElement, Name = sourceField.Name, DataType = sourceField.DataType, UseFixedValue = sourceField.UseFixedValue, RatingEnabled = sourceField.RatingEnabled, SortOrder = sourceField.SortOrder, RatingTotal = sourceField.RatingTotal, RatingCount = sourceField.RatingCount, CreatedOn = sourceField.CreatedOn, ModifiedOn = sourceField.ModifiedOn, DeletedOn = sourceField.DeletedOn, }; // Selected element if (sourceField.SelectedElement != null) { targetField.SelectedElement = targetContext.Element .Local .Single(x => x.Project == targetProject && x.Name == sourceField.SelectedElement.Name); } targetContext.ElementField.Add(targetField); // User fields var userFieldSet = sourceField.UserElementFieldSet; foreach (var sourceUserField in userFieldSet) { var targetUserElementField = new UserElementField { User = targetContext.Users.Local.Single(x => x.UserName == sourceUserField.User.UserName), ElementField = targetField, Rating = sourceUserField.Rating, CreatedOn = sourceUserField.CreatedOn, ModifiedOn = sourceUserField.ModifiedOn, DeletedOn = sourceUserField.DeletedOn, }; targetContext.UserElementField.Add(targetUserElementField); } } // Items var sourceItems = sourceContext.ElementItem .Include(x => x.ElementCellSet.Select(e => e.UserElementCellSet)) .Where(x => x.ElementId == sourceElement.Id) .AsEnumerable(); foreach (var sourceItem in sourceItems) { var targetItem = new ElementItem { Element = targetElement, Name = sourceItem.Name, CreatedOn = sourceItem.CreatedOn, ModifiedOn = sourceItem.ModifiedOn, DeletedOn = sourceItem.DeletedOn, }; targetContext.ElementItem.Add(targetItem); // Cells var sourceCells = sourceItem.ElementCellSet; foreach (var sourceCell in sourceCells) { var targetCell = new ElementCell { ElementField = targetContext.ElementField.Local.Single(x => x.Element == targetItem.Element && x.Name == sourceCell.ElementField.Name), ElementItem = targetItem, StringValue = sourceCell.StringValue, DecimalValueTotal = sourceCell.DecimalValueTotal, DecimalValueCount = sourceCell.DecimalValueCount, CreatedOn = sourceCell.CreatedOn, ModifiedOn = sourceCell.ModifiedOn, DeletedOn = sourceCell.DeletedOn, }; // Selected item if (sourceCell.SelectedElementItem != null) { targetCell.SelectedElementItem = targetContext.ElementItem .Local .Single(x => x.Element.Project == targetProject && x.Name == sourceCell.SelectedElementItem.Name); } targetContext.ElementCell.Add(targetCell); // User cells var sourceUserCells = sourceCell.UserElementCellSet; foreach (var sourceUserCell in sourceUserCells) { var targetUserCell = new UserElementCell { User = targetContext.Users.Local.Single(x => x.UserName == sourceUserCell.User.UserName), ElementCell = targetCell, DecimalValue = sourceUserCell.DecimalValue, CreatedOn = sourceUserCell.CreatedOn, ModifiedOn = sourceUserCell.ModifiedOn, DeletedOn = sourceUserCell.DeletedOn, }; targetContext.UserElementCell.Add(targetUserCell); } } } } } // Save targetContext.SaveChanges(); } } Console.WriteLine(""); Console.WriteLine(" - Finito! - "); Console.ReadKey(); }
public AppUserStore(BackboneContext context) : base(context) { AutoSaveChanges = false; }
public void InitializeContext() { Context = new BackboneContext(); }