⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit_user.aspx

📁 Bug管理系统
💻 ASPX
📖 第 1 页 / 共 2 页
字号:
<%@ Page language="C#"%>
<!--
Copyright 2002-2005 Corey Trager
Distributed under the terms of the GNU General Public License
-->
<!-- #include file = "inc.aspx" -->

<script language="C#" runat="server">

int id;
String sql;

DbUtil dbutil;
Security security;


///////////////////////////////////////////////////////////////////////
void Page_Load(Object sender, EventArgs e)
{

	Util.do_not_cache(Response);
	dbutil = new DbUtil();
	security = new Security();
	security.check_security(dbutil, Request, Response, Security.MUST_BE_ADMIN);

	title.InnerText = Util.get_setting("AppTitle","BugTracker.NET") + " - " 
		+ "edit user";

	msg.InnerText = "";

	string var = Request.QueryString["id"];
	if (var == null)
	{
		id = 0;
	}
	else
	{
		id = Convert.ToInt32(var);
	}

	if (!IsPostBack)
	{

		sql = @"select qu_id, qu_desc 
			from queries 
			where isnull(qu_user,0) = 0 
			or isnull(qu_user,0) = $us
			order by qu_desc";
			
		sql = sql.Replace("$us",Convert.ToString(id));

		query.DataSource = dbutil.get_dataview(sql);
		query.DataTextField = "qu_desc";
		query.DataValueField = "qu_id";
		query.DataBind();

		sql = @"select pj_id, pj_name, isnull(pu_auto_subscribe,0) [pu_auto_subscribe]
			from projects 
			left outer join project_user_xref on pj_id = pu_project and $us = pu_user
			order by pj_name";

		sql = sql.Replace("$us", Convert.ToString(id));

		DataView projects_dv = dbutil.get_dataview(sql);

		project_auto_subscribe.DataSource = projects_dv;
		project_auto_subscribe.DataTextField = "pj_name";
		project_auto_subscribe.DataValueField = "pj_id";
		project_auto_subscribe.DataBind();


		// add or edit?
		if (id == 0)
		{
			sub.Value = "Create";
			bugs_per_page.Value = "10";
			active.Checked = true;
			enable_notifications.Checked = true;

		}
		else
		{
		
			sub.Value = "Update";

			// Get this entry's data from the db and fill in the form

			sql = @"select
				us_username,
				isnull(us_firstname,'') [us_firstname],
				isnull(us_lastname,'') [us_lastname],
				isnull(us_bugs_per_page,10) [us_bugs_per_page],
				isnull(us_email,'') [us_email],
				us_active,
				us_admin,
				us_enable_notifications,
				us_only_new_bug_notifications,
				us_send_notifications_to_self,
				us_only_status_change_notifications,
				us_auto_subscribe,
				us_auto_subscribe_own_bugs,
				us_auto_subscribe_reported_bugs,
				us_default_query
				from users
				where us_id = $id";

			sql = sql.Replace("$id", Convert.ToString(id));

			DataRow dr = dbutil.get_datarow(sql);

			// Fill in this form
			username.Value = (string) dr["us_username"];
			firstname.Value = (string) dr["us_firstname"];
			lastname.Value = (string) dr["us_lastname"];
			bugs_per_page.Value = Convert.ToString(dr["us_bugs_per_page"]);
			email.Value = (string) dr["us_email"];
			active.Checked = Convert.ToBoolean((int) dr["us_active"]);
			admin.Checked = Convert.ToBoolean((int) dr["us_admin"]);
			enable_notifications.Checked = Convert.ToBoolean((int) dr["us_enable_notifications"]);
			only_new_bug_notifications.Checked = Convert.ToBoolean((int) dr["us_only_new_bug_notifications"]);
			send_to_self.Checked = Convert.ToBoolean((int) dr["us_send_notifications_to_self"]);
			only_status_changes.Checked = Convert.ToBoolean((int) dr["us_only_status_change_notifications"]);
			auto_subscribe.Checked = Convert.ToBoolean((int) dr["us_auto_subscribe"]);
			auto_subscribe_own.Checked = Convert.ToBoolean((int) dr["us_auto_subscribe_own_bugs"]);
			auto_subscribe_reported.Checked = Convert.ToBoolean((int) dr["us_auto_subscribe_reported_bugs"]);

			foreach (ListItem li in query.Items)
			{
				if (Convert.ToInt32(li.Value) == (int) dr["us_default_query"])
				{
					li.Selected = true;
					break;
				}
			}
			
			// select projects
			foreach (DataRowView drv in projects_dv)
			{
				foreach (ListItem li in project_auto_subscribe.Items)
				{
					if (Convert.ToInt32(li.Value) == (int) drv["pj_id"])
					{
						if ((int) drv["pu_auto_subscribe"] == 1)
						{
							li.Selected = true;
						}
						else
						{
							li.Selected = false;
						}
					}
				}
			}
			
			permissions_href.HRef = "edit_user_permissions.aspx?id=" + Convert.ToString(id) 
				+ "&label=" + HttpUtility.UrlEncode(username.Value);

		}
	}

}

void Page_Unload(Object sender, EventArgs e)
{
	if (dbutil != null) {dbutil.close();}
}

///////////////////////////////////////////////////////////////////////
Boolean validate()
{

	Boolean good = true;
	if (username.Value == "")
	{
		good = false;
		username_err.InnerText = "User is required.";
	}
	else
	{
		username_err.InnerText = "";
	}

	if (id == 0)
	{
		if (pw.Value == "")
		{
			good = false;
			pw_err.InnerText = "Password is required.";
		}
		else
		{
			pw_err.InnerText = "";
		}
	}

	if (confirm_pw.Value != pw.Value)
	{
		good = false;
		confirm_pw_err.InnerText = "Confirm Password must match Password.";
	}
	else
	{
		confirm_pw_err.InnerText = "";
	}
	
	if (!Util.is_int(bugs_per_page.Value))
	{
		good = false;
		bugs_per_page_err.InnerText = Util.get_setting("PluralBugLabel","Bugs") + " Per Page must be a number.";
	}
	else
	{
		bugs_per_page_err.InnerText = "";
	}

	return good;
}

///////////////////////////////////////////////////////////////////////
void on_update (Object sender, EventArgs e)
{

	Boolean good = validate();

	if (good)
	{
		
		string password_to_store;
		if (Util.get_setting("EncryptStoredPasswords", "0") == "1")
		{
			password_to_store = Util.encrypt_string_using_MD5(pw.Value);
		}
		else
		{
			password_to_store = pw.Value.Replace("'","''");
		}
		
		if (id == 0)  // insert new
		{
			// See if the user already exists?
			sql = "select count(1) from users where us_username = N'$1'";
			sql = sql.Replace("$1", username.Value.Replace("'","''"));
			int user_count = (int) dbutil.execute_scalar(sql);

			if (user_count == 0)
			{

				sql = @"insert into users
					(us_username, us_password,
					us_firstname, us_lastname, us_bugs_per_page, us_email,
					us_active, us_admin, 
					us_enable_notifications, 
					us_only_new_bug_notifications,
					us_send_notifications_to_self,
					us_only_status_change_notifications,
					us_auto_subscribe, 
					us_auto_subscribe_own_bugs, 
					us_auto_subscribe_reported_bugs, 
					us_default_query)
					values (N'$un', N'$pw', N'$fn', N'$ln', N'$bp', N'$em', $ac, $ad, $en, $on, $ss, $os, $as, $ao, $ar, $dq);
					
					select @@IDENTITY";

				sql = sql.Replace("$un", username.Value.Replace("'","''"));
				sql = sql.Replace("$pw", password_to_store);
				sql = sql.Replace("$fn", firstname.Value.Replace("'","''"));
				sql = sql.Replace("$ln", lastname.Value.Replace("'","''"));
				sql = sql.Replace("$bp", bugs_per_page.Value.Replace("'","''"));
				sql = sql.Replace("$em", email.Value.Replace("'","''"));
				sql = sql.Replace("$ac", Util.bool_to_string(active.Checked));
				sql = sql.Replace("$ad", Util.bool_to_string(admin.Checked));
				sql = sql.Replace("$en", Util.bool_to_string(enable_notifications.Checked));
				sql = sql.Replace("$on", Util.bool_to_string(only_new_bug_notifications.Checked));
				sql = sql.Replace("$ss", Util.bool_to_string(send_to_self.Checked));
				sql = sql.Replace("$os", Util.bool_to_string(only_status_changes.Checked));
				sql = sql.Replace("$as", Util.bool_to_string(auto_subscribe.Checked));
				sql = sql.Replace("$ao", Util.bool_to_string(auto_subscribe_own.Checked));
				sql = sql.Replace("$ar", Util.bool_to_string(auto_subscribe_reported.Checked));
				sql = sql.Replace("$dq", query.SelectedItem.Value);

				id = Convert.ToInt32(dbutil.execute_scalar(sql));

				// Second see what to turn back on
				string projects = "";
				foreach (ListItem li in project_auto_subscribe.Items)
				{
					if (li.Selected) 
					{
						if (projects != "")
						{
							projects += ",";
						}
						projects += Convert.ToInt32(li.Value);
					}
				}

				// If we need to turn anything back on
				if (projects != "")
				{

					sql = @"insert into project_user_xref (pu_project, pu_user, pu_auto_subscribe)
						select pj_id, $id, 1 
						from projects 
						where pj_id in ($projects)
						and pj_id not in (select pu_project from project_user_xref where pu_user = $id)";

					sql = sql.Replace("$id", Convert.ToString(id));
					sql = sql.Replace("$projects", projects);
					dbutil.execute_nonquery(sql);
				}	

				
				Server.Transfer ("users.aspx");
			}
			else
			{
				username_err.InnerText = "User already exists.   Choose another username.";
				msg.InnerText = "User was not created.";
			}


		}
		else // edit existing
		{

			// See if the user already exists?
			sql = @"select count(1)
				from users where us_username = N'$1' and us_id <> $2" ;
			sql = sql.Replace("$1", username.Value.Replace("'","''"));
			sql = sql.Replace("$2", Convert.ToString(id));
			int user_count = (int) dbutil.execute_scalar(sql);

			if (user_count == 0)
			{

				if (pw.Value != "")
				{
					sql = @"update users set
						us_username = N'$un',
						us_password = N'$pw',
						us_firstname = N'$fn',
						us_lastname = N'$ln',

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -