From: <ro...@us...> - 2006-08-01 17:15:50
|
Revision: 250 Author: rouquin Date: 2006-08-01 10:15:42 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/tcdb/?rev=250&view=rev Log Message: ----------- Added some rights to the user settings/preferences pages. Modified Paths: -------------- Design/Rights.txt Website/Includes/AssignmentsTree.ascx.cs Website/Includes/Header_User.ascx Website/Includes/UserConfig.ascx.cs Website/Includes/UserSettings.ascx Website/Includes/UserSettings.ascx.cs Modified: Design/Rights.txt =================================================================== --- Design/Rights.txt 2006-08-01 16:00:31 UTC (rev 249) +++ Design/Rights.txt 2006-08-01 17:15:42 UTC (rev 250) @@ -56,6 +56,19 @@ delete_user (not self) +User Preferences +----------------- +view_my_preferences +edit_my_preferences + +Roles +------ +view_my_roles +view_other_roles + +edit_my_roles +edit_other_roles + Administration --------------- view_admin @@ -76,7 +89,11 @@ create_my_wo edit_my_settings +view_my_roles +view_my_preferences +edit_my_preferences + Action Item Creator ------------------- view_my_created_ai Modified: Website/Includes/AssignmentsTree.ascx.cs =================================================================== --- Website/Includes/AssignmentsTree.ascx.cs 2006-08-01 16:00:31 UTC (rev 249) +++ Website/Includes/AssignmentsTree.ascx.cs 2006-08-01 17:15:42 UTC (rev 250) @@ -101,7 +101,7 @@ TreeNode node = AssignmentTree.SelectedNode; node.Selected = false; - if (AssignmentTree.ShowExpandCollapse == false) + /*if (AssignmentTree.ShowExpandCollapse == false) { if (node.Expanded == true) node.Collapse(); @@ -109,7 +109,7 @@ node.Expand(); } else - { + {*/ switch (node.Depth) { case 0: @@ -124,7 +124,7 @@ default: break; } - } + // } } protected void AssignmentTree_TreeNodePopulate(object sender, TreeNodeEventArgs e) { @@ -156,6 +156,9 @@ foreach (tcdbDataSet.db_productsRow row in pTable) { + if (row.name == "Site" && !m_user.HasRight("view_admin")) + continue; + TreeNode child = new TreeNode(); child.Text = row.name; child.Value = row.productID.ToString(); Modified: Website/Includes/Header_User.ascx =================================================================== --- Website/Includes/Header_User.ascx 2006-08-01 16:00:31 UTC (rev 249) +++ Website/Includes/Header_User.ascx 2006-08-01 17:15:42 UTC (rev 250) @@ -1,8 +1,12 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Header_User.ascx.cs" Inherits="Header_User" %> <%@ Import Namespace="TCDB.Common" %> -Welcome <div class="username"><%= m_user.FIRSTNAME %> <%= m_user.LASTNAME %></div> (<asp:LoginStatus ID="LoginStatus" runat="server" OnLoggingOut="LoginStatus_LoggingOut" CssClass="username" />) | <a +Welcome <div class="username"><%= m_user.FIRSTNAME %> <%= m_user.LASTNAME %></div> (<asp:LoginStatus ID="LoginStatus" runat="server" OnLoggingOut="LoginStatus_LoggingOut" CssClass="username" />) +<% if (m_user.HasRight("view_my_settings", Constants.PRODUCT_ANYID)) + { %> + | <a href="UserSettings.aspx?mode=read&<%= Constants.CODE_USER %>=<%= m_user.ID %>" >Settings</a> +<% }%> <% if (m_user.HasRight("view_admin", Constants.PRODUCT_ANYID)) { %> | <a href="Administration.aspx">Admin</a> Modified: Website/Includes/UserConfig.ascx.cs =================================================================== --- Website/Includes/UserConfig.ascx.cs 2006-08-01 16:00:31 UTC (rev 249) +++ Website/Includes/UserConfig.ascx.cs 2006-08-01 17:15:42 UTC (rev 250) @@ -26,12 +26,16 @@ { if (!m_user.ISAUTHENTICATED) { return; } + if (!m_user.HasRight("view_my_preferences", Constants.PRODUCT_ANYID)) + Response.Redirect("~/UserSettings.aspx?" + Constants.CODE_USER + "=" + m_user.ID); + m_logg.Debug("Loading page UserConfig"); if (userID == 0) { m_logg.Debug("Unable to locate user ID in query string. Default to current user"); userID = m_user.ID; } + bool enabled = m_user.HasRight("edit_my_preferences", Constants.PRODUCT_ANYID); Dictionary<String, List<Config>> settings = ConfigDB.GetUserSettings(); @@ -84,6 +88,7 @@ valueBox.Text = m_user.GetConfigString(setting.KEY); valueBox.Width = 500; valueBox.TextChanged += new EventHandler(textboxChanged); + valueBox.Enabled = enabled; Controls.Add(valueBox); } else if (setting.TYPE == "bool") @@ -92,6 +97,7 @@ valueBox.ID = setting.KEY; valueBox.Checked = m_user.GetConfigBool(setting.KEY); valueBox.CheckedChanged += new EventHandler(checkboxChanged); + valueBox.Enabled = enabled; Controls.Add(valueBox); } else if (setting.TYPE == "dropdown") @@ -104,6 +110,7 @@ valueList.SelectedValue = m_user.GetConfigString(setting.KEY); } valueList.SelectedIndexChanged += new EventHandler(dropdownChanged); + valueList.Enabled = enabled; Controls.Add(valueList); } else if (setting.TYPE == "textarea") @@ -115,6 +122,7 @@ valueBox.Width = 500; valueBox.Height = 150; valueBox.TextChanged += new EventHandler(textboxChanged); + valueBox.Enabled = enabled; Controls.Add(valueBox); } else if (setting.TYPE == "label") @@ -133,18 +141,21 @@ dateType.ID = setting.KEY; dateType.Items.Add("Absolute"); dateType.Items.Add("Relative"); + dateType.Enabled = enabled; // Absolute Date CalendarPopup absDate = new CalendarPopup(); absDate.ID = setting.KEY + "_abs"; absDate.ShowGoToToday = true; absDate.DateChanged += new EventHandler(absoluteDateChanged); + absDate.Enabled = enabled; // Relative Date TextBox relDate = new TextBox(); relDate.ID = setting.KEY + "_rel"; relDate.Text = "0"; relDate.TextChanged += new EventHandler(relativeDateChanged); + relDate.Enabled = enabled; if (dateString.StartsWith("r: ")){ dateType.SelectedValue = "Relative"; Modified: Website/Includes/UserSettings.ascx =================================================================== --- Website/Includes/UserSettings.ascx 2006-08-01 16:00:31 UTC (rev 249) +++ Website/Includes/UserSettings.ascx 2006-08-01 17:15:42 UTC (rev 250) @@ -90,9 +90,9 @@ <div class="left"> <asp:LinkButton ID="New" runat="server" CommandName="New" OnLoad="newButton_Load">New</asp:LinkButton><asp:Label runat="server" ID="newLabel" OnLoad="newLabel_Load"> | </asp:Label> - <asp:LinkButton ID="Edit" runat="server" CommandName="Edit">Edit User</asp:LinkButton> - <!-- ***NONPRODUCTION*** | - <asp:LinkButton ID="editConfig" runat="server" CommandName="editConfig" OnCommand="editConfig">Preferences</asp:LinkButton> --> + <asp:LinkButton ID="Edit" runat="server" CommandName="Edit" OnInit="Edit_Init">Edit User</asp:LinkButton> + | + <asp:LinkButton ID="editConfig" runat="server" CommandName="editConfig" OnCommand="editConfig" OnInit="editConfig_Init">Preferences</asp:LinkButton> <asp:Label runat="server" ID="deleteLabel" OnLoad="deleteLabel_Load"> | </asp:Label><asp:LinkButton ID="Delete" runat="server" CommandName="Delete" OnLoad="deleteButton_Load">Delete</asp:LinkButton> </div> @@ -172,7 +172,7 @@ <div class="item"><label>Roles:</label></div> <div class="item"> <asp:TreeView ID="roleTree" runat="server" OnInit="roleTreeEdit_Init" OnTreeNodePopulate="roleTree_TreeNodePopulate" - ShowCheckBoxes="All" OnSelectedNodeChanged="roleTree_SelectedNodeChanged" ShowExpandCollapse="false"> + ShowCheckBoxes="All" OnSelectedNodeChanged="roleTree_SelectedNodeChanged" ShowExpandCollapse="false" OnTreeNodeCheckChanged="roleTree_TreeNodeCheckChanged"> <Nodes> <asp:TreeNode Text="" Value="Roles" PopulateOnDemand="True" ShowCheckBox="false" /> Modified: Website/Includes/UserSettings.ascx.cs =================================================================== --- Website/Includes/UserSettings.ascx.cs 2006-08-01 16:00:31 UTC (rev 249) +++ Website/Includes/UserSettings.ascx.cs 2006-08-01 17:15:42 UTC (rev 250) @@ -16,8 +16,6 @@ using AD_Auth; using log4net; -// TODO: Enable Roles and user configuration settings page - public partial class UserSettings : SiteUserControl { private static ILog m_logg = LogManager.GetLogger("Page:UserSettings"); @@ -28,6 +26,8 @@ protected void Page_Load(object sender, EventArgs e) { if (!m_user.ISAUTHENTICATED) { return; } + if (!m_user.HasRight("view_my_settings", Constants.PRODUCT_ANYID)) + Response.Redirect("~/Assignments.aspx?" + Constants.CODE_USER + "=" + m_user.ID); m_logg.Debug("Loading page UserSettings"); if (userID == 0) @@ -38,7 +38,7 @@ Session.Add("userID", userID); Session.Add("tableName", "tcdb_user"); - if (mode == "new") + if (mode == "new" && m_user.HasRight("create_user",Constants.PRODUCT_ANYID)) UserSettingsView.ChangeMode(FormViewMode.Insert); } @@ -114,6 +114,24 @@ protected void updateRoles() { + tcdbDataSetTableAdapters.db_roleUserProductTableAdapter rupAdapter = new tcdbDataSetTableAdapters.db_roleUserProductTableAdapter(); + Dictionary<String, ArrayList> ProductRoles = (Dictionary<String, ArrayList>)Session["ProductRoles"]; + + // Clear roles + rupAdapter.upd_userRoleProduct(userID, null, null, false); + + // Update roles + foreach (String product in ProductRoles.Keys) + { + int productID = Convert.ToInt32(product); + + foreach (String role in ProductRoles[product]) + { + int roleID = Convert.ToInt32(role); + + rupAdapter.ins_userRoleProduct(userID, roleID, productID); + } + } } protected void SyncWithAD(object sender, CommandEventArgs e) @@ -202,57 +220,13 @@ protected void roleTreeView_Init(object sender, EventArgs e) { Literal roleTree = (Literal)sender; - roleTree.ID = "roleTree"; - roleTree.Text = "<ul>\n"; - // Initialize Product Roles - if (Session["ProductRoles"] == null) - Session.Add("ProductRoles", new Dictionary<String, ArrayList>()); - Dictionary<String, ArrayList> ProductRoles = (Dictionary<String, ArrayList>)Session["ProductRoles"]; - ProductRoles.Clear(); - - // Get products - tcdbDataSetTableAdapters.db_productsTableAdapter pAdapter = new tcdbDataSetTableAdapters.db_productsTableAdapter(); - tcdbDataSet.db_productsDataTable pTable = pAdapter.GetData(null, null); - - foreach (tcdbDataSet.db_productsRow pRow in pTable) + if (m_user.HasRight("view_my_roles", Constants.PRODUCT_ANYID)) { - // Get Roles - tcdbDataSetTableAdapters.db_roleUserProductTableAdapter rupAdapter = new tcdbDataSetTableAdapters.db_roleUserProductTableAdapter(); - tcdbDataSet.db_roleUserProductDataTable rupTable = rupAdapter.GetData(userID, pRow.productID, true); - ArrayList roles = new ArrayList(); + roleTree.Visible = true; + roleTree.ID = "roleTree"; + roleTree.Text = "<ul>\n"; - foreach (tcdbDataSet.db_roleUserProductRow rupRow in rupTable) - roles.Add(rupRow.roleName); - - if (roles.Count > 0) - ProductRoles[pRow.name] = roles; - } - - // Setup list - foreach (String product in ProductRoles.Keys) - { - roleTree.Text += "\t<li><strong>" + product + "</strong>\n"; - roleTree.Text += "\t\t<ul>\n"; - - foreach (String role in ProductRoles[product]) - roleTree.Text += "\t\t\t<li>" + role + "</li>\n"; - - roleTree.Text += "\t\t</ul>\n"; - roleTree.Text += "\t</li>\n"; - } - - roleTree.Text += "</ul>\n"; - } - - protected void roleTreeEdit_Init(object sender, EventArgs e) - { - TreeView roleTree = (TreeView)sender; - - // Only display the rights tree if the user has permissions to access this - if (m_user.HasRight(Constants.RIGHTS_ASSIGNPERMISSION) || m_user.HasRight(Constants.RIGHTS_SITEADMIN)) - { - roleTree.Visible = true; // Initialize Product Roles if (Session["ProductRoles"] == null) Session.Add("ProductRoles", new Dictionary<String, ArrayList>()); @@ -271,15 +245,65 @@ ArrayList roles = new ArrayList(); foreach (tcdbDataSet.db_roleUserProductRow rupRow in rupTable) - roles.Add(rupRow.roleID.ToString()); + roles.Add(rupRow.roleName); if (roles.Count > 0) - ProductRoles[pRow.productID.ToString()] = roles; + ProductRoles[pRow.name] = roles; } + + // Setup list + foreach (String product in ProductRoles.Keys) + { + roleTree.Text += "\t<li><strong>" + product + "</strong>\n"; + roleTree.Text += "\t\t<ul>\n"; + + foreach (String role in ProductRoles[product]) + roleTree.Text += "\t\t\t<li>" + role + "</li>\n"; + + roleTree.Text += "\t\t</ul>\n"; + roleTree.Text += "\t</li>\n"; + } + + roleTree.Text += "</ul>\n"; } else + roleTree.Visible = false; + + } + + protected void roleTreeEdit_Init(object sender, EventArgs e) + { + TreeView roleTree = (TreeView)sender; + + // Only display the rights tree if the user has permissions to access this + if (!m_user.HasRight("view_my_roles", Constants.PRODUCT_ANYID)) + roleTree.Visible = false; + + if (!m_user.HasRight("edit_my_roles", Constants.PRODUCT_ANYID)) + roleTree.Enabled = false; + + // Initialize Product Roles + if (Session["ProductRoles"] == null) + Session.Add("ProductRoles", new Dictionary<String, ArrayList>()); + Dictionary<String, ArrayList> ProductRoles = (Dictionary<String, ArrayList>)Session["ProductRoles"]; + ProductRoles.Clear(); + + // Get products + tcdbDataSetTableAdapters.db_productsTableAdapter pAdapter = new tcdbDataSetTableAdapters.db_productsTableAdapter(); + tcdbDataSet.db_productsDataTable pTable = pAdapter.GetData(null, null); + + foreach (tcdbDataSet.db_productsRow pRow in pTable) { - roleTree.Visible = false; + // Get Roles + tcdbDataSetTableAdapters.db_roleUserProductTableAdapter rupAdapter = new tcdbDataSetTableAdapters.db_roleUserProductTableAdapter(); + tcdbDataSet.db_roleUserProductDataTable rupTable = rupAdapter.GetData(userID, pRow.productID, true); + ArrayList roles = new ArrayList(); + + foreach (tcdbDataSet.db_roleUserProductRow rupRow in rupTable) + roles.Add(rupRow.roleID.ToString()); + + if (roles.Count > 0) + ProductRoles[pRow.productID.ToString()] = roles; } } @@ -392,4 +416,17 @@ roleTree_TreeNodeCheckChanged(child, new TreeNodeEventArgs(child)); } } + protected void Edit_Init(object sender, EventArgs e) + { + LinkButton editBtn = (LinkButton) sender; + if (!m_user.HasRight("edit_my_settings", Constants.PRODUCT_ANYID)) + editBtn.Visible = false; + } + protected void editConfig_Init(object sender, EventArgs e) + { + LinkButton editConfigBtn = (LinkButton) sender; + + if (!m_user.HasRight("view_my_preferences", Constants.PRODUCT_ANYID)) + editConfigBtn.Visible = false; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |