Пример #1
0
    private void MemberNonMemberRoles(string roletype, UserInfo user)
    {
        RoleInfo role = RoleInfoProvider.GetRoleInfo(roletype, CMS.SiteProvider.SiteContext.CurrentSiteID);

        // UserInfo user = UserInfoProvider.GetUserInfo("test");

        if ((role != null))
        {
            // Create new user role object
            UserRoleInfo userRole = new UserRoleInfo();

            // Set the properties
            userRole.UserID = user.UserID;
            userRole.RoleID = role.RoleID;

            // Save the user role
            UserRoleInfoProvider.SetUserRoleInfo(userRole);
            CMS.Membership.UserInfoProvider.AddUserToRole(user.UserName, roletype, CMS.SiteProvider.SiteContext.CurrentSiteName);
            //return true;
        }
        else
        {
            // create role and add user to it
            CreateUpdateRole(roletype);
            CMS.Membership.UserInfoProvider.AddUserToRole(user.UserName, roletype, CMS.SiteProvider.SiteContext.CurrentSiteName);
        }
    }
Пример #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        roleId  = QueryHelper.GetInteger("roleid", 0);
        groupId = QueryHelper.GetInteger("groupid", 0);

        string   currentRole = "";
        RoleInfo role        = RoleInfoProvider.GetRoleInfo(roleId);

        if (role != null)
        {
            currentRole = role.DisplayName;
        }

        // Initialize PageTitle breadcrumbs
        string[,] pageTitleTabs = new string[2, 3];
        pageTitleTabs[0, 0]     = GetString("general.roles");
        pageTitleTabs[0, 1]     = "~/CMSModules/Groups/Tools/Roles/Role_List.aspx?groupid=" + groupId;
        pageTitleTabs[0, 2]     = "_parent";
        pageTitleTabs[1, 0]     = currentRole;
        pageTitleTabs[1, 1]     = "";
        pageTitleTabs[1, 2]     = "";

        this.CurrentMaster.Title.Breadcrumbs   = pageTitleTabs;
        this.CurrentMaster.Title.HelpTopicName = "group_role_general";
        this.CurrentMaster.Title.HelpName      = "title";

        // Register script
        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ShowContent", ScriptHelper.GetScript("function ShowContent(contentLocation) { parent.frames['content'].location.href= contentLocation; }"));

        // Tabs
        InitalizeTabs();
    }
Пример #3
0
    /// <summary>
    /// Creates role UI element. Called when the "Add element to role" button is pressed.
    /// Expects the CreateUIElement method to be run first.
    /// </summary>
    private bool AddUIElementToRole()
    {
        // Get the role
        RoleInfo role = RoleInfoProvider.GetRoleInfo("cmsdeskadmin", SiteContext.CurrentSiteID);

        // Get the UI element
        UIElementInfo element = UIElementInfoProvider.GetUIElementInfo("MyNewModule", "MyNewElement");

        if ((role != null) && (element != null))
        {
            // Create new role UI element object
            RoleUIElementInfo newRoleElement = new RoleUIElementInfo();

            // Set the properties
            newRoleElement.RoleID    = role.RoleID;
            newRoleElement.ElementID = element.ElementID;

            // Save the role UI element
            RoleUIElementInfoProvider.SetRoleUIElementInfo(newRoleElement);

            return(true);
        }

        return(false);
    }
Пример #4
0
    /// <summary>
    /// Removes role from message board. Called when the button "Remove role from board" is pressed.
    /// Expects the method AddRoleToMessageBoard to be run first.
    /// </summary>
    private bool RemoveRoleFromMessageBoard()
    {
        // Get the tree structure
        TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

        // Get the root document
        TreeNode root = tree.SelectSingleNode(SiteContext.CurrentSiteName, "/", null, true);

        if (root != null)
        {
            // Get the message board
            BoardInfo board = BoardInfoProvider.GetBoardInfo("MyNewBoard", root.DocumentID);

            // Get the role
            RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSite.SiteID);

            if ((board != null) && (role != null))
            {
                BoardRoleInfo boardRole = BoardRoleInfoProvider.GetBoardRoleInfo(role.RoleID, board.BoardID);

                if (boardRole != null)
                {
                    // Remove role from message board
                    BoardRoleInfoProvider.DeleteBoardRoleInfo(boardRole);

                    return(true);
                }
            }
        }

        return(false);
    }
Пример #5
0
    /// <summary>
    /// Expects the "CreateDocumentStructure" method to be run first.
    /// </summary>
    private bool SetRolePermissions()
    {
        // Create an instance of the Tree provider
        TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);

        // Get default culture code
        string culture = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSDefaultCultureCode");

        // Get the API Example document
        TreeNode node = tree.SelectSingleNode(CMSContext.CurrentSiteName, "/API-Example", culture);

        if (node != null)
        {
            // Get the role ID
            RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSEditor", CMSContext.CurrentSiteName);

            if (role != null)
            {
                // Prepare allowed / denied permissions
                int allowed = 0;
                int denied  = 0;
                allowed += Convert.ToInt32(Math.Pow(2, Convert.ToInt32(NodePermissionsEnum.Modify)));

                // Create an instance of ACL provider
                AclProvider acl = new AclProvider(tree);

                // Set role permissions
                acl.SetRolePermissions(node, allowed, denied, role.RoleID);

                return(true);
            }
        }

        return(false);
    }
Пример #6
0
    /// <summary>
    /// Adds permission to role. Called when the "Add permission to role" button is pressed.
    /// Expects the CreatePermission method to be run first.
    /// </summary>
    private bool AddPermissionToRole()
    {
        // Get the permission
        PermissionNameInfo permission = PermissionNameInfoProvider.GetPermissionNameInfo("MyNewPermission", "MyNewModule", null);

        // Get the role
        RoleInfo role = RoleInfoProvider.GetRoleInfo("cmsdeskadmin", SiteContext.CurrentSiteID);

        if ((permission != null) && (role != null))
        {
            // Create new role permission object
            RolePermissionInfo newRolePermission = new RolePermissionInfo();

            // Set the properties
            newRolePermission.PermissionID = permission.PermissionId;
            newRolePermission.RoleID       = role.RoleID;

            // Add permission to role
            RolePermissionInfoProvider.SetRolePermissionInfo(newRolePermission);

            return(true);
        }

        return(false);
    }
Пример #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Hide site selector
        usUsers.ShowSiteFilter = false;

        // Set selector live site and hide special users
        usUsers.IsLiveSite = IsLiveSite;
        if (IsLiveSite)
        {
            usUsers.HideDisabledUsers = true;
            usUsers.HideHiddenUsers   = true;
        }

        // Show only user belonging to role's site
        RoleInfo ri = RoleInfoProvider.GetRoleInfo(RoleID);

        if (ri != null)
        {
            usUsers.SiteID = ri.SiteID == 0 ? -1 : ri.SiteID;
        }

        // Load data in administration
        if (!IsLiveSite)
        {
            currentValues = GetRoleUsers();

            if (!RequestHelper.IsPostBack())
            {
                usUsers.Value = currentValues;
            }
        }

        usUsers.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged;
    }
Пример #8
0
        public HttpResponseMessage DeleteRole(int roleId = 0)
        {
            if (roleId == 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "Invalid roleId" }));
            }

            RoleInfo deleteRole = new RoleInfo();

            try
            {
                // Gets the role
                deleteRole = RoleInfoProvider.GetRoleInfo(roleId);
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.ServiceUnavailable, new { errorMessage = e.Message }));
            }

            if (deleteRole != null)
            {
                try
                {
                    // Deletes the role
                    RoleInfoProvider.DeleteRoleInfo(deleteRole);
                    return(Request.CreateResponse(HttpStatusCode.OK, new { }));
                }
                catch (Exception e)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
                }
            }
            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "There's a problem with your role." }));
        }
Пример #9
0
        private string CheckIfUsersAndRolesExist(string[] usernames, string[] roleNames, string siteName)
        {
            UserInfo user;

            //Checks if all usernames are valid
            for (int i = 0; i < usernames.Length; i++)
            {
                user = UserInfoProvider.GetUserInfo(usernames[i]);
                if (user == null)
                {
                    return("invalid username: "******"invalid roleName: " + roleNames[i]);
                }
            }
            return("");
        }
Пример #10
0
    /// <summary>
    /// Adds role permission to media library. Called when the "Add role permission to library " button is pressed.
    /// Expects the CreateMediaLibrary method to be run first.
    /// </summary>
    private bool AddRolePermissionToLibrary()
    {
        // Get the media library
        MediaLibraryInfo mediaLibrary = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyNewLibrary", SiteContext.CurrentSiteName);

        // Get the role
        RoleInfo libraryRole = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSiteID);

        // Get the permission
        PermissionNameInfo libraryPermission = PermissionNameInfoProvider.GetPermissionNameInfo("FileCreate", "CMS.MediaLibrary", null);

        if ((mediaLibrary != null) && (libraryRole != null) && (libraryPermission != null))
        {
            // Create a new media library role permision info
            MediaLibraryRolePermissionInfo rolePermission = new MediaLibraryRolePermissionInfo();

            // Set the values
            rolePermission.LibraryID    = mediaLibrary.LibraryID;
            rolePermission.RoleID       = libraryRole.RoleID;
            rolePermission.PermissionID = libraryPermission.PermissionId;

            // Add role permission to media library
            MediaLibraryRolePermissionInfoProvider.SetMediaLibraryRolePermissionInfo(rolePermission);

            return(true);
        }

        return(false);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        roleUsersElem.IsLiveSite = false;

        roleId  = QueryHelper.GetInteger("roleid", 0);
        groupId = QueryHelper.GetInteger("groupid", 0);

        // Check whether group exists
        GroupInfo gi = GroupInfoProvider.GetGroupInfo(groupId);

        if (gi != null)
        {
            //Check whether selected role is in selected group
            RoleInfo ri = RoleInfoProvider.GetRoleInfo(roleId);
            if ((ri != null) && (ri.RoleGroupID == gi.GroupID))
            {
                roleUsersElem.RoleID              = roleId;
                roleUsersElem.GroupID             = groupId;
                roleUsersElem.OnCheckPermissions += roleUsersElem_OnCheckPermissions;
            }
        }
        else
        {
            roleUsersElem.Visible = false;
        }
    }
Пример #12
0
 /// <summary>
 /// Nottify Admin
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnNotifyAdmin_Click(object sender, EventArgs e)
 {
     try
     {
         var      nodeGuid      = CurrentDocument.NodeGUID;
         var      emailTemplate = DIContainer.Resolve <IKenticoResourceService>().GetSettingsKey(SiteContext.CurrentSiteID, "KDA_CampaignProductAddedTemplate");
         Campaign campaign      = CampaignProvider.GetCampaign(nodeGuid, CurrentDocument.DocumentCulture, CurrentSite.SiteName);
         var      program       = ProgramProvider.GetPrograms()
                                  .WhereEquals("ProgramId", ddlPrograms.SelectedValue)
                                  .FirstOrDefault();
         if (program != null)
         {
             program.GlobalAdminNotified = true;
             program.Update();
             var roleName = SettingsKeyInfoProvider.GetValue(CurrentSite.SiteName + ".KDA_GlobalAminRoleName");
             var role     = RoleInfoProvider.GetRoleInfo(roleName, CurrentSite.SiteID);
             if (role != null)
             {
                 var users = RoleInfoProvider.GetRoleUsers(role.RoleID);
                 if (users != null)
                 {
                     foreach (var user in users.AsEnumerable().ToList())
                     {
                         ProductEmailNotifications.CampaignEmail(campaign.DocumentName, user.Field <string>("Email"), emailTemplate, program.DocumentName);
                     }
                 }
             }
             Response.Redirect(CurrentDocument.DocumentUrlPath, false);
         }
     }
     catch (Exception ex)
     {
         EventLogProvider.LogException("CMSWebParts_Kadena_Campaign_Web_Form_CampaignProductsFilter", "btnNotifyAdmin_Click", ex, CurrentSite.SiteID, ex.Message);
     }
 }
Пример #13
0
    /// <summary>
    /// Adds role to message board. Called when the button "Add role to board" is pressed.
    /// Expects the method CreateMessageBoard to be run first.
    /// </summary>
    private bool AddRoleToMessageBoard()
    {
        // Get the tree structure
        TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);

        // Get the root document
        TreeNode root = tree.SelectSingleNode(CMSContext.CurrentSiteName, "/", null, true);

        if (root != null)
        {
            // Get the message board
            BoardInfo board = BoardInfoProvider.GetBoardInfo("MyNewBoard", root.DocumentID);

            // Get the role CMSDeskAdmin
            RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", CMSContext.CurrentSite.SiteID);

            if ((board != null) && (role != null))
            {
                // Add role to message board
                BoardRoleInfoProvider.AddRoleToBoard(role.RoleID, board.BoardID);

                return(true);
            }
        }

        return(false);
    }
Пример #14
0
    /// <summary>
    /// Deletes role. Called when the "Delete role" button is pressed.
    /// Expects the CreateRole method to be run first.
    /// </summary>
    private bool DeleteRole()
    {
        // Get the role
        RoleInfo deleteRole = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);

        // Delete the role
        RoleInfoProvider.DeleteRoleInfo(deleteRole);

        return(deleteRole != null);
    }
Пример #15
0
        public HttpResponseMessage RemoveUsersFromRoles([FromBody] JObject postData)
        {
            string[] usernames, roleNames;
            string   siteName;

            //parsing postdata
            try
            {
                usernames = postData["usernames"].ToObject <string[]>();
                roleNames = postData["roleNames"].ToObject <string[]>();
                siteName  = postData["siteName"].ToObject <string>();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
            }
            //checks if the given usernames and role names are valid on the given site
            string check = CheckIfUsersAndRolesExist(usernames, roleNames, siteName);

            if (check != "")
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = check }));
            }

            UserInfo user;
            RoleInfo role;

            //for all usernames
            for (int i = 0; i < usernames.Length; i++)
            {   //gets the user according to the username
                user = UserInfoProvider.GetUserInfo(usernames[i]);
                //and for all role names
                for (int j = 0; j < roleNames.Length; j++)
                {
                    //all global and membership roles will be checked
                    bool checkGlobalRoles = true;
                    bool checkMembership  = true;

                    // Checks whether the user is assigned to a role with the role name
                    if (user.IsInRole(roleNames[j], siteName, checkGlobalRoles, checkMembership))
                    {
                        // Removes the user from the role
                        try
                        {
                            role = RoleInfoProvider.GetRoleInfo(roleNames[i], siteName, true);
                            UserInfoProvider.RemoveUserFromRole(user.UserID, role.RoleID);
                        } catch (Exception e)
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
                        }
                    }
                }
            }
            return(Request.CreateResponse(HttpStatusCode.OK, new { }));
        }
Пример #16
0
        /// <summary>
        /// Returns instance of <see cref="Role"/>.
        /// </summary>
        /// <param name="roleName">Name of role.</param>
        public Task <Role> FindByNameAsync(string roleName)
        {
            var roleInfo = RoleInfoProvider.GetRoleInfo(roleName, SiteContext.CurrentSiteID);

            if (roleInfo == null)
            {
                return(Task.FromResult((Role)null));
            }

            return(Task.FromResult(new Role(roleInfo)));
        }
Пример #17
0
 private string AreRoleIdsValid(int[] roleIds)
 {
     for (int i = 0; i < roleIds.Length; i++)
     {
         if (RoleInfoProvider.GetRoleInfo(roleIds[i]) == null)
         {
             return("invalid roleId: " + roleIds[i]);
         }
     }
     return("");
 }
Пример #18
0
        /// <summary>
        /// Returns instance of <see cref="Role"/>.
        /// </summary>
        /// <param name="roleId">ID of the role.</param>
        public Task <Role> FindByIdAsync(int roleId)
        {
            var roleInfo = RoleInfoProvider.GetRoleInfo(roleId);

            if (roleInfo == null)
            {
                return(Task.FromResult((Role)null));
            }

            return(Task.FromResult(new Role(roleInfo)));
        }
Пример #19
0
        private RoleInfo GetRoleByRoleName(string roleName, int siteId)
        {
            var role = RoleInfoProvider.GetRoleInfo(roleName, siteId);

            if (role == null)
            {
                throw new InvalidOperationException(ResHelper.GetString("general.rolenotfound"));
            }

            return(role);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        roleId = QueryHelper.GetInteger("roleid", 0);

        string roleListUrl = "~/CMSModules/Membership/Pages/Roles/Role_List.aspx";

        if (SelectedSiteID != 0)
        {
            urlQuery = "selectedsiteid=" + SelectedSiteID;
            siteID   = SelectedSiteID;
        }
        else if (SiteID != 0)
        {
            urlQuery = "siteid=" + SiteID;
            siteID   = SiteID;
        }

        if (urlQuery != String.Empty)
        {
            roleListUrl += "?";
        }

        roleListUrl += urlQuery;

        string currentRole = "";

        role = RoleInfoProvider.GetRoleInfo(roleId);
        if (role != null)
        {
            currentRole = role.DisplayName;
        }

        // Initialize PageTitle breadcrumbs
        string[,] pageTitleTabs = new string[2, 3];
        pageTitleTabs[0, 0]     = GetString("general.roles");
        pageTitleTabs[0, 1]     = roleListUrl;
        pageTitleTabs[0, 2]     = "_parent";
        pageTitleTabs[1, 0]     = currentRole;
        pageTitleTabs[1, 1]     = "";
        pageTitleTabs[1, 2]     = "";

        CurrentMaster.Title.Breadcrumbs   = pageTitleTabs;
        CurrentMaster.Title.TitleText     = GetString("Administration-Role_Edit.Title");
        CurrentMaster.Title.TitleImage    = GetImageUrl("Objects/CMS_Role/object.png");
        CurrentMaster.Title.HelpTopicName = "general_tab9";
        CurrentMaster.Title.HelpName      = "title";

        // Register script
        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ShowContent", ScriptHelper.GetScript("function ShowContent(contentLocation) { parent.frames['content'].location.href= contentLocation; }"));

        // Tabs
        InitalizeTabs();
    }
    /// <summary>
    /// Reloads textboxes with new data.
    /// </summary>
    public override void ReloadData(bool forceReload)
    {
        RoleInfo ri = ItemID > 0 ? RoleInfoProvider.GetRoleInfo(ItemID) : new RoleInfo();

        // Set edited object
        EditedObject = ri;

        if (ri.RoleID > 0)
        {
            var user = MembershipContext.AuthenticatedUser;
            // Security test
            if (!user.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin))
            {
                if (ri.SiteID == 0)
                {
                    RedirectToAccessDenied(GetString("general.actiondenied"));
                }
                else
                {
                    SiteInfo si = SiteInfoProvider.GetSiteInfo(ri.SiteID);
                    if (si != null)
                    {
                        if (!user.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin) && !MembershipContext.AuthenticatedUser.IsInSite(si.SiteName))
                        {
                            RedirectToAccessDenied(GetString("general.actiondenied"));
                        }
                    }
                }
            }
        }

        if ((!RequestHelper.IsPostBack()) || (forceReload))
        {
            string roleName = string.Empty;
            if (ri.RoleID > 0)
            {
                LoadData(ri);
                SiteID   = ri.SiteID;
                roleName = ri.RoleName;
            }
            else
            {
                txtRoleCodeName.Text    = null;
                txtRoleDisplayName.Text = null;
                txtDescription.Text     = null;
                chkIsDomain.Checked     = false;
                chkIsAdmin.Checked      = false;
            }
            bool displayIsDomain = ((roleName != RoleName.EVERYONE) && (roleName != RoleName.AUTHENTICATED) && (roleName != RoleName.NOTAUTHENTICATED) && (GroupID == 0));
            plcIsDomain.Visible = displayIsDomain;
        }
    }
Пример #22
0
    /// <summary>
    /// Recursivelly select or deselect all child elements.
    /// </summary>
    /// <param name="select">Determines the type of action</param>
    /// <param name="parentId">ID of the parent UIElement</param>
    /// <param name="excludeRoot">Indicates whether to exclude root element from selection/deselection</param>
    private void SelectDeselectAll(bool select, int parentId, bool excludeRoot)
    {
        // Check manage permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.UIPersonalization", CMSAdminControl.PERMISSION_MODIFY))
        {
            RedirectToAccessDenied("CMS.UIPersonalization", CMSAdminControl.PERMISSION_MODIFY);
        }

        // Get the children and select them
        string where = (ModuleID > 0) ?
                       String.Format(@"(ElementResourceID = {0} OR EXISTS (SELECT ElementID FROM CMS_UIElement AS x WHERE x.ElementIDPath like CMS_UIElement.ElementIDPath+ '%' AND x.ElementResourceID = {0})) AND
                            ElementIDPath LIKE (SELECT TOP 1 ElementIDPath FROM CMS_UIElement WHERE ElementID = {1}) + '%' ", ModuleID, parentId) :
                       "ElementIDPath LIKE (SELECT TOP 1 ElementIDPath FROM CMS_UIElement WHERE ElementID = " + parentId + ") + '%' ";
        if (excludeRoot)
        {
            where += " AND NOT ElementID = " + parentId;
        }
        if (!String.IsNullOrEmpty(GroupPreffix))
        {
            where += " AND ElementName NOT LIKE '" + SqlHelper.EscapeLikeText(SqlHelper.EscapeQuotes(GroupPreffix)) + "%'";
        }

        using (CMSActionContext context = new CMSActionContext())
        {
            // Many updates caused deadlocks with CMS_Role table, disable touch parent of the role
            context.TouchParent = false;

            DataSet ds = UIElementInfoProvider.GetUIElements(where, null, 0, "ElementID");
            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    int id = ValidationHelper.GetInteger(dr["ElementID"], 0);
                    if (select)
                    {
                        RoleUIElementInfoProvider.AddRoleUIElementInfo(RoleID, id);
                    }
                    else
                    {
                        RoleUIElementInfoProvider.DeleteRoleUIElementInfo(RoleID, id);
                    }
                }
            }

            // Explicitly touch the role only once
            var role = RoleInfoProvider.GetRoleInfo(RoleID);
            if (role != null)
            {
                role.Update();
            }
        }
    }
Пример #23
0
    private void SaveRole(RoleInfo ri, string codeName, string displayName)
    {
        bool newRole = false;

        // Get object
        if (ri == null)
        {
            ri = RoleInfoProvider.GetRoleInfo(ItemID);
            if (ri == null)
            {
                ri = new RoleInfo();
                // indicate this is new role and should be redirected after safe
                newRole = true;
            }
        }

        if (ri.DisplayName != displayName)
        {
            // Refresh a breadcrumb if used in the tabs layout
            ScriptHelper.RefreshTabHeader(Page, string.Empty);
        }

        // Set the fields
        ri.DisplayName  = displayName;
        ri.RoleName     = codeName;
        ri.RoleID       = ItemID;
        ri.Description  = txtDescription.Text;
        ri.SiteID       = mSiteId;
        ri.RoleIsDomain = chkIsDomain.Checked;

        // If group id is present then it's group role
        if (GroupID > 0)
        {
            ri.RoleGroupID = mGroupId;
            ri.RoleIsGroupAdministrator = chkIsAdmin.Checked;
        }


        RoleInfoProvider.SetRoleInfo(ri);
        ItemID = ri.RoleID;

        ShowChangesSaved();

        // if new group was created redirect to edit page
        if (newRole)
        {
            RoleID = ri.RoleID;
            RaiseOnSaved();
        }
    }
Пример #24
0
    /// <summary>
    /// Reloads textboxes with new data.
    /// </summary>
    public override void ReloadData(bool forceReload)
    {
        RoleInfo ri = RoleInfoProvider.GetRoleInfo(ItemID);

        if (ri != null)
        {
            CurrentUserInfo user = CMSContext.CurrentUser;
            // Security test
            if (!user.UserSiteManagerAdmin)
            {
                if (ri.SiteID == 0)
                {
                    RedirectToAccessDenied(GetString("general.actiondenied"));
                }
                else
                {
                    SiteInfo si = SiteInfoProvider.GetSiteInfo(ri.SiteID);
                    if (si != null)
                    {
                        if (!user.IsGlobalAdministrator && !CMSContext.CurrentUser.IsInSite(si.SiteName))
                        {
                            RedirectToAccessDenied(GetString("general.actiondenied"));
                        }
                    }
                }
            }
        }

        if ((!RequestHelper.IsPostBack()) || (forceReload))
        {
            string roleName = string.Empty;
            if (ri != null)
            {
                LoadData(ri);
                SiteID   = ri.SiteID;
                roleName = ri.RoleName;
            }
            else
            {
                txtRoleCodeName.Text    = null;
                txtRoleDisplayName.Text = null;
                txtDescription.Text     = null;
                chkIsDomain.Checked     = false;
                chkIsAdmin.Checked      = false;
            }
            bool displayIsDomain = ((roleName != RoleInfoProvider.EVERYONE) && (roleName != RoleInfoProvider.AUTHENTICATED) && (roleName != RoleInfoProvider.NOTAUTHENTICATED) && (GroupID == 0));
            plcIsDomain.Visible = displayIsDomain;
        }
    }
Пример #25
0
        public HttpResponseMessage CreateNewRole([FromBody] JObject postData)
        {
            // Creates a new role object
            RoleInfo newRole = new RoleInfo();
            string   newRoleName, newDisplayName;

            //parsing of the postdata
            try
            {
                newRoleName    = postData["roleName"].ToObject <string>();
                newDisplayName = postData["roleDisplayName"].ToObject <string>();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
            }

            // Sets the role properties
            newRole.RoleName    = newRoleName;
            newRole.DisplayName = newDisplayName;
            newRole.SiteID      = SiteContext.CurrentSiteID;
            int roleId;

            // Verifies that the role is unique for the current site
            if (!RoleInfoProvider.RoleExists(newRole.RoleName, SiteContext.CurrentSiteName))
            {
                try
                {
                    // Saves the role to the database
                    RoleInfoProvider.SetRoleInfo(newRole);
                    roleId = RoleInfoProvider.GetRoleInfo(newRole.RoleName, SiteContext.CurrentSiteName).RoleID;
                }
                catch (CodeNameNotValidException e)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
                }
                catch (Exception e)
                {
                    return(Request.CreateResponse(HttpStatusCode.ServiceUnavailable, new { errorMessage = e.Message }));
                }
                //everything is OK, the ID of the new role are also returned
                return(Request.CreateResponse(HttpStatusCode.OK, new { newRoleId = roleId }));
            }
            else
            {
                // A role with the same name already exists on the site
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "A role with the same name already exists on the site" }));
            }
        }
    /// <summary>
    /// Recursivelly select or deselect all child elements.
    /// </summary>
    /// <param name="select">Determines the type of action</param>
    /// <param name="parentId">ID of the parent UIElement</param>
    /// <param name="excludeRoot">Indicates whether to exclude root element from selection/deselection</param>
    private void SelectDeselectAll(bool select, int parentId, bool excludeRoot)
    {
        // Check manage permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.UIPersonalization", CMSAdminControl.PERMISSION_MODIFY))
        {
            RedirectToAccessDenied("CMS.UIPersonalization", CMSAdminControl.PERMISSION_MODIFY);
        }

        // Get the children and select them (do not use module as filter if all elements should be visible)
        string where = ((ModuleID > 0) && !ShowAllElementsFromModuleSection) ?
                       String.Format(@"(ElementResourceID = {0} OR EXISTS (SELECT ElementID FROM CMS_UIElement AS x WHERE x.ElementIDPath LIKE CMS_UIElement.ElementIDPath+ '%' AND x.ElementResourceID = {0})) AND
                            ElementIDPath LIKE (SELECT TOP 1 ElementIDPath FROM CMS_UIElement WHERE ElementID = {1}) + '%' ", ModuleID, parentId) :
                       "ElementIDPath LIKE (SELECT TOP 1 ElementIDPath FROM CMS_UIElement WHERE ElementID = " + parentId + ") + '%' ";
        if (excludeRoot)
        {
            where += " AND NOT ElementID = " + parentId;
        }
        if (!String.IsNullOrEmpty(GroupPreffix))
        {
            where += " AND ElementName NOT LIKE '" + SqlHelper.EscapeLikeText(SqlHelper.EscapeQuotes(GroupPreffix)) + "%'";
        }

        using (CMSActionContext context = new CMSActionContext())
        {
            // Many updates caused deadlocks with CMS_Role table, disable touch parent of the role
            context.TouchParent = false;

            var elementIds = UIElementInfoProvider.GetUIElements()
                             .Where(where)
                             .Columns("ElementID")
                             .GetListResult <int>();

            foreach (var id in elementIds)
            {
                if (select)
                {
                    RoleUIElementInfoProvider.AddRoleUIElementInfo(RoleID, id);
                }
                else
                {
                    RoleUIElementInfoProvider.DeleteRoleUIElementInfo(RoleID, id);
                }
            }

            // Explicitly touch the role only once
            RoleInfoProvider.GetRoleInfo(RoleID)
            ?.Update();
        }
    }
Пример #27
0
    /// <summary>
    /// Removes membership from role. Called when the "Remove membership from role" button is pressed.
    /// </summary>
    private bool RemoveMembershipFromRole()
    {
        // Get role and user objects
        RoleInfo       role       = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);
        MembershipInfo membership = MembershipInfoProvider.GetMembershipInfo("MyNewMembership", CMSContext.CurrentSiteName);

        if ((role != null) && (membership != null))
        {
            MembershipRoleInfoProvider.RemoveMembershipFromRole(membership.MembershipID, role.RoleID);

            return(true);
        }

        return(false);
    }
Пример #28
0
        public async Task RemoveFromRoleAsync_UserIsInRole_UserRoleInfoDeletedUserAndRoleExists()
        {
            var role = mMembershipFakeFactory.AdminRole;
            var user = new User(mMembershipFakeFactory.UserEnabledWithEmail);

            UserRoleInfoProvider.AddUserToRole(mMembershipFakeFactory.UserEnabledWithEmail, mMembershipFakeFactory.AdminRole);

            await mUserStore.RemoveFromRoleAsync(user, role.RoleName);

            CMSAssert.All(
                () => Assert.AreEqual(0, UserRoleInfoProvider.GetUserRoles().Count),
                () => Assert.IsNull(UserRoleInfoProvider.GetUserRoleInfo(user.Id, role.RoleID)),
                () => Assert.IsNotNull(RoleInfoProvider.GetRoleInfo(role.RoleID)),
                () => Assert.IsNotNull(UserInfoProvider.GetUserInfo(user.Id)));
        }
    /// <summary>
    /// Initializes breadcrumbs items.
    /// </summary>
    private void InitializeBreadcrumbs()
    {
        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem {
            Text        = GetString("general.roles"),
            Index       = 0,
            RedirectUrl = "javascript:" + ControlsHelper.GetPostBackEventReference(lnkBackHidden)
        });

        RoleInfo role = RoleInfoProvider.GetRoleInfo(RoleID);

        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem {
            Text  = (role == null) ? GetString("Administration-Role_New.NewRole") : role.RoleDisplayName,
            Index = 1
        });
    }
Пример #30
0
    /// <summary>
    /// Removes the assignment of the CMS Editors role from a workflow step. Called when the "Remove role from step" button is pressed.
    /// Expects the CreateWorkflow, CreateWorkflowStep and AddRoleToStep methods to be run first.
    /// </summary>
    private bool RemoveRoleFromStep()
    {
        // Get the workflow
        WorkflowInfo workflow = WorkflowInfoProvider.GetWorkflowInfo("MyNewWorkflow", WorkflowTypeEnum.Approval);

        if (workflow != null)
        {
            // Get the custom step
            WorkflowStepInfo step = WorkflowStepInfoProvider.GetWorkflowStepInfo("MyNewWorkflowStep", workflow.WorkflowID);

            if (step != null)
            {
                // Get the role to be assigned to the step
                RoleInfo role = RoleInfoProvider.GetRoleInfo("CMSEditor", SiteContext.CurrentSiteID);

                if (role != null)
                {
                    // Get the step - role relationship
                    WorkflowStepRoleInfo stepRoleInfo = WorkflowStepRoleInfoProvider.GetWorkflowStepRoleInfo(step.StepID, role.RoleID);

                    if (stepRoleInfo != null)
                    {
                        // Remove the assignment
                        WorkflowStepRoleInfoProvider.RemoveRoleFromWorkflowStep(step.StepID, role.RoleID);

                        return(true);
                    }
                    else
                    {
                        // The role is not assigned to the step
                        apiRemoveRoleFromStep.ErrorMessage = "The 'CMS Editors' role is not assigned to the step.";
                    }
                }
                else
                {
                    // The role was not found
                    apiRemoveRoleFromStep.ErrorMessage = "The role 'CMS Editors' was not found.";
                }
            }
            else
            {
                // The step was not found
                apiRemoveRoleFromStep.ErrorMessage = "The step 'My new workflow step' was not found.";
            }
        }

        return(false);
    }