📄 edit_user.aspx
字号:
<%@ 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 + -