using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace ASPNetPortal {
public class ManageUsers : System.Web.UI.Page {
protected System.Web.UI.WebControls.TextBox Email;
protected System.Web.UI.WebControls.TextBox Password;
protected System.Web.UI.WebControls.DropDownList allRoles;
protected System.Web.UI.WebControls.LinkButton addExisting;
protected System.Web.UI.WebControls.DataList userRoles;
protected System.Web.UI.WebControls.LinkButton saveBtn;
protected System.Web.UI.HtmlControls.HtmlGenericControl title;
protected System.Web.UI.WebControls.LinkButton UpdateUserBtn;
int userId = -1;
String userName = "";
int tabIndex = 0;
int tabId = 0;
//*******************************************************
//
// The Page_Load server event handler on this page is used
// to populate the role information for the page
//
//*******************************************************
private void Page_Load(object sender, System.EventArgs e) {
// Verify that the current user has access to access this page
if (PortalSecurity.IsInRoles("Admins") == false) {
Response.Redirect("~/Admin/EditAccessDenied.aspx");
}
// Calculate userid
if (Request.Params["userid"] != null) {
userId = Int32.Parse(Request.Params["userid"]);
}
if (Request.Params["username"] != null) {
userName = (String)Request.Params["username"];
}
if (Request.Params["tabid"] != null) {
tabId = Int32.Parse(Request.Params["tabid"]);
}
if (Request.Params["tabindex"] != null) {
tabIndex = Int32.Parse(Request.Params["tabindex"]);
}
// If this is the first visit to the page, bind the role data to the datalist
if (Page.IsPostBack == false) {
// new user?
if (userName == "") {
UsersDB users = new UsersDB();
// make a unique new user record
int uid = -1;
int i = 0;
while (uid == -1) {
String friendlyName = "New User created " + DateTime.Now.ToString();
userName = "New User" + i.ToString();
uid = users.AddUser(friendlyName, userName, "");
i++;
}
// redirect to this page with the corrected querystring args
Response.Redirect("~/Admin/ManageUsers.aspx?userId=" + uid + "&username=" + userName + "&tabindex=" + tabIndex + "&tabid=" + tabId);
}
BindData();
}
}
//*******************************************************
//
// The Save_Click server event handler on this page is used
// to save the current security settings to the configuration system
//
//*******************************************************
private void Save_Click(Object Sender, EventArgs e) {
// Obtain PortalSettings from Current Context
PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"];
// Navigate back to admin page
Response.Redirect("~/DesktopDefault.aspx?tabindex=" + tabIndex + "&tabid=" + tabId);
}
//*******************************************************
//
// The AddRole_Click server event handler is used to add
// the user to this security role
//
//*******************************************************
private void AddRole_Click(Object sender, EventArgs e) {
int roleId;
//get user id from dropdownlist of existing users
roleId = Int32.Parse(allRoles.SelectedItem.Value);
// Add a new userRole to the database
AdminDB admin = new AdminDB();
admin.AddUserRole(roleId, userId);
// Rebind list
BindData();
}
//*******************************************************
//
// The UpdateUser_Click server event handler is used to add
// the update the user settings
//
//*******************************************************
private void UpdateUser_Click(Object sender, EventArgs e) {
// update the user record in the database
UsersDB users = new UsersDB();
users.UpdateUser(userId, Email.Text, Password.Text);
// redirect to this page with the corrected querystring args
Response.Redirect("~/Admin/ManageUsers.aspx?userId=" + userId + "&username=" + Email.Text + "&tabindex=" + tabIndex + "&tabid=" + tabId);
}
//*******************************************************
//
// The UserRoles_ItemCommand server event handler on this page
// is used to handle deleting the user from roles
// from the userRoles asp:datalist control
//
//*******************************************************
private void UserRoles_ItemCommand(object sender, DataListCommandEventArgs e) {
AdminDB admin = new AdminDB();
int roleId = (int) userRoles.DataKeys[e.Item.ItemIndex];
// update database
admin.DeleteUserRole(roleId, userId);
// Ensure that item is not editable
userRoles.EditItemIndex = -1;
// Repopulate list
BindData();
}
//*******************************************************
//
// The BindData helper method is used to bind the list of
// security roles for this portal to an asp:datalist server control
//
//*******************************************************
private void BindData() {
// Bind the Email and Password
UsersDB users = new UsersDB();
SqlDataReader dr = users.GetSingleUser(userName);
// Read first row from database
dr.Read();
Email.Text = (String) dr["Email"];
Password.Text = (String) dr["Password"];
dr.Close();
// add the user name to the title
if (userName != "") {
title.InnerText = "Manage User: " + userName;
}
// bind users in role to DataList
userRoles.DataSource = users.GetRolesByUser(userName);
userRoles.DataBind();
// Obtain PortalSettings from Current Context
PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"];
// Get the portal's roles from the database
AdminDB admin = new AdminDB();
// bind all portal roles to dropdownlist
allRoles.DataSource = admin.GetPortalRoles(portalSettings.PortalId);
allRoles.DataBind();
}
public ManageUsers() {
Page.Init += new System.EventHandler(Page_Init);
}
private void Page_Init(object sender, EventArgs e) {
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
}
#region Web Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent() {
this.userRoles.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.UserRoles_ItemCommand);
this.saveBtn.Click += new System.EventHandler(this.Save_Click);
this.UpdateUserBtn.Click += new System.EventHandler(this.UpdateUser_Click);
this.addExisting.Click += new System.EventHandler(this.AddRole_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}