コード例 #1
0
        public JsonResult <dynamic> Install(Core.Models.User adminUser, Core.Models.Portal portal, List <string> packages)
        {
            return(API.Execute <dynamic>(r =>
            {
                if (Portal.CurrentPortal == null)
                {
                    portal.Name = "Default";
                    portal.Default = true;

                    var packagesToInstall = Videre.Core.Services.Update.GetPackages().Where(p => packages.Contains(p.Name));

                    //need to install account providers before we start creating accounts!
                    foreach (var package in packagesToInstall.Where(p => p.Type == "Account Provider"))
                    {
                        Update.InstallPackage(package.Name, null);
                    }

                    var portalId = Core.Services.Update.InstallPortal(adminUser, portal);

                    foreach (var package in packagesToInstall.Where(p => p.Type != "Account Provider"))
                    {
                        Update.InstallPackage(package.Name, portalId);
                    }
                }
                else
                {
                    r.AddError("Portal already exists.");   //todo: localize
                }
            }));
        }
コード例 #2
0
ファイル: Update.cs プロジェクト: crazyants/videre
        //todo: allowing passing in of objects, but currently using very little of them
        public static string InstallPortal(Core.Models.User adminUser, Core.Models.Portal portal)
        {
            //todo: hardcoding default for now...
            //if (Core.Services.Update.Register(new Videre.Core.Models.Portal() { Name = portal.Name, ThemeName = portal.ThemeName }) > 0)
            if (Core.Services.Update.Register(portal) > 0)
            {
                Core.Services.Repository.SaveChanges();
            }

            var portalId = Core.Services.Portal.GetPortal(portal.Name).Id; //Core.Services.Portal.CurrentPortalId;
            var updates  = 0;

            //portal Init
            if (!Core.Services.Account.ReadOnly)    //todo:  don't allow this?!?!  or does UI disable this?
            {
                updates += Core.Services.Update.Register(new List <Core.Models.Role>()
                {
                    new Core.Models.Role()
                    {
                        Name = "admin", PortalId = portalId, Description = "Administrative Priviledges"
                    }
                });

                updates += Core.Services.Update.Register(new List <Core.Models.User>()
                {
                    new Core.Models.User()
                    {
                        PortalId = portalId, Name = adminUser.Name, Email = adminUser.Email, Password = adminUser.Password, Roles = new List <string>()
                        {
                            Core.Services.Update.GetAdminRoleId(portalId)
                        }
                    }
                });
            }
            if (updates > 0)
            {
                CoreServices.Repository.SaveChanges();
            }

            return(portalId);
        }