Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        public RolesController()
        {
            var dbContext    = new BackboneContext();
            var appUserStore = new AppUserStore(dbContext);
            var appRoleStore = new AppRoleStore(dbContext);

            _userManager = new AppUserManager(appUserStore, appRoleStore);
        }
Ejemplo n.º 7
0
        public static void Apply(BackboneContext context)
        {
            // Create roles
            CreateRoles(context);

            // Create admin user
            CreateAdminUser(context);

            // Create sample user
            CreateSampleUser(context);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
 public AppRoleStore(BackboneContext context) : base(context)
 {
 }
Ejemplo n.º 12
0
        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();
        }
Ejemplo n.º 13
0
 public AppUserStore(BackboneContext context) : base(context)
 {
     AutoSaveChanges = false;
 }
Ejemplo n.º 14
0
 public void InitializeContext()
 {
     Context = new BackboneContext();
 }