diff --git a/UPGRADING b/UPGRADING
index 6557b958..40d4485c 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -6,7 +6,10 @@ From 1.9.1 to 2.0.0
1. Add new "Users" table login date column:
+----
ALTER TABLE Users ADD COLUMN LastLogin BIGINT NOT NULL DEFAULT 0;
+ALTER TABLE Users ADD COLUMN PGPKey VARCHAR(40) NULL DEFAULT NULL;
+----
From 1.9.0 to 1.9.1
-------------------
diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
index 6c8feca8..726fd2f3 100644
--- a/support/schema/aur-schema.sql
+++ b/support/schema/aur-schema.sql
@@ -31,6 +31,7 @@ CREATE TABLE Users (
RealName VARCHAR(64) NOT NULL DEFAULT '',
LangPreference VARCHAR(5) NOT NULL DEFAULT 'en',
IRCNick VARCHAR(32) NOT NULL DEFAULT '',
+ PGPKey VARCHAR(40) NULL DEFAULT NULL,
LastVoted BIGINT UNSIGNED NOT NULL DEFAULT 0,
LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (ID),
diff --git a/web/html/account.php b/web/html/account.php
index d94d7119..339316b0 100644
--- a/web/html/account.php
+++ b/web/html/account.php
@@ -33,7 +33,8 @@ if (isset($_COOKIE["AURSID"])) {
#
search_results_page($atype, in_request("O"), in_request("SB"),
in_request("U"), in_request("T"), in_request("S"),
- in_request("E"), in_request("R"), in_request("I"));
+ in_request("E"), in_request("R"), in_request("I"),
+ in_request("K"));
} else {
# a non-privileged user is trying to access the search page
@@ -64,7 +65,7 @@ if (isset($_COOKIE["AURSID"])) {
display_account_form($atype, "UpdateAccount", $row["Username"],
$row["AccountType"], $row["Suspended"], $row["Email"],
"", "", $row["RealName"], $row["LangPreference"],
- $row["IRCNick"], $row["ID"]);
+ $row["IRCNick"], $row["PGPKey"], $row["ID"]);
}
}
@@ -82,7 +83,7 @@ if (isset($_COOKIE["AURSID"])) {
$row = mysql_fetch_assoc($result);
display_account_info($row["Username"],
$row["AccountType"], $row["Email"], $row["RealName"],
- $row["IRCNick"], $row["LastVoted"]);
+ $row["IRCNick"], $row["PGPKey"], $row["LastVoted"]);
}
} elseif ($action == "UpdateAccount") {
@@ -92,7 +93,7 @@ if (isset($_COOKIE["AURSID"])) {
in_request("U"), in_request("T"), in_request("S"),
in_request("E"), in_request("P"), in_request("C"),
in_request("R"), in_request("L"), in_request("I"),
- in_request("ID"));
+ in_request("K"), in_request("ID"));
} else {
@@ -127,7 +128,7 @@ if (isset($_COOKIE["AURSID"])) {
display_account_form($atype, "UpdateAccount", $row["Username"],
$row["AccountType"], $row["Suspended"], $row["Email"],
"", "", $row["RealName"], $row["LangPreference"],
- $row["IRCNick"], $row["ID"]);
+ $row["IRCNick"], $row["PGPKey"], $row["ID"]);
}
}
}
@@ -143,7 +144,7 @@ if (isset($_COOKIE["AURSID"])) {
process_account_form("","new", "NewAccount",
in_request("U"), 1, 0, in_request("E"),
in_request("P"), in_request("C"), in_request("R"),
- in_request("L"), in_request("I"));
+ in_request("L"), in_request("I"), in_request("K"));
} else {
# display the account request form
diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php
index 512e66ce..8246cc93 100644
--- a/web/lib/acctfuncs.inc.php
+++ b/web/lib/acctfuncs.inc.php
@@ -8,10 +8,28 @@ function in_request($name) {
return "";
}
+# Format PGP key fingerprint
+function html_format_pgp_fingerprint($fingerprint) {
+ if (strlen($fingerprint) != 40 || !ctype_xdigit($fingerprint)) {
+ return $fingerprint;
+ }
+
+ return htmlspecialchars(substr($fingerprint, 0, 4) . " " .
+ substr($fingerprint, 4, 4) . " " .
+ substr($fingerprint, 8, 4) . " " .
+ substr($fingerprint, 12, 4) . " " .
+ substr($fingerprint, 16, 4) . " " .
+ substr($fingerprint, 20, 4) . " " .
+ substr($fingerprint, 24, 4) . " " .
+ substr($fingerprint, 28, 4) . " " .
+ substr($fingerprint, 32, 4) . " " .
+ substr($fingerprint, 36, 4) . " ", ENT_QUOTES);
+}
+
# Display the standard Account form, pass in default values if any
function display_account_form($UTYPE,$A,$U="",$T="",$S="",
- $E="",$P="",$C="",$R="",$L="",$I="",$UID=0) {
+ $E="",$P="",$C="",$R="",$L="",$I="",$K="",$UID=0) {
# UTYPE: what user type the form is being displayed for
# A: what "form" name to use
# U: value to display for username
@@ -112,6 +130,12 @@ function display_account_form($UTYPE,$A,$U="",$T="",$S="",
print " name='I' value='".htmlspecialchars($I,ENT_QUOTES)."' />";
print "\n";
+ print "
";
+ print "".__("PGP Key Fingerprint").": | ";
+ print " | ";
+ print "
\n";
+
print "";
print "".__("Language").": | ";
print " | ";
print "";
+ $row["PGPKey"] ? print html_format_pgp_fingerprint($row["PGPKey"]) : print " ";
+ print " | ";
+ print "";
$row["LastVoted"]
? print date("Y-m-d", $row["LastVoted"])
: print __("Never");
@@ -526,7 +565,7 @@ function search_results_page($UTYPE,$O=0,$SB="",$U="",$T="",
# Display non-editable account info
#
-function display_account_info($U="", $T="", $E="", $R="", $I="", $LV="") {
+function display_account_info($U="", $T="", $E="", $R="", $I="", $K="", $LV="") {
# U: value to display for username
# T: value to display for account type
# E: value to display for email address
@@ -574,6 +613,11 @@ function display_account_info($U="", $T="", $E="", $R="", $I="", $LV="") {
print " | ".htmlspecialchars($I,ENT_QUOTES)." | \n";
print "
\n";
+ print " \n";
+ print " ".__("PGP Key Fingerprint").": | \n";
+ print " ".html_format_pgp_fingerprint($K)." | \n";
+ print "
\n";
+
print " \n";
print " ".__("Last Voted").": | \n";
print " ";
@@ -783,6 +827,15 @@ function valid_passwd( $userID, $passwd, $dbh )
return false;
}
+/*
+ * Checks if the PGP key fingerprint is valid (must be 40 hexadecimal digits).
+ */
+function valid_pgp_fingerprint ( $fingerprint )
+{
+ $fingerprint = str_replace(" ", "", $fingerprint);
+ return (strlen($fingerprint) == 40 && ctype_xdigit($fingerprint));
+}
+
/*
* Is the user account suspended?
*/
|