public HttpResponseMessage ListModulesOnPage(int portalId, int tabId)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericListItem> >();

            try
            {
                var mc = new DotNetNuke.Entities.Modules.ModuleController();
                apiResponse.CustomObject = new List <DTO.GenericListItem>();

                foreach (var tabModule in mc.GetTabModules(tabId))
                {
                    var newGenericItem = new DTO.GenericListItem();
                    newGenericItem.Name  = string.Format("{0} - {1} - {2}", string.IsNullOrWhiteSpace(tabModule.Value.ModuleTitle) ? "No Title" : tabModule.Value.ModuleTitle, tabModule.Value.PaneName, tabModule.Value.ModuleDefinition.FriendlyName);
                    newGenericItem.Value = tabModule.Value.ModuleID.ToString();
                    apiResponse.CustomObject.Add(newGenericItem);
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 2
0
        public HttpResponseMessage DeletePage(DTO.PageDetails page)
        {
            var apiResponse = new DTO.ApiResponse <DTO.SavePageResponse>();

            apiResponse.CustomObject = new DTO.SavePageResponse();

            try
            {
                var tabController = new DotNetNuke.Entities.Tabs.TabController();
                var tab           = tabController.GetTab(page.Id, PortalSettings.PortalId);
                if (DotNetNuke.Security.Permissions.TabPermissionController.CanDeletePage(tab) && !DotNetNuke.Entities.Tabs.TabController.IsSpecialTab(tab.TabID, PortalSettings))
                {
                    if (tab.TabID == PortalSettings.ActiveTab.TabID)
                    {
                        apiResponse.CustomObject.Redirect = true;
                        apiResponse.CustomObject.Url      = DotNetNuke.Common.Globals.NavigateURL(PortalSettings.HomeTabId);
                    }

                    apiResponse.Success = tabController.SoftDeleteTab(tab.TabID, PortalSettings);;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage InstallExtensionUrl(int PageId)
        {
            var apiResponse = new DTO.ApiResponse <string>();

            try
            {
                if (DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo().IsSuperUser)
                {
                    var objModules = new DotNetNuke.Entities.Modules.ModuleController();
                    var objModule  = objModules.GetModuleByDefinition(-1, "Extensions");
                    if (objModule != null)
                    {
                        apiResponse.Message = DotNetNuke.Common.Globals.NavigateURL(objModule.TabID, true, PortalSettings, "Install", new string[] { "rtab=" + PageId.ToString() });
                    }

                    apiResponse.Success = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage RecycleApplication()
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                if (DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo().IsSuperUser)
                {
                    var log = new DotNetNuke.Services.Log.EventLog.LogInfo {
                        BypassBuffering = true, LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString()
                    };
                    log.AddProperty("Message", "Application Recycle triggered from the Control Panel");
                    DotNetNuke.Services.Log.EventLog.LogController.Instance.AddLog(log);

                    Config.Touch();

                    apiResponse.Success = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage SetUserMode(string mode)
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                switch (mode.ToLower())
                {
                case "view":
                case "edit":
                case "layout":
                    var personalizationController = new DotNetNuke.Services.Personalization.PersonalizationController();
                    var personalization           = personalizationController.LoadProfile(UserInfo.UserID, PortalSettings.PortalId);
                    personalization.Profile["Usability:UserMode" + PortalSettings.PortalId] = mode.ToUpper();
                    personalization.IsModified = true;
                    personalizationController.SaveProfile(personalization);

                    apiResponse.Success = true;
                    break;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 6
0
        public HttpResponseMessage ManageUser(DTO.UserDetails user)
        {
            var apiResponse = new DTO.ApiResponse <string>();

            try
            {
                var userController = new DotNetNuke.Entities.Users.UserController();

                var dnnUser = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, user.Id);
                if (dnnUser != null)
                {
                    var objModules = new DotNetNuke.Entities.Modules.ModuleController();
                    var objModule  = objModules.GetModuleByDefinition(PortalSettings.PortalId, "User Accounts");
                    if (objModule != null)
                    {
                        apiResponse.CustomObject = DotNetNuke.Common.Globals.NavigateURL(objModule.TabID, false, PortalSettings, "Edit", new string[] { "UserId=" + dnnUser.UserID.ToString(), "mid=" + objModule.ModuleID.ToString() });
                        apiResponse.Success      = true;
                    }
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 7
0
        public HttpResponseMessage ListAllPages(int portalId)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericListItem> > ();

            try
            {
                apiResponse.CustomObject = new List <DTO.GenericListItem>();

                foreach (var tab in DotNetNuke.Entities.Tabs.TabController.GetPortalTabs(portalId, -1, true, true, false, false))
                {
                    var newGenericItem = new DTO.GenericListItem();
                    newGenericItem.Name  = tab.IndentedTabName;
                    newGenericItem.Value = tab.TabID.ToString();
                    apiResponse.CustomObject.Add(newGenericItem);
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 8
0
        public HttpResponseMessage UnlockUser(DTO.UserDetails user)
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                var userController = new DotNetNuke.Entities.Users.UserController();

                var dnnUser = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, user.Id);
                if (dnnUser != null)
                {
                    DotNetNuke.Entities.Users.UserController.UnLockUser(dnnUser);
                    DotNetNuke.Common.Utilities.DataCache.RemoveCache("MembershipUser_" + dnnUser.Username);
                    DotNetNuke.Common.Utilities.DataCache.ClearUserCache(PortalSettings.PortalId, dnnUser.Username);

                    apiResponse.Success = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 9
0
        public HttpResponseMessage ViewUser(DTO.UserDetails user)
        {
            var apiResponse = new DTO.ApiResponse <string>();

            try
            {
                var userController = new DotNetNuke.Entities.Users.UserController();

                var dnnUser = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, user.Id);
                if (dnnUser != null)
                {
                    apiResponse.CustomObject = DotNetNuke.Common.Globals.UserProfileURL(dnnUser.UserID);
                    apiResponse.Success      = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage LoadUserDetails(int Id)
        {
            var apiResponse = new DTO.ApiResponse <DTO.UserDetails>();

            try
            {
                var userInfo = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, Id);
                if (userInfo != null)
                {
                    apiResponse.CustomObject              = new DTO.UserDetails();
                    apiResponse.CustomObject.Id           = userInfo.UserID;
                    apiResponse.CustomObject.UserName     = userInfo.Username;
                    apiResponse.CustomObject.DisplayName  = userInfo.DisplayName;
                    apiResponse.CustomObject.FirstName    = userInfo.FirstName;
                    apiResponse.CustomObject.LastName     = userInfo.LastName;
                    apiResponse.CustomObject.EmailAddress = userInfo.Email;
                    apiResponse.CustomObject.LastLogin    = userInfo.LastModifiedOnDate;
                    apiResponse.CustomObject.Authorized   = userInfo.Membership.Approved;
                    apiResponse.CustomObject.Locked       = userInfo.Membership.LockedOut;

                    apiResponse.Success = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 11
0
        public HttpResponseMessage Impersonate(int Id)
        {
            var apiResponse        = new DTO.ApiResponse <bool>();
            var impersonationToken = string.Empty;

            try
            {
                var objPortalSecurity = new DotNetNuke.Security.PortalSecurity();

                impersonationToken = objPortalSecurity.Encrypt(DotNetNuke.Entities.Host.Host.GUID.ToString(), UserInfo.UserID + ":" + Id);

                if (Id == 0)
                {
                    objPortalSecurity.SignOut();
                }
                else
                {
                    var targetUserInfo = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, Id);

                    if (targetUserInfo != null)
                    {
                        DataCache.ClearUserCache(PortalSettings.PortalId, PortalSettings.UserInfo.Username);

                        objPortalSecurity.SignOut();

                        DotNetNuke.Entities.Users.UserController.UserLogin(PortalSettings.PortalId, targetUserInfo, PortalSettings.PortalName, HttpContext.Current.Request.UserHostAddress, false);
                    }
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            var actualResponse = Request.CreateResponse <DTO.ApiResponse <bool> >(HttpStatusCode.OK, apiResponse);

            var cookie = new HttpCookie(Common.impersonationCookieKey, impersonationToken);

            cookie.Expires = DateTime.Now.AddMinutes(Config.GetAuthCookieTimeout());
            cookie.Domain  = Request.RequestUri.Host;
            cookie.Path    = "/";

            HttpContext.Current.Response.SetCookie(cookie);

            return(actualResponse);
        }
Ejemplo n.º 12
0
        public HttpResponseMessage ListParentPages(int id)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericPageListItem> >();

            try
            {
                var portalId = PortalSettings.PortalId;
                var tab      = new DotNetNuke.Entities.Tabs.TabController().GetTab(id, portalId);
                if (tab != null)
                {
                    var listOfPages = DotNetNuke.Entities.Tabs.TabController.GetTabsByParent(tab.ParentId, portalId);
                    apiResponse.CustomObject = new List <DTO.GenericPageListItem>();

                    foreach (var page in listOfPages.Where(i => i.IsDeleted == false).OrderBy(i => i.TabOrder))
                    {
                        var newItem = new DTO.GenericPageListItem()
                        {
                            Value = page.TabID.ToString(), Name = page.TabName
                        };

                        if (string.IsNullOrWhiteSpace(page.IconFileLarge) == false)
                        {
                            newItem.Image = VirtualPathUtility.ToAbsolute(page.IconFileLarge);
                        }
                        else
                        {
                            newItem.Image = string.Empty;
                        }

                        newItem.HasChildren = page.HasChildren;

                        apiResponse.CustomObject.Add(newItem);
                    }

                    apiResponse.Success = true;

                    return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage Impersonate(int Id)
        {
            var    apiResponse = new DTO.ApiResponse <bool>();
            Cookie cookie      = null;

            try
            {
                cookie = Common.GenerateImpersonationCookie(UserInfo.UserID, Id);

                if (Id == 0)
                {
                    var objPortalSecurity = new DotNetNuke.Security.PortalSecurity();
                    objPortalSecurity.SignOut();
                }
                else
                {
                    var targetUserInfo = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, Id);

                    if (targetUserInfo != null)
                    {
                        DataCache.ClearUserCache(PortalSettings.PortalId, PortalSettings.UserInfo.Username);

                        var objPortalSecurity = new DotNetNuke.Security.PortalSecurity();
                        objPortalSecurity.SignOut();

                        DotNetNuke.Entities.Users.UserController.UserLogin(PortalSettings.PortalId, targetUserInfo, PortalSettings.PortalName, HttpContext.Current.Request.UserHostAddress, false);
                    }
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            var actualResponse = Request.CreateResponse(HttpStatusCode.OK, apiResponse);

            actualResponse.Headers.SetCookie(cookie);

            return(actualResponse);
        }
        public HttpResponseMessage ClearOutputCache(int PageId)
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                foreach (var item in DotNetNuke.Services.OutputCache.OutputCachingProvider.GetProviderList())
                {
                    if (PageId == -1)
                    {
                        DotNetNuke.Services.OutputCache.OutputCachingProvider.Instance(item.Key).PurgeCache(PortalSettings.PortalId);
                        DataCache.ClearPortalCache(PortalSettings.PortalId, true);
                        DataCache.ClearCache();
                        DotNetNuke.Web.Client.ClientResourceManagement.ClientResourceManager.ClearCache();
                    }
                    else if (PageId == -2)
                    {
                        foreach (DotNetNuke.Entities.Portals.PortalInfo portal in new DotNetNuke.Entities.Portals.PortalController().GetPortals())
                        {
                            DotNetNuke.Services.OutputCache.OutputCachingProvider.Instance(item.Key).PurgeCache(portal.PortalID);
                            DataCache.ClearPortalCache(portal.PortalID, true);
                        }

                        DataCache.ClearCache();
                        DotNetNuke.Web.Client.ClientResourceManagement.ClientResourceManager.ClearCache();
                    }
                    else if (PageId > 0)
                    {
                        DataCache.ClearCache();
                        DotNetNuke.Services.OutputCache.OutputCachingProvider.Instance(item.Key).Remove(PageId);
                    }
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 15
0
        public HttpResponseMessage SendPasswordReset(DTO.UserDetails user)
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                var userController = new DotNetNuke.Entities.Users.UserController();

                var dnnUser = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, user.Id);
                if (dnnUser != null)
                {
                    DotNetNuke.Entities.Users.UserController.ResetPasswordToken(dnnUser, DotNetNuke.Entities.Host.Host.AdminMembershipResetLinkValidity);

                    bool canSend = DotNetNuke.Services.Mail.Mail.SendMail(dnnUser, DotNetNuke.Services.Mail.MessageType.PasswordReminder, PortalSettings) == string.Empty;
                    var  message = String.Empty;

                    if (canSend)
                    {
                        apiResponse.Success = true;

                        // message = Localization.GetString("PasswordSent", LocalResourceFile);
                        // LogSuccess();
                    }
                    else
                    {
                        apiResponse.Success = false;
                        //message = Localization.GetString("OptionUnavailable", LocalResourceFile);
                        //moduleMessageType = ModuleMessage.ModuleMessageType.RedError;
                        //LogFailure(message);
                    }
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 16
0
        public HttpResponseMessage LoadConfigurationSettings()
        {
            var apiResponse = new DTO.ApiResponse <DTO.ConfigurationResponse>();

            try
            {
                apiResponse.CustomObject = new DTO.ConfigurationResponse();
                apiResponse.CustomObject.DetermineVisibility = DotNetNuke.Entities.Host.Host.AllowControlPanelToDetermineVisibility;
                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage Logoff()
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                var ps = new DotNetNuke.Security.PortalSecurity();
                ps.SignOut();

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage ListModuleCategories()
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericListItem> >();

            try
            {
                apiResponse.CustomObject = new List <DTO.GenericListItem>();

                var termController = DotNetNuke.Entities.Content.Common.Util.GetTermController();

                foreach (var term in termController.GetTermsByVocabulary("Module_Categories").OrderBy(t => t.Weight).Where(t => t.Name != "< None >"))
                {
                    apiResponse.CustomObject.Add(new DTO.GenericListItem()
                    {
                        Value = term.Name.ToLower().Replace(" ", string.Empty), Name = term.Name
                    });
                }
                apiResponse.CustomObject.Add(new DTO.GenericListItem()
                {
                    Value = "top10", Name = "Top 10"
                });
                apiResponse.CustomObject.Add(new DTO.GenericListItem()
                {
                    Value = "all", Name = "All"
                });

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 19
0
        public HttpResponseMessage LoadPageDetails(int id)
        {
            var apiResponse = new DTO.ApiResponse <DTO.PageDetails>();

            try
            {
                var tc = new DotNetNuke.Entities.Tabs.TabController();
                apiResponse.CustomObject = new DTO.PageDetails(tc.GetTab(id, PortalSettings.PortalId));
                apiResponse.CustomObject.LoadAllPages();
                apiResponse.CustomObject.LoadThemesAndContainers();

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 20
0
        public HttpResponseMessage UpdateConfiguration(DTO.ConfigurationResponse config)
        {
            var apiResponse = new DTO.ApiResponse <DTO.SavePageResponse>();

            apiResponse.CustomObject = new DTO.SavePageResponse();
            try
            {
                if (config.DetermineVisibility != DotNetNuke.Entities.Host.Host.AllowControlPanelToDetermineVisibility)
                {
                    DotNetNuke.Entities.Controllers.HostController.Instance.Update("AllowControlPanelToDetermineVisibility", config.DetermineVisibility.ToString().ToLower());
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage ListUsers(string filter)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericListItem> >();

            try
            {
                var listOfUsers = Data.SearchForUsers(PortalSettings.PortalId, filter, 1, 15);

                apiResponse.CustomObject = new List <DTO.GenericListItem>();

                apiResponse.CustomObject.Add(new DTO.GenericListItem()
                {
                    Value = "0", Name = "Anonymous User"
                });

                foreach (var user in listOfUsers)
                {
                    apiResponse.CustomObject.Add(new DTO.GenericListItem()
                    {
                        Value = user.UserId.ToString(), Name = user.DisplayName
                    });
                }
                apiResponse.Success = true;

                return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 22
0
        public HttpResponseMessage SavePage(DTO.PageDetails page)
        {
            var apiResponse = new DTO.ApiResponse <DTO.SavePageResponse>();

            apiResponse.CustomObject = new DTO.SavePageResponse();
            try
            {
                //Validation:
                //Tab name is required
                //Tab name is invalid
                string invalidType;
                if (!DotNetNuke.Entities.Tabs.TabController.IsValidTabName(page.Name, out invalidType))
                {
                    switch (invalidType)
                    {
                    case "EmptyTabName":
                        apiResponse.Message = "Page name is required.";
                        break;

                    case "InvalidTabName":
                        apiResponse.Message = "Page name is invalid.";
                        break;
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                }

                var tc     = new DotNetNuke.Entities.Tabs.TabController();
                var dnnTab = page.Id == -1 ? new DotNetNuke.Entities.Tabs.TabInfo() : tc.GetTab(page.Id, PortalSettings.PortalId);

                if (dnnTab != null)
                {
                    dnnTab.TabName = page.Name.Trim();

                    if (!string.IsNullOrWhiteSpace(page.Title))
                    {
                        dnnTab.Title = page.Title.Trim();
                    }

                    if (!string.IsNullOrWhiteSpace(page.Description))
                    {
                        dnnTab.Description = page.Description.Trim();
                    }

                    dnnTab.IsVisible   = page.Visible;
                    dnnTab.DisableLink = page.Disabled;
                    dnnTab.IsSecure    = page.Secure;

                    if (!string.IsNullOrWhiteSpace(page.Theme))
                    {
                        dnnTab.SkinSrc = page.Theme != "-1" ? page.Theme : string.Empty;
                    }

                    if (!string.IsNullOrWhiteSpace(page.Container))
                    {
                        dnnTab.ContainerSrc = page.Container != "-1" ? page.Container : string.Empty;
                    }

                    if (page.Id == -1)
                    {
                        var positionTabID   = int.Parse(page.Position);
                        var positionModeInt = int.Parse(page.PositionMode);

                        var parentTab = tc.GetTab(positionTabID, PortalSettings.PortalId);

                        if (page.PositionMode == ((int)DTO.PagePositionMode.ChildOf).ToString())
                        {
                            if (parentTab != null)
                            {
                                dnnTab.PortalID = parentTab.PortalID;
                                dnnTab.ParentId = parentTab.TabID;
                                dnnTab.Level    = parentTab.Level + 1;
                            }

                            page.Id = tc.AddTab(dnnTab);
                        }
                        else
                        {
                            dnnTab.PortalID = PortalSettings.PortalId;
                            switch (positionModeInt)
                            {
                            case (int)DTO.PagePositionMode.After:
                                dnnTab.PortalID = parentTab.PortalID;
                                dnnTab.ParentId = parentTab.ParentId;
                                dnnTab.Level    = parentTab.Level;
                                page.Id         = tc.AddTabAfter(dnnTab, int.Parse(page.Position));
                                break;

                            case (int)DTO.PagePositionMode.Before:
                                dnnTab.PortalID = parentTab.PortalID;
                                dnnTab.ParentId = parentTab.ParentId;
                                dnnTab.Level    = parentTab.Level;
                                page.Id         = tc.AddTabBefore(dnnTab, int.Parse(page.Position));
                                break;

                            default:
                                page.Id = tc.AddTab(dnnTab);
                                break;
                            }
                        }

                        apiResponse.CustomObject.Redirect = true;
                        apiResponse.CustomObject.Url      = DotNetNuke.Common.Globals.NavigateURL(page.Id);
                    }
                    else
                    {
                        if (page.PositionMode == ((int)DTO.PagePositionMode.ChildOf).ToString())
                        {
                            var positionTabID = int.Parse(page.Position);
                            if (positionTabID == -1)
                            {
                                dnnTab.PortalID = PortalSettings.PortalId;
                                dnnTab.ParentId = -1;
                                dnnTab.Level    = 0;
                            }
                            else
                            {
                                var parentTab = tc.GetTab(positionTabID, PortalSettings.PortalId);
                                if (parentTab != null)
                                {
                                    dnnTab.PortalID = parentTab.PortalID;
                                    dnnTab.ParentId = parentTab.TabID;
                                    dnnTab.Level    = parentTab.Level + 1;
                                }
                            }

                            apiResponse.CustomObject.Redirect = true;
                            apiResponse.CustomObject.Url      = DotNetNuke.Common.Globals.NavigateURL(page.Id);
                        }

                        if (!string.IsNullOrWhiteSpace(page.Position) && !string.IsNullOrWhiteSpace(page.PositionMode))
                        {
                            var positionTabID   = int.Parse(page.Position);
                            var positionModeInt = int.Parse(page.PositionMode);

                            var parentTab = tc.GetTab(positionTabID, PortalSettings.PortalId);

                            if (parentTab != null)
                            {
                                switch (positionModeInt)
                                {
                                case (int)DTO.PagePositionMode.After:
                                    dnnTab.PortalID = parentTab.PortalID;
                                    dnnTab.ParentId = parentTab.ParentId;
                                    dnnTab.Level    = parentTab.Level;
                                    tc.UpdateTab(dnnTab);
                                    tc.MoveTabAfter(dnnTab, parentTab.TabID);

                                    apiResponse.CustomObject.Redirect = true;
                                    apiResponse.CustomObject.Url      = DotNetNuke.Common.Globals.NavigateURL(page.Id);
                                    break;

                                case (int)DTO.PagePositionMode.Before:
                                    dnnTab.PortalID = parentTab.PortalID;
                                    dnnTab.ParentId = parentTab.ParentId;
                                    dnnTab.Level    = parentTab.Level;
                                    tc.UpdateTab(dnnTab);
                                    tc.MoveTabBefore(dnnTab, parentTab.TabID);

                                    apiResponse.CustomObject.Redirect = true;
                                    apiResponse.CustomObject.Url      = DotNetNuke.Common.Globals.NavigateURL(page.Id);
                                    break;

                                case (int)DTO.PagePositionMode.ChildOf:
                                    tc.UpdateTab(dnnTab);
                                    break;
                                }
                            }
                            else
                            {
                                tc.UpdateTab(dnnTab);
                            }
                        }
                        else
                        {
                            tc.UpdateTab(dnnTab);
                        }
                    }

                    apiResponse.Success = true;
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage ListPages(string parent)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericPageListItem> >();

            try
            {
                var pageId   = -2;
                var portalId = PortalSettings.PortalId;

                switch (parent.ToLower())
                {
                case "admin":
                    pageId = PortalSettings.AdminTabId;
                    break;

                case "host":
                    pageId   = PortalSettings.SuperTabId;
                    portalId = -1;
                    break;

                case "all":
                    pageId = -1;
                    break;

                default:
                    int.TryParse(parent, out pageId);
                    break;
                }
                if (pageId > -2)
                {
                    var listOfPages = DotNetNuke.Entities.Tabs.TabController.GetTabsByParent(pageId, portalId);
                    apiResponse.CustomObject = new List <DTO.GenericPageListItem>();

                    foreach (var page in listOfPages.Where(i => i.IsDeleted == false).OrderBy(i => i.TabOrder))
                    {
                        var newItem = new DTO.GenericPageListItem()
                        {
                            Value = page.TabID.ToString(), Name = page.TabName
                        };

                        if (string.IsNullOrWhiteSpace(page.IconFileLarge) == false)
                        {
                            newItem.Image = VirtualPathUtility.ToAbsolute(page.IconFileLarge);
                        }
                        else
                        {
                            newItem.Image = string.Empty;
                        }

                        newItem.HasChildren = page.HasChildren;

                        apiResponse.CustomObject.Add(newItem);
                    }

                    apiResponse.Success = true;

                    return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 24
0
        public HttpResponseMessage ListPages(string parent)
        {
            var apiResponse = new DTO.ApiResponse <List <DTO.GenericPageListItem> >();

            try
            {
                var pageId   = -2;
                var portalId = PortalSettings.PortalId;

                switch (parent.ToLower())
                {
                case "admin":
                    pageId = PortalSettings.AdminTabId;
                    break;

                case "host":
                    pageId   = PortalSettings.SuperTabId;
                    portalId = -1;
                    break;

                case "all":
                    pageId = -1;
                    break;

                default:
                    int.TryParse(parent, out pageId);
                    break;
                }
                if (pageId > -2)
                {
                    var listOfPages = DotNetNuke.Entities.Tabs.TabController.GetTabsByParent(pageId, portalId);
                    apiResponse.CustomObject = new List <DTO.GenericPageListItem>();

                    foreach (var page in listOfPages.Where(i => i.IsDeleted == false).OrderBy(i => i.TabOrder))
                    {
                        var newItem = new DTO.GenericPageListItem()
                        {
                            Value = page.TabID.ToString(), Name = page.TabName
                        };

                        var localizedPageName = DotNetNuke.Services.Localization.Localization.GetString(page.TabPath + ".String", DotNetNuke.Services.Localization.Localization.GlobalResourceFile);

                        if (!string.IsNullOrWhiteSpace(localizedPageName))
                        {
                            newItem.Name = localizedPageName;
                        }

                        if (string.IsNullOrWhiteSpace(page.IconFileLarge) == false)
                        {
                            var iconPath = page.IconFileLarge;

                            if (iconPath.StartsWith("~/icons/sigma/", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/" + iconPath.Substring(14);
                            }
                            else if (iconPath.StartsWith("~/desktopmodules/DevicePreviewManagement/images/", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/" + iconPath.Substring(48);
                            }
                            else if (iconPath.StartsWith("~/desktopmodules/MobileManagement/images/", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/" + iconPath.Substring(41);
                            }
                            else if (iconPath.StartsWith("~/DesktopModules/Admin/FiftyOneClientCapabilityProvider/Images/", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/" + iconPath.Substring(62);
                            }
                            else if (iconPath.StartsWith("~/DesktopModules/Admin/HtmlEditorManager/images/", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/" + iconPath.Substring(47);
                            }
                            else if (iconPath.Equals("~/images/icon_dashboard_32px.gif", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/dashboard_32x32_standard.png";
                            }
                            else if (iconPath.Equals("~/images/icon_extensions_32px.gif", StringComparison.InvariantCultureIgnoreCase))
                            {
                                iconPath = "~/desktopmodules/nbrane/administrationsuite/images/pageicons/Extensions_32x32_Standard.png";
                            }


                            newItem.Image = VirtualPathUtility.ToAbsolute(iconPath);
                        }
                        else
                        {
                            newItem.Image = string.Empty;
                        }

                        newItem.HasChildren = page.HasChildren;

                        apiResponse.CustomObject.Add(newItem);
                    }

                    apiResponse.Success = true;

                    return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
Ejemplo n.º 25
0
        public HttpResponseMessage RevertImpersonation()
        {
            var apiResponse          = new DTO.ApiResponse <bool>();
            CookieHeaderValue cookie = null;
            var impersonationToken   = string.Empty;

            try
            {
                var objPortalSecurity = new DotNetNuke.Security.PortalSecurity();

                var impersonationCookie = Common.GetUserImpersonationCookie().Split(':');

                var Id        = 0;
                var currentId = 0;

                int.TryParse(impersonationCookie.First(), out Id);
                int.TryParse(impersonationCookie.Last(), out currentId);

                if (currentId == 0 && UserInfo.UserID == -1)
                {
                    currentId = -1;
                }

                if (Id == 0 || UserInfo.UserID != currentId)
                {
                    objPortalSecurity.SignOut();
                }
                else
                {
                    var targetUserInfo = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, Id);

                    if (targetUserInfo != null)
                    {
                        DataCache.ClearUserCache(PortalSettings.PortalId, PortalSettings.UserInfo.Username);

                        objPortalSecurity.SignOut();

                        DotNetNuke.Entities.Users.UserController.UserLogin(PortalSettings.PortalId, targetUserInfo, PortalSettings.PortalName, HttpContext.Current.Request.UserHostAddress, false);
                    }
                }

                apiResponse.Success = true;
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            var actualResponse = Request.CreateResponse <DTO.ApiResponse <bool> >(HttpStatusCode.OK, apiResponse);


            var newcookie = new HttpCookie(Common.impersonationCookieKey, impersonationToken);

            newcookie.Expires = DateTime.Now.AddMinutes(-60);
            newcookie.Domain  = Request.RequestUri.Host;
            newcookie.Path    = "/";

            HttpContext.Current.Response.SetCookie(newcookie);

            return(actualResponse);
        }
        public HttpResponseMessage SaveUser(DTO.UserDetails user)
        {
            var apiResponse = new DTO.ApiResponse <bool>();

            try
            {
                var userController = new DotNetNuke.Entities.Users.UserController();

                if (user.Id == -1)
                {
                    if (!DotNetNuke.Entities.Users.UserController.ValidatePassword(user.Password))
                    {
                        apiResponse.Success = false;
                        apiResponse.Message = "Invalid Password";

                        return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                    }

                    //new user
                    var dnnUser = new DotNetNuke.Entities.Users.UserInfo();
                    dnnUser.Username    = user.UserName;
                    dnnUser.FirstName   = user.FirstName;
                    dnnUser.LastName    = user.LastName;
                    dnnUser.DisplayName = user.DisplayName;
                    dnnUser.Email       = user.EmailAddress;

                    dnnUser.PortalID = PortalSettings.PortalId;

                    dnnUser.Membership.Password = user.Password;
                    dnnUser.Membership.Approved = true;

                    DotNetNuke.Entities.Users.UserController.CreateUser(ref dnnUser);
                    apiResponse.Success = true;
                }
                else
                {
                    //existing user
                    var dnnUser = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, user.Id);
                    if (dnnUser != null)
                    {
                        //dnnUser.Username = user.UserName;
                        dnnUser.FirstName   = user.FirstName;
                        dnnUser.LastName    = user.LastName;
                        dnnUser.DisplayName = user.DisplayName;
                        dnnUser.Email       = user.EmailAddress;
                        //dnnUser.Membership.Password = user.Password;

                        DotNetNuke.Entities.Users.UserController.UpdateUser(PortalSettings.PortalId, dnnUser);
                        apiResponse.Success = true;
                    }
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }
        public HttpResponseMessage SaveModule(DTO.ModuleDetails module)
        {
            var apiResponse = new DTO.ApiResponse <int>();

            try
            {
                int iPosition = -1;
                switch (module.Position.ToUpper())
                {
                case "TOP":
                    iPosition = 0;
                    break;

                case "ABOVE":
                    if (string.IsNullOrEmpty(module.ModuleInstance) == false)
                    {
                        iPosition = int.Parse(module.ModuleInstance) - 1;
                    }
                    break;

                case "BELOW":
                    if (string.IsNullOrEmpty(module.ModuleInstance) == false)
                    {
                        iPosition = int.Parse(module.ModuleInstance) + 1;
                    }
                    break;

                case "BOTTOM":
                    iPosition = -1;
                    break;
                }

                if (module.CreateAs == "copy")
                {
                    if (module.Container == "-1")
                    {
                        module.Container = string.Empty;
                    }

                    Common.AddModuleCopy(module.ModuleId, module.PageId, iPosition, module.Location, module.Container);
                    apiResponse.Success = true;
                }
                else if (module.CreateAs == "link")
                {
                    if (module.Container == "-1")
                    {
                        module.Container = string.Empty;
                    }

                    Common.AddExistingModule(module.ModuleId, module.PageId, module.Location, iPosition, "", module.Container);
                    apiResponse.Success = true;
                }
                else
                {
                    List <int> lstNewModules = new List <int>();

                    var objTabPermissions       = PortalSettings.ActiveTab.TabPermissions;
                    var objPermissionController = new DotNetNuke.Security.Permissions.PermissionController();
                    var objModules = new DotNetNuke.Entities.Modules.ModuleController();

                    var objEventLog = new DotNetNuke.Services.Log.EventLog.EventLogController();
                    int j           = 0;

                    try
                    {
                        DotNetNuke.Entities.Modules.DesktopModuleInfo desktopModule = null;
                        if (!DotNetNuke.Entities.Modules.DesktopModuleController.GetDesktopModules(PortalSettings.PortalId).TryGetValue(module.Module, out desktopModule))
                        {
                            apiResponse.Message = "desktopModuleId";
                            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                        }
                    }
                    catch (Exception ex)
                    {
                        //LogException(ex);
                    }

                    int UserId = UserInfo.UserID;

                    foreach (var objModuleDefinition in DotNetNuke.Entities.Modules.Definitions.ModuleDefinitionController.GetModuleDefinitionsByDesktopModuleID(module.Module).Values)
                    {
                        var objModule = new DotNetNuke.Entities.Modules.ModuleInfo();
                        objModule.Initialize(PortalSettings.PortalId);

                        objModule.PortalID = PortalSettings.PortalId;
                        objModule.TabID    = PortalSettings.ActiveTab.TabID;

                        objModule.ModuleOrder = iPosition;
                        if (string.IsNullOrEmpty(module.Title) == true)
                        {
                            objModule.ModuleTitle = objModuleDefinition.FriendlyName;
                        }
                        else
                        {
                            objModule.ModuleTitle = module.Title;
                        }

                        if (!string.IsNullOrEmpty(module.Container) && module.Container != "-1")
                        {
                            objModule.ContainerSrc = module.Container;
                        }

                        objModule.PaneName    = module.Location;
                        objModule.ModuleDefID = objModuleDefinition.ModuleDefID;
                        if (objModuleDefinition.DefaultCacheTime > 0)
                        {
                            objModule.CacheTime = objModuleDefinition.DefaultCacheTime;
                            if (PortalSettings.DefaultModuleId > Null.NullInteger && PortalSettings.DefaultTabId > Null.NullInteger)
                            {
                                var defaultModule = objModules.GetModule(PortalSettings.DefaultModuleId, PortalSettings.DefaultTabId, true);
                                if ((defaultModule != null))
                                {
                                    objModule.CacheTime = defaultModule.CacheTime;
                                }
                            }
                        }

                        switch (module.Visibility)
                        {
                        case 0:
                            objModule.InheritViewPermissions = true;
                            break;

                        case 1:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 2:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 3:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 4:
                            objModule.InheritViewPermissions = false;
                            break;
                        }

                        // get the default module view permissions
                        var arrSystemModuleViewPermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");

                        // get the permissions from the page
                        foreach (DotNetNuke.Security.Permissions.TabPermissionInfo objTabPermission in objTabPermissions)
                        {
                            if (objTabPermission.PermissionKey == "VIEW" && module.Visibility == 0)
                            {
                                //Don't need to explicitly add View permisisons if "Same As Page"
                                continue;
                            }

                            // get the system module permissions for the permissionkey
                            var arrSystemModulePermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", objTabPermission.PermissionKey);
                            // loop through the system module permissions
                            for (j = 0; j <= arrSystemModulePermissions.Count - 1; j++)
                            {
                                // create the module permission
                                DotNetNuke.Security.Permissions.PermissionInfo objSystemModulePermission = null;
                                objSystemModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModulePermissions[j];
                                if (objSystemModulePermission.PermissionKey == "VIEW" && module.Visibility == 1 && objTabPermission.PermissionKey != "EDIT")
                                {
                                    //Only Page Editors get View permissions if "Page Editors Only"
                                    continue;
                                }

                                var objModulePermission = Common.AddModulePermission(objModule, objSystemModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess);

                                // ensure that every EDIT permission which allows access also provides VIEW permission
                                if (objModulePermission.PermissionKey == "EDIT" & objModulePermission.AllowAccess)
                                {
                                    var objModuleViewperm = Common.AddModulePermission(objModule, (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModuleViewPermissions[0], objModulePermission.RoleID, objModulePermission.UserID, true);
                                }
                            }

                            //Get the custom Module Permissions,  Assume that roles with Edit Tab Permissions
                            //are automatically assigned to the Custom Module Permissions
                            if (objTabPermission.PermissionKey == "EDIT")
                            {
                                var arrCustomModulePermissions = objPermissionController.GetPermissionsByModuleDefID(objModule.ModuleDefID);

                                // loop through the custom module permissions
                                for (j = 0; j <= arrCustomModulePermissions.Count - 1; j++)
                                {
                                    // create the module permission
                                    DotNetNuke.Security.Permissions.PermissionInfo objCustomModulePermission = null;
                                    objCustomModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrCustomModulePermissions[j];

                                    Common.AddModulePermission(objModule, objCustomModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess);
                                }
                            }
                        }

                        objModule.AllTabs = false;
                        //objModule.Alignment = align;

                        apiResponse.CustomObject = objModules.AddModule(objModule);
                        apiResponse.Success      = true;
                    }
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }