Esempio n. 1
0
        public static async Task SeedDb(IConfiguration config, IHostEnvironment env, IServiceProvider serviceProvider)
        {
            if (env.IsDevelopment())
            {
                using (var scope = serviceProvider.CreateScope())
                {
                    var userManager = (UserManager <PuckUser>)scope.ServiceProvider.GetService(typeof(UserManager <PuckUser>));
                    var roleManager = (RoleManager <PuckRole>)scope.ServiceProvider.GetService(typeof(RoleManager <PuckRole>));
                    var repo        = scope.ServiceProvider.GetService <I_Puck_Repository>();
                    if (repo.GetPuckUser().Count() == 0)
                    {
                        var roles = new List <string> {
                            PuckRoles.Cache, PuckRoles.Create, PuckRoles.Delete, PuckRoles.Domain, PuckRoles.Edit, PuckRoles.Localisation
                            , PuckRoles.Move, PuckRoles.Notify, PuckRoles.Publish, PuckRoles.Puck, PuckRoles.Revert, PuckRoles.Settings, PuckRoles.Sort, PuckRoles.Tasks
                            , PuckRoles.Unpublish, PuckRoles.Users, PuckRoles.Republish, PuckRoles.Copy, PuckRoles.ChangeType, PuckRoles.TimedPublish, PuckRoles.Audit
                        };

                        foreach (var roleName in roles)
                        {
                            if (!await roleManager.RoleExistsAsync(roleName))
                            {
                                var role = new PuckRole();
                                role.Name = roleName;
                                await roleManager.CreateAsync(role);
                            }
                        }
                        var adminEmail    = config.GetValue <string>("InitialUserEmail");
                        var adminPassword = config.GetValue <string>("InitialUserPassword");
                        if (!string.IsNullOrEmpty(adminEmail))
                        {
                            var admin = await userManager.FindByEmailAsync(adminEmail);

                            if (admin == null)
                            {
                                admin = new PuckUser {
                                    Email = adminEmail, UserName = adminEmail
                                };
                                var result = await userManager.CreateAsync(admin, adminPassword);
                            }
                            //userManager.AddPassword(admin.Id, adminPassword);
                            foreach (var roleName in roles)
                            {
                                if (!await userManager.IsInRoleAsync(admin, roleName))
                                {
                                    await userManager.AddToRoleAsync(admin, roleName);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public static async Task SeedDb(IConfiguration config, IHostEnvironment env, IServiceProvider serviceProvider)
        {
            if (env.IsDevelopment() || env.IsStaging())
            {
                using (var scope = serviceProvider.CreateScope())
                {
                    var userManager = (UserManager <PuckUser>)scope.ServiceProvider.GetService(typeof(UserManager <PuckUser>));
                    var roleManager = (RoleManager <PuckRole>)scope.ServiceProvider.GetService(typeof(RoleManager <PuckRole>));
                    var repo        = scope.ServiceProvider.GetService <I_Puck_Repository>();

                    var roles = new List <string> {
                        PuckRoles.Cache, PuckRoles.Create, PuckRoles.Delete, PuckRoles.Domain, PuckRoles.Edit, PuckRoles.Localisation
                        , PuckRoles.Move, PuckRoles.Notify, PuckRoles.Publish, PuckRoles.Puck, PuckRoles.Revert, PuckRoles.Settings, PuckRoles.Sort, PuckRoles.Tasks
                        , PuckRoles.Unpublish, PuckRoles.Users, PuckRoles.Republish, PuckRoles.Copy, PuckRoles.ChangeType, PuckRoles.TimedPublish, PuckRoles.Audit, PuckRoles.Sync, PuckRoles.WorkflowDelete
                    };
                    foreach (var roleName in roles)
                    {
                        if (!await roleManager.RoleExistsAsync(roleName))
                        {
                            var role = new PuckRole();
                            role.Name = roleName;
                            await roleManager.CreateAsync(role);
                        }
                    }
                    if (repo.GetPuckUser().Count() == 0)
                    {
                        var adminEmail    = config.GetValue <string>("InitialUserEmail");
                        var adminPassword = config.GetValue <string>("InitialUserPassword");
                        if (!string.IsNullOrEmpty(adminEmail) && !string.IsNullOrEmpty(adminPassword))
                        {
                            var admin = await userManager.FindByEmailAsync(adminEmail);

                            if (admin == null)
                            {
                                admin = new PuckUser {
                                    Email = adminEmail, UserName = adminEmail, PuckUserGroups = "Administrator,"
                                };
                                var result = await userManager.CreateAsync(admin, adminPassword);

                                if (!result.Succeeded)
                                {
                                    string message = "Initial user could not be created, make sure you've set the InitialUserEmail and InitialUserPassword appSettings correctly - " + string.Join(" ", result.Errors.Select(x => x.Description));
                                    throw new Exception(message);
                                }
                            }
                            //userManager.AddPassword(admin.Id, adminPassword);
                            foreach (var roleName in roles)
                            {
                                if (!await userManager.IsInRoleAsync(admin, roleName))
                                {
                                    await userManager.AddToRoleAsync(admin, roleName);
                                }
                            }
                            PuckCache.JustSeeded = true;
                        }
                        else
                        {
                            throw new Exception("Initial user could not be created, make sure you've set the InitialUserEmail and InitialUserPassword appSettings");
                        }
                    }
                }
            }
        }