Checking permissions using the API

User privilege levels

using CMS.Membership;
using CMS.SiteProvider;

private bool CheckPrivilegeLevel()
{
    // Gets the currently authenticated user
    UserInfo user = MembershipContext.AuthenticatedUser;

    if (user != null)
    {
        // Checks whether the user has the Editor privilege level or higher
        return user.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Editor, SiteContext.CurrentSiteName));
    }

    return false;
}
On this page

Module permissions

using CMS.Membership;
using CMS.SiteProvider;

private bool CheckModulePermissions()
{
    // Gets the currently authenticated user
    UserInfo user = MembershipContext.AuthenticatedUser;

    if (user != null)
    {
        // Checks whether the user has the Read permission for the Content module
        return user.IsAuthorizedPerResource("CMS.Content", "Read", SiteContext.CurrentSiteName);
    }

    return false;
}

Page type or custom table permissions

using CMS.Membership;
using CMS.SiteProvider;

private bool CheckPageTypePermissions()
{
	// Gets the currently authenticated user
    UserInfo user = MembershipContext.AuthenticatedUser;

    if (user != null)
    {
        // Checks whether the user has the Read permission for the CMS.MenuItem page type
        return UserInfoProvider.IsAuthorizedPerClass("CMS.MenuItem", "Read", SiteContext.CurrentSiteName, user);
    }

    return false;
}

Permissions for specific pages (ACLs)

using CMS.DocumentEngine;
using CMS.Membership;
using CMS.SiteProvider;
using CMS.DataEngine;

private bool CheckPagePermissions()
{
	// Creates a TreeProvider instance
	TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

	// Gets the Example page
	TreeNode page = tree.SelectSingleNode(SiteContext.CurrentSiteName, "/Example", "en-US");

	if (page != null)
	{
		// Gets the user object
		UserInfo user = UserInfoProvider.GetUserInfo("CMSEditor");

		if (user != null)
		{
			// Checks whether the user has the Modify permission for the Example page
			if (page.CheckPermissions(PermissionsEnum.Modify, SiteContext.CurrentSiteName, user))
			{
				// Perform an action according to the result
				return true;
			}
		}
	}

	return false;

}

Filtering page data according to permissions

using CMS.Membership;
using CMS.Base;
using CMS.DocumentEngine;

...

// Gets the user object
UserInfo user = UserInfoProvider.GetUserInfo("CMSEditor");

// Gets all news items for which the user has Read permissions
using (new CMSActionContext(user))
{
	var news = DocumentHelper.GetDocuments("CMS.News")
		.OnSite("CorporateSite")
		.Path("/News", PathTypeEnum.Children)
		.CheckPermissions();
}