using System;
using System.Data;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.LicenseProvider;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
[Title(Text = "Membership", ImageUrl = "Objects/CMS_User/object.png")]
public partial class CMSAPIExamples_Code_Administration_Membership_Default : CMSAPIExamplePage
{
#region "Initialization"
protected void Page_Load(object sender, EventArgs e)
{
// Check license
LicenseHelper.CheckFeatureAndRedirect(URLHelper.GetCurrentDomain(), FeatureEnum.Membership);
// User
apiCreateUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateUser);
apiGetAndUpdateUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateUser);
apiGetAndBulkUpdateUsers.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateUsers);
apiDeleteUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteUser);
apiAuthenticateUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(AuthenticateUser);
// User on site
apiAddUserToSite.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(AddUserToSite);
apiRemoveUserFromSite.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(RemoveUserFromSite);
// Role
apiCreateRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateRole);
apiGetAndUpdateRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateRole);
apiGetAndBulkUpdateRoles.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateRoles);
apiDeleteRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteRole);
// User role
apiCreateUserRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateUserRole);
apiDeleteUserRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteUserRole);
// Membership
apiCreateMembership.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateMembership);
apiGetAndUpdateMembership.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateMembership);
apiGetAndBulkUpdateMemberships.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateMemberships);
apiDeleteMembership.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteMembership);
// Membership role
apiAddMembershipToRole.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(AddMembershipToRole);
apiRemoveMembershipFromRole.RunExample +=new CMSAPIExamples_Controls_APIExample.OnRunExample(RemoveMembershipFromRole);
apiAddMembershipToUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(AddMembershipToUser);
apiRemoveMembershipFromUser.RunExample +=new CMSAPIExamples_Controls_APIExample.OnRunExample(RemoveMembershipFromUser);
// Online users
apiGetOnlineUsers.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetOnlineUsers);
apiIsUserOnline.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(IsUserOnline);
apiKickUser.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(KickUser);
}
#endregion
#region "Mass actions"
///
/// Runs all creating and managing examples.
///
public override void RunAll()
{
base.RunAll();
// User
apiCreateUser.Run();
apiGetAndUpdateUser.Run();
apiGetAndBulkUpdateUsers.Run();
// User on site
apiAddUserToSite.Run();
// Role
apiCreateRole.Run();
apiGetAndUpdateRole.Run();
apiGetAndBulkUpdateRoles.Run();
// User role
apiCreateUserRole.Run();
// Membership
apiCreateMembership.Run();
apiGetAndUpdateMembership.Run();
apiGetAndBulkUpdateMemberships.Run();
// Membership role
apiAddMembershipToRole.Run();
// Membership user
apiAddMembershipToUser.Run();
// Session management
apiGetOnlineUsers.Run();
apiIsUserOnline.Run();
apiKickUser.Run();
}
///
/// Runs all cleanup examples.
///
public override void CleanUpAll()
{
base.CleanUpAll();
// User role
apiDeleteUserRole.Run();
// Membership role
apiRemoveMembershipFromRole.Run();
// Membership user
apiRemoveMembershipFromUser.Run();
// Membership
apiDeleteMembership.Run();
// User on site
apiRemoveUserFromSite.Run();
// User
apiDeleteUser.Run();
// Role
apiDeleteRole.Run();
}
#endregion
#region "API examples - User"
///
/// Creates user. Called when the "Create user" button is pressed.
///
private bool CreateUser()
{
// Create new user object
UserInfo newUser = new UserInfo();
// Set the properties
newUser.FullName = "My new user";
newUser.UserName = "MyNewUser";
newUser.UserEnabled = true;
newUser.UserIsGlobalAdministrator = true;
// Save the user
UserInfoProvider.SetUserInfo(newUser);
return true;
}
///
/// Gets and updates user. Called when the "Get and update user" button is pressed.
/// Expects the CreateUser method to be run first.
///
private bool GetAndUpdateUser()
{
// Get the user
UserInfo updateUser = UserInfoProvider.GetUserInfo("MyNewUser");
if (updateUser != null)
{
// Update the properties
updateUser.FullName = updateUser.FullName.ToLowerCSafe();
// Save the changes
UserInfoProvider.SetUserInfo(updateUser);
return true;
}
return false;
}
///
/// Gets and bulk updates users. Called when the "Get and bulk update users" button is pressed.
/// Expects the CreateUser method to be run first.
///
private bool GetAndBulkUpdateUsers()
{
// Prepare the parameters
string where = "UserName LIKE N'MyNewUser%'";
// Get the data
DataSet users = UserInfoProvider.GetUsers(where, null);
if (!DataHelper.DataSourceIsEmpty(users))
{
// Loop through the individual items
foreach (DataRow userDr in users.Tables[0].Rows)
{
// Create object from DataRow
UserInfo modifyUser = new UserInfo(userDr);
// Update the properties
modifyUser.FullName = modifyUser.FullName.ToUpper();
// Save the changes
UserInfoProvider.SetUserInfo(modifyUser);
}
return true;
}
return false;
}
///
/// Deletes user. Called when the "Delete user" button is pressed.
/// Expects the CreateUser method to be run first.
///
private bool DeleteUser()
{
// Get the user
UserInfo deleteUser = UserInfoProvider.GetUserInfo("MyNewUser");
// Delete the user
UserInfoProvider.DeleteUser(deleteUser);
return (deleteUser != null);
}
private bool AuthenticateUser()
{
// Get the user
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
if (user != null)
{
if (AuthenticationHelper.AuthenticateUser("MyNewUser", "", CMSContext.CurrentSiteName) != null)
{
return true;
}
}
return false;
}
#endregion
#region "API examples - User on site"
///
/// Adds user to site. Called when the "Add user to site" button is pressed.
/// Expects the CreateUser method to be run first.
///
private bool AddUserToSite()
{
// Get the user
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
if (user != null)
{
int userId = user.UserID;
int siteId = CMSContext.CurrentSiteID;
// Save the binding
UserSiteInfoProvider.AddUserToSite(userId, siteId);
return true;
}
return false;
}
///
/// Removes user from site. Called when the "Remove user from site" button is pressed.
/// Expects the AddUserToSite method to be run first.
///
private bool RemoveUserFromSite()
{
// Get the user
UserInfo removeUser = UserInfoProvider.GetUserInfo("MyNewUser");
if (removeUser != null)
{
int siteId = CMSContext.CurrentSiteID;
// Get the binding
UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(removeUser.UserID, siteId);
// Delete the binding
UserSiteInfoProvider.DeleteUserSiteInfo(userSite);
return true;
}
return false;
}
#endregion
#region "API examples - Role"
///
/// Creates role. Called when the "Create role" button is pressed.
///
private bool CreateRole()
{
// Create new role object
RoleInfo newRole = new RoleInfo();
// Set the properties
newRole.DisplayName = "My new role";
newRole.RoleName = "MyNewRole";
newRole.SiteID = CMSContext.CurrentSiteID;
// Save the role
RoleInfoProvider.SetRoleInfo(newRole);
return true;
}
///
/// Gets and updates role. Called when the "Get and update role" button is pressed.
/// Expects the CreateRole method to be run first.
///
private bool GetAndUpdateRole()
{
// Get the role
RoleInfo updateRole = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);
if (updateRole != null)
{
// Update the properties
updateRole.DisplayName = updateRole.DisplayName.ToLowerCSafe();
// Save the changes
RoleInfoProvider.SetRoleInfo(updateRole);
return true;
}
return false;
}
///
/// Gets and bulk updates roles. Called when the "Get and bulk update roles" button is pressed.
/// Expects the CreateRole method to be run first.
///
private bool GetAndBulkUpdateRoles()
{
// Prepare the parameters
string where = "RoleName LIKE N'MyNewRole%'";
// Get the data
DataSet roles = RoleInfoProvider.GetRoles(where, null);
if (!DataHelper.DataSourceIsEmpty(roles))
{
// Loop through the individual items
foreach (DataRow roleDr in roles.Tables[0].Rows)
{
// Create object from DataRow
RoleInfo modifyRole = new RoleInfo(roleDr);
// Update the properties
modifyRole.DisplayName = modifyRole.DisplayName.ToUpper();
// Save the changes
RoleInfoProvider.SetRoleInfo(modifyRole);
}
return true;
}
return false;
}
///
/// Deletes role. Called when the "Delete role" button is pressed.
/// Expects the CreateRole method to be run first.
///
private bool DeleteRole()
{
// Get the role
RoleInfo deleteRole = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);
// Delete the role
RoleInfoProvider.DeleteRoleInfo(deleteRole);
return (deleteRole != null);
}
#endregion
#region "API examples - User role"
///
/// Creates user role. Called when the "Create role" button is pressed.
///
private bool CreateUserRole()
{
// Get role and user objects
RoleInfo role = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
if ((role != null) && (user != 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);
return true;
}
return false;
}
///
/// Deletes user role. Called when the "Delete role" button is pressed.
/// Expects the CreateUserRole method to be run first.
///
private bool DeleteUserRole()
{
// Get role and user objects
RoleInfo role = RoleInfoProvider.GetRoleInfo("MyNewRole", CMSContext.CurrentSiteID);
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
if ((role != null) && (user != null))
{
// Get the user role
UserRoleInfo deleteRole = UserRoleInfoProvider.GetUserRoleInfo(user.UserID, role.RoleID);
// Delete the user role
UserRoleInfoProvider.DeleteUserRoleInfo(deleteRole);
return true;
}
return false;
}
#endregion
#region "API examples - Membership"
///
/// Creates membership. Called when the "Create membership" button is pressed.
///
private bool CreateMembership()
{
// Create new membership object
MembershipInfo newMembership = new MembershipInfo();
// Set the properties
newMembership.MembershipDisplayName = "My new membership";
newMembership.MembershipName = "MyNewMembership";
newMembership.MembershipSiteID = CMSContext.CurrentSiteID;
// Save the membership
MembershipInfoProvider.SetMembershipInfo(newMembership);
return true;
}
///
/// Gets and updates membership. Called when the "Get and update membership" button is pressed.
/// Expects the CreateMembership method to be run first.
///
private bool GetAndUpdateMembership()
{
// Get the membership
MembershipInfo updateMembership = MembershipInfoProvider.GetMembershipInfo("MyNewMembership", CMSContext.CurrentSiteName);
if (updateMembership != null)
{
// Update the properties
updateMembership.MembershipDisplayName = updateMembership.MembershipDisplayName.ToLower();
// Save the changes
MembershipInfoProvider.SetMembershipInfo(updateMembership);
return true;
}
return false;
}
///
/// Gets and bulk updates memberships. Called when the "Get and bulk update memberships" button is pressed.
/// Expects the CreateMembership method to be run first.
///
private bool GetAndBulkUpdateMemberships()
{
// Prepare the parameters
string where = "MembershipName LIKE N'MyNewMembership%'";
// Get the data
DataSet memberships = MembershipInfoProvider.GetMemberships(where, null);
if (!DataHelper.DataSourceIsEmpty(memberships))
{
// Loop through the individual items
foreach (DataRow membershipDr in memberships.Tables[0].Rows)
{
// Create object from DataRow
MembershipInfo modifyMembership = new MembershipInfo(membershipDr);
// Update the properties
modifyMembership.MembershipDisplayName = modifyMembership.MembershipDisplayName.ToUpper();
// Save the changes
MembershipInfoProvider.SetMembershipInfo(modifyMembership);
}
return true;
}
return false;
}
///
/// Deletes membership. Called when the "Delete membership" button is pressed.
/// Expects the CreateMembership method to be run first.
///
private bool DeleteMembership()
{
// Get the membership
MembershipInfo deleteMembership = MembershipInfoProvider.GetMembershipInfo("MyNewMembership", CMSContext.CurrentSiteName);
// Delete the membership
MembershipInfoProvider.DeleteMembershipInfo(deleteMembership);
return (deleteMembership != null);
}
///
/// Adds membership to role. Called when the "Add membership to role" button is pressed.
///
private bool AddMembershipToRole()
{
// 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.AddMembershipToRole(membership.MembershipID, role.RoleID);
return true;
}
return false;
}
///
/// Removes membership from role. Called when the "Remove membership from role" button is pressed.
///
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;
}
///
/// Adds membership to user. Called when the "Add membership to user" button is pressed.
///
private bool AddMembershipToUser()
{
// Get role and user objects
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
MembershipInfo membership = MembershipInfoProvider.GetMembershipInfo("MyNewMembership", CMSContext.CurrentSiteName);
if ((user != null) && (membership != null))
{
MembershipUserInfoProvider.AddMembershipToUser(membership.MembershipID, user.UserID, DateTime.Now.AddMinutes(3));
return true;
}
return false;
}
///
/// Removes membership from user. Called when the "Remove membership from user" button is pressed.
///
private bool RemoveMembershipFromUser()
{
// Get role and user objects
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
MembershipInfo membership = MembershipInfoProvider.GetMembershipInfo("MyNewMembership", CMSContext.CurrentSiteName);
if ((user != null) && (membership != null))
{
MembershipUserInfoProvider.RemoveMembershipFromUser(membership.MembershipID, user.UserID);
return true;
}
return false;
}
#endregion
#region "API examples - Session management"
///
/// Gets and bulk updates on-line users. Called when the "Get and bulk update on-line users" button is pressed.
///
private bool GetOnlineUsers()
{
string where = "";
int topN = 10;
string orderBy = "";
string location = "";
string siteName = CMSContext.CurrentSiteName;
bool includeHidden = true;
bool includeKicked = false;
// Get DataSet of online users
DataSet users = SessionManager.GetOnlineUsers(where, orderBy, topN, location, siteName, includeHidden, includeKicked);
if (!DataHelper.DataSourceIsEmpty(users))
{
foreach (DataRow userDr in users.Tables[0].Rows)
{
// Create object from DataRow
UserInfo modifyUser = new UserInfo(userDr);
// Update the properties
modifyUser.FullName = modifyUser.FullName.ToUpper();
// Save the changes
UserInfoProvider.SetUserInfo(modifyUser);
}
return true;
}
return false;
}
///
/// Checks if user is online. Called when the "Is user on-line?" button is pressed.
///
private bool IsUserOnline()
{
bool includeHidden = true;
// Get user and site objects
UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser");
SiteInfo site = SiteInfoProvider.GetSiteInfo(CMSContext.CurrentSiteName);
if ((user != null) && (site != null))
{
// Check if user is online
return SessionManager.IsUserOnline(site.SiteName, user.UserID, includeHidden);
}
return false;
}
///
/// Kicks on-line user. Called when the "Kick user" button is pressed.
///
private bool KickUser()
{
// Get the user
UserInfo kickedUser = UserInfoProvider.GetUserInfo(CMSContext.CurrentUser.UserID);
if (kickedUser != null)
{
// Kick the user
SessionManager.KickUser(kickedUser.UserID);
return true;
}
return false;
}
#endregion
}