File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/CMSModules/Membership/Controls/Roles/RoleEdit.ascx.cs
using System;
using CMS.Helpers;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.ExtendedControls;
using CMS.DataEngine;
public partial class CMSModules_Membership_Controls_Roles_RoleEdit : CMSAdminEditControl
{
#region "Private Variables"
private int mSiteId;
private int mGroupId;
private int mRoleId;
private Guid mGroupGuid = Guid.Empty;
private bool mGlobalRole;
#endregion
#region "Public properties"
/// <summary>
/// Gets or sets the group GUID.
/// </summary>
public Guid GroupGUID
{
get
{
return mGroupGuid;
}
set
{
mGroupGuid = value;
}
}
/// <summary>
/// Indicates whether the role is global (independent on site).
/// </summary>
public bool GlobalRole
{
get
{
return mGlobalRole;
}
set
{
mGlobalRole = value;
}
}
/// <summary>
/// Gets or sets the group ID for which the roles should be displayed (0 means all groups).
/// </summary>
public int GroupID
{
get
{
return mGroupId;
}
set
{
mGroupId = value;
}
}
/// <summary>
/// Gets or sets the site ID for which the roles should be displayed.
/// </summary>
public int SiteID
{
get
{
return mSiteId;
}
set
{
mSiteId = value;
}
}
/// <summary>
/// Gets the role ID of currently processed role.
/// </summary>
public int RoleID
{
get
{
return mRoleId;
}
set
{
mRoleId = value;
}
}
/// <summary>
/// Messages placeholder
/// </summary>
public override MessagesPlaceHolder MessagesPlaceHolder
{
get
{
return plcMess;
}
}
/// <summary>
/// Indicates if control is used on live site.
/// </summary>
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
plcMess.IsLiveSite = value;
base.IsLiveSite = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
// Do not edit code name in simple mode
if (DisplayMode == ControlDisplayModeEnum.Simple)
{
plcCodeName.Visible = false;
}
rfvCodeName.ErrorMessage = GetString("general.requirescodename");
rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");
txtRoleDisplayName.IsLiveSite = IsLiveSite;
txtDescription.IsLiveSite = IsLiveSite;
if (GroupID > 0)
{
plcIsPublic.Visible = true;
}
ReloadData(false);
}
/// <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.IsGlobalAdministrator && !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;
}
}
/// <summary>
/// Loads data of edited role from DB into TextBoxes.
/// </summary>
protected void LoadData(RoleInfo ri)
{
txtRoleCodeName.Text = ri.RoleName;
txtRoleDisplayName.Text = ri.DisplayName;
txtDescription.Text = ri.Description;
chkIsAdmin.Checked = ri.RoleIsGroupAdministrator;
chkIsDomain.Checked = ri.RoleIsDomain;
}
/// <summary>
/// Saves data of edited role from TextBoxes into DB.
/// </summary>
protected void btnOK_Click(object sender, EventArgs e)
{
if (!CheckPermissions("cms.roles", PERMISSION_MODIFY))
{
return;
}
// Generate code name in simple mode
string codeName = txtRoleCodeName.Text.Trim();
string displayName = txtRoleDisplayName.Text.Trim();
// Check whether required fields are not empty
string errorMessage = new Validator().NotEmpty(displayName, GetString("general.requiresdisplayname"))
.NotEmpty(codeName, GetString("general.requirescodename"))
.IsCodeName(codeName, GetString("general.invalidcodename")).Result;
if (errorMessage == string.Empty)
{
txtRoleCodeName.Text = codeName;
txtRoleDisplayName.Text = displayName;
if (GlobalRole && MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin))
{
RoleInfo ri = RoleInfoProvider.GetExistingRoleInfo(codeName, 0);
if ((ri == null) || (ri.RoleID == ItemID) || (codeName == InfoHelper.CODENAME_AUTOMATIC))
{
SaveRole(ri, codeName, displayName);
}
else
{
ShowError(GetString("Administration-Role_New.RoleExists"));
}
}
else
{
SiteInfo si = SiteInfoProvider.GetSiteInfo(SiteID);
if (si != null)
{
// Check unique name
RoleInfo ri = (GroupID > 0) ? RoleInfoProvider.GetExistingRoleInfo(codeName, si.SiteID, GroupID) : RoleInfoProvider.GetExistingRoleInfo(codeName, si.SiteID);
if ((ri == null) || (ri.RoleID == ItemID) || (codeName == InfoHelper.CODENAME_AUTOMATIC))
{
SaveRole(ri, codeName, displayName);
}
else
{
ShowError(GetString("Administration-Role_New.RoleExists"));
}
}
}
}
else
{
ShowError(errorMessage);
}
}
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, displayName);
}
// 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();
}
}
}