protected void gridMatrix_OnItemChanged(object sender, int rowItemId, int colItemId, bool allow)
    {
        // roleId and permissionId positions differ according to the page where control is used
        int roleId       = (RoleID > 0) ? colItemId : rowItemId;
        int permissionId = (RoleID > 0) ? rowItemId : colItemId;

        // Check "Manage" permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Permissions", "Manage"))
        {
            CMSPage.RedirectToAccessDenied("CMS.Permissions", "Manage");
        }

        // Check permission for the given column
        if (!gridMatrix_CheckPermissions(permissionId))
        {
            CMSPage.RedirectToAccessDenied("CMS.Permissions", "Manage");
        }

        if (allow)
        {
            RolePermissionInfoProvider.SetRolePermissionInfo(roleId, permissionId);
        }
        else
        {
            RolePermissionInfoProvider.DeleteRolePermissionInfo(roleId, permissionId);
        }

        // Reload content before rows
        GenerateBeforeRowsContent(SiteID, ValidationHelper.GetInteger(SelectedID, 0), SelectedType);
    }
Beispiel #2
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);
    }
Beispiel #3
0
        public HttpResponseMessage GetRolePermissions(int roleId = 0)
        {
            if (roleId == 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "Invalid roleId" }));
            }

            try
            {
                //the relevant permissions are retrieved
                List <Object> permissions = PermissionNameInfoProvider.GetPermissionNames()
                                            .WhereIn("PermissionID", RolePermissionInfoProvider
                                                     .GetRolePermissions()
                                                     .Column("PermissionID")
                                                     .WhereEquals("RoleID", roleId))
                                            .Select(
                    row => new
                {             //puts the relevant information into a new object to represent the permission
                    PermissionId          = row.PermissionId,
                    PermissionName        = row.PermissionName,
                    PermissionDisplayName = row.PermissionDisplayName,
                    PermissionDescription = row.PermissionDescription
                }
                    )
                                            .OrderBy(role => role.PermissionDisplayName)
                                            .ToList <Object>();
                //everything is OK, the permissions are also returned
                return(Request.CreateResponse(HttpStatusCode.OK, new { permissionList = permissions }));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.ServiceUnavailable, new { errorMessage = e.Message }));
            }
        }
    protected void gridMatrix_OnItemChanged(object sender, int rowItemId, int colItemId, bool allow)
    {
        // roleId and permissionId possitions differ according to the page where control is used
        int roleId       = (this.mRoleId > 0) ? colItemId : rowItemId;
        int permissionId = (this.mRoleId > 0) ? rowItemId : colItemId;

        // Check "Manage" permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Permissions", "Manage"))
        {
            CMSPage.RedirectToCMSDeskAccessDenied("CMS.Permissions", "Manage");
        }

        // Check permission for the given column
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Permissions", "Manage"))
        {
            CMSPage.RedirectToSiteManagerAccessDenied("CMS.Permissions", "Manage");
        }

        if (allow)
        {
            RolePermissionInfoProvider.SetRolePermissionInfo(roleId, permissionId);
        }
        else
        {
            RolePermissionInfoProvider.DeleteRolePermissionInfo(roleId, permissionId);
        }

        // Reload content before rows
        gridMatrix.ContentBeforeRows = GetBeforeRowsContent(SiteID, ValidationHelper.GetInteger(SelectedID, 0), SelectedType, SelectedUserID);
    }
Beispiel #5
0
    protected void gridMatrix_OnItemChanged(object sender, int rowItemId, int colItemId, bool newState)
    {
        if (newState)
        {
            RolePermissionInfoProvider.SetRolePermissionInfo(rowItemId, colItemId);
        }
        else
        {
            RolePermissionInfoProvider.DeleteRolePermissionInfo(rowItemId, colItemId);
        }
        // Invalidate all users
        UserInfo.TYPEINFO.InvalidateAllObjects();

        // Update content before rows
        GenerateBeforeRowsContent();
    }
Beispiel #6
0
        public HttpResponseMessage UnassignPermissionsFromRoles([FromBody] JObject postData)
        {
            int[] roleIds;
            int[] permissionIds;
            //parsing of the postdata
            try
            {
                roleIds       = postData["roleIds"].ToObject <int[]>();
                permissionIds = postData["permissionIds"].ToObject <int[]>();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
            }

            if (roleIds != null && permissionIds != null)
            {     //for every given role
                foreach (int roleId in roleIds)
                { //and for every given permission
                    foreach (var permissionId in permissionIds)
                    {
                        try
                        {
                            // Gets the object representing the role-permission relationship
                            RolePermissionInfo deleteRolePermission = RolePermissionInfoProvider.GetRolePermissionInfo(roleId, permissionId);

                            if (deleteRolePermission != null)
                            {
                                // Removes the permission from the role
                                RolePermissionInfoProvider.DeleteRolePermissionInfo(deleteRolePermission);
                            }
                        }
                        catch (Exception e)
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
                        }
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, new { }));
            }
            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "No roleIDs or no permissionIDs provided" }));
        }
Beispiel #7
0
        public HttpResponseMessage AssignPermissionsToRoles([FromBody] JObject postData)
        {
            int[] roleIds;
            int[] permissionIds;
            //the parsing of the postdata
            try
            {
                roleIds       = postData["roleIds"].ToObject <int[]>();
                permissionIds = postData["permissionIds"].ToObject <int[]>();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
            }

            if (roleIds != null && permissionIds != null)
            {
                RolePermissionInfo newRolePermission;

                //for every given role
                foreach (int roleId in roleIds)
                { //and every given permission
                    foreach (int permissionId in permissionIds)
                    {
                        newRolePermission = new RolePermissionInfo();
                        try
                        {   //join the role with the permission
                            newRolePermission.RoleID       = roleId;
                            newRolePermission.PermissionID = permissionId;
                            RolePermissionInfoProvider.SetRolePermissionInfo(newRolePermission);
                            newRolePermission = null;
                        }
                        catch (Exception e)
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = e.Message }));
                        }
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, new { }));
            }
            return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "No roleIDs or no permissionIDs provided" }));
        }
Beispiel #8
0
    /// <summary>
    /// Removes permission from role. Called when the "Remove permission from role" button is pressed.
    /// Expects the AddPermissionToRole method to be run first.
    /// </summary>
    private bool RemovePermissionFromRole()
    {
        // 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))
        {
            // Get the role permission
            RolePermissionInfo deleteRolePermission = RolePermissionInfoProvider.GetRolePermissionInfo(role.RoleID, permission.PermissionId);

            // Remove permission from role
            RolePermissionInfoProvider.DeleteRolePermissionInfo(deleteRolePermission);

            return(true);
        }

        return(false);
    }