using System;
using System.Web.UI.WebControls;
using System.Data;
using CMS.CMSHelper;
using CMS.FormEngine;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.UIControls;
public partial class CMSModules_BizForms_Tools_BizForm_Edit_Security : CMSBizFormPage
{
protected int formId = 0;
protected void Page_Load(object sender, EventArgs e)
{
// Check 'ReadForm' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "ReadForm"))
{
RedirectToCMSDeskAccessDenied("cms.form", "ReadForm");
}
// Get form id from url
formId = QueryHelper.GetInteger("formid", 0);
// Control initialization
addRoles.FormID = formId;
addRoles.CurrentSelector.IsLiveSite = false;
addRoles.Changed += addRoles_Changed;
addRoles.ShowSiteFilter = false;
BizFormInfo bfi = BizFormInfoProvider.GetBizFormInfo(formId);
EditedObject = bfi;
if (!RequestHelper.IsPostBack())
{
// Load data
if (bfi != null)
{
radAllUsers.Checked = (bfi.FormAccess == FormAccessEnum.AllBizFormUsers);
radOnlyRoles.Checked = !radAllUsers.Checked;
// Load list with allowed roles
LoadRoles();
}
}
else
{
if (addRoles.CurrentSelector.Enabled)
{
DataSet ds = BizFormInfoProvider.GetFormAuthorizedRoles(formId);
addRoles.CurrentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "RoleID"));
}
}
}
///
/// On Add roles changed event.
///
private void addRoles_Changed(object sender, EventArgs e)
{
LoadRoles();
pnlUpdate.Update();
}
protected void btnRemoveRole_Click(object sender, EventArgs e)
{
// Check 'EditForm' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm"))
{
RedirectToCMSDeskAccessDenied("cms.form", "EditForm");
}
foreach (ListItem item in lstRoles.Items)
{
if (item.Selected)
{
// Remove role-form association from database
BizFormInfoProvider.RemoveRoleFromForm(Convert.ToInt32(item.Value), formId);
}
}
LoadRoles();
}
protected void btnOk_Click(object sender, EventArgs e)
{
// Check 'EditForm' permission
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm"))
{
RedirectToCMSDeskAccessDenied("cms.form", "EditForm");
}
BizFormInfo form = BizFormInfoProvider.GetBizFormInfo(formId);
if (form != null)
{
if (radAllUsers.Checked)
{
form.FormAccess = FormAccessEnum.AllBizFormUsers;
BizFormInfoProvider.RemoveAllRolesFromForm(formId);
form.ClearAuthorizedRoles();
lstRoles.Items.Clear();
}
else
{
form.FormAccess = FormAccessEnum.OnlyAuthorizedRoles;
}
BizFormInfoProvider.SetBizFormInfo(form);
ShowChangesSaved();
}
}
protected void radOnlyRoles_CheckedChanged(object sender, EventArgs e)
{
LoadRoles();
}
private void SetFormControls()
{
// Disable add/remove for unauthorized users
bool authorized = CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm");
addRoles.CurrentSelector.Enabled = radOnlyRoles.Checked && authorized;
btnRemoveRole.Enabled = radOnlyRoles.Checked && authorized;
lstRoles.Enabled = radOnlyRoles.Checked;
}
///
/// Loads list of roles authorized for form access.
///
protected void LoadRoles()
{
DataSet ds = BizFormInfoProvider.GetFormAuthorizedRoles(formId);
addRoles.CurrentSelector.Value = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "RoleID"));
lstRoles.Items.Clear();
foreach (DataRow dr in ds.Tables[0].Rows)
{
string name = Convert.ToString(dr["RoleDisplayName"]);
if (ValidationHelper.GetInteger(dr["SiteID"], 0) == 0)
{
name += " " + GetString("general.global");
}
lstRoles.Items.Add(new ListItem(name, Convert.ToString(dr["RoleID"])));
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// Disable add/remove for unauthorized users
bool authorized = CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm");
addRoles.CurrentSelector.Enabled = radOnlyRoles.Checked && authorized;
btnRemoveRole.Enabled = radOnlyRoles.Checked && authorized;
lstRoles.Enabled = radOnlyRoles.Checked;
}
}