mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 09:43:03 +00:00
started working on the login
This commit is contained in:
parent
f478d7204f
commit
30aea4ec8c
6 changed files with 285 additions and 6 deletions
|
@ -20,7 +20,7 @@ INSERT INTO AccountTypes (ID, AccountType) VALUES (3, 'Developer');
|
||||||
--
|
--
|
||||||
CREATE TABLE Users (
|
CREATE TABLE Users (
|
||||||
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
AccountTypeID TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
AccountTypeID TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||||
Suspended TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
Suspended TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
Email CHAR(64) NOT NULL,
|
Email CHAR(64) NOT NULL,
|
||||||
Passwd CHAR(32) NOT NULL,
|
Passwd CHAR(32) NOT NULL,
|
||||||
|
@ -46,7 +46,8 @@ CREATE TABLE Sessions (
|
||||||
UsersID INTEGER UNSIGNED NOT NULL,
|
UsersID INTEGER UNSIGNED NOT NULL,
|
||||||
SessionID CHAR(32) NOT NULL,
|
SessionID CHAR(32) NOT NULL,
|
||||||
LastUpdateTS BIGINT UNSIGNED NOT NULL,
|
LastUpdateTS BIGINT UNSIGNED NOT NULL,
|
||||||
FOREIGN KEY (UsersID) REFERENCES Users(ID)
|
FOREIGN KEY (UsersID) REFERENCES Users(ID),
|
||||||
|
UNIQUE (SessionID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,110 @@
|
||||||
include("index_po.inc");
|
include("index_po.inc");
|
||||||
include("aur.inc");
|
include("aur.inc");
|
||||||
set_lang();
|
set_lang();
|
||||||
|
check_sid();
|
||||||
|
|
||||||
|
# Need to do the authentication prior to sending HTML
|
||||||
|
#
|
||||||
|
$login_error = "";
|
||||||
|
if (isset($_REQUEST["user"]) || isset($_REQUEST["pass"])) {
|
||||||
|
# Attempting to log in
|
||||||
|
#
|
||||||
|
if (!isset($_REQUEST['user'])) {
|
||||||
|
$login_error = __("You must supply a username.");
|
||||||
|
}
|
||||||
|
if (!isset($_REQUEST['pass'])) {
|
||||||
|
$login_error = __("You must supply a password.");
|
||||||
|
}
|
||||||
|
if (!$login_error) {
|
||||||
|
# Try and authenticate the user
|
||||||
|
#
|
||||||
|
$dbh = db_connect();
|
||||||
|
$q = "SELECT ID, Suspended FROM Users ";
|
||||||
|
$q.= "WHERE Email = '" . mysql_escape_string($_REQUEST["user"]) . "' ";
|
||||||
|
$q.= "AND Passwd = '" . mysql_escape_string($_REQUEST["pass"]) . "'";
|
||||||
|
$result = mysql_query($q, $dbh);
|
||||||
|
if (!$result) {
|
||||||
|
$login_error = __("Incorrect password for username %s.",
|
||||||
|
array($_REQUEST["user"]));
|
||||||
|
}
|
||||||
|
$row = mysql_fetch_row($result);
|
||||||
|
if ($row[1]) {
|
||||||
|
$login_error = __("Your account has been suspended.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$login_error) {
|
||||||
|
# Account looks good. Generate a SID and store it.
|
||||||
|
#
|
||||||
|
$logged_in = 0;
|
||||||
|
$num_tries = 0;
|
||||||
|
while (!$logged_in && $num_tries < 5) {
|
||||||
|
$new_sid = new_sid();
|
||||||
|
$q = "INSERT INTO Sessions (UsersID, SessionID, LastUpdateTS) ";
|
||||||
|
$q.="VALUES (". $row[0]. ", '" . $new_sid . "', UNIX_TIMESTAMP())";
|
||||||
|
$result = mysql_query($q, $dbh);
|
||||||
|
# Query will fail if $new_sid is not unique
|
||||||
|
#
|
||||||
|
if ($result) {
|
||||||
|
$logged_in = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$num_tries++;
|
||||||
|
}
|
||||||
|
if ($logged_in) {
|
||||||
|
# set our SID cookie
|
||||||
|
#
|
||||||
|
setcookie("AURSID", $new_sid, 0, "/");
|
||||||
|
header("Location: /index.php");
|
||||||
|
} else {
|
||||||
|
$login_error = __("Error trying to generate session id.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Any cookies have been sent, can now display HTML
|
||||||
|
#
|
||||||
html_header();
|
html_header();
|
||||||
|
|
||||||
|
print "<table border='0' cellpadding='0' cellspacing='3' width='90%'>\n";
|
||||||
|
print "<tr>\n";
|
||||||
|
print " <td align='left'>";
|
||||||
|
print __("This is where the intro text will go.");
|
||||||
|
print __("For now, it's just a place holder.");
|
||||||
|
print __("It's more important to get the login functionality finished.");
|
||||||
|
print __("After that, this can be filled in with more meaningful text.");
|
||||||
|
print " </td>";
|
||||||
|
print " <td align='right'>";
|
||||||
|
if (!isset($_COOKIE["AURSID"])) {
|
||||||
|
# the user is not logged in, give them login widgets
|
||||||
|
#
|
||||||
|
print "<form action='/index.php' method='post'>\n";
|
||||||
|
if ($login_error) {
|
||||||
|
print $login_error . "<br/>\n";
|
||||||
|
}
|
||||||
|
print "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
|
||||||
|
print "<tr>\n";
|
||||||
|
print "<td>".__("Username:")."</td>";
|
||||||
|
print "<td><input type='text' name='user' size='30' maxlength='64'></td>";
|
||||||
|
print "</tr>\n";
|
||||||
|
print "<tr>\n";
|
||||||
|
print "<td>".__("Password:")."</td>";
|
||||||
|
print "<td><input type='password' name='pass' size='30' maxlength='32'></td>";
|
||||||
|
print "</tr>\n";
|
||||||
|
print "<tr>\n";
|
||||||
|
print "<td colspan='2' align='right'> <br/>";
|
||||||
|
print "<input type='submit' value='".__("Login")."'></td>";
|
||||||
|
print "</tr>\n";
|
||||||
|
print "</table>\n";
|
||||||
|
print "</form>\n";
|
||||||
|
|
||||||
#$dbh = db_connect();
|
} else {
|
||||||
print "Connected...<br>\n";
|
print __("Currently logged in as: %h%s%h",
|
||||||
print "My LANG is: " . $LANG . "<br>\n";
|
array("<b>", username_from_sid($_COOKIE["AURSID"]), "</b>"));
|
||||||
|
}
|
||||||
|
print " </td>";
|
||||||
|
print "</tr>\n";
|
||||||
|
print "</table>\n";
|
||||||
|
|
||||||
|
|
||||||
html_footer("\$Id$");
|
html_footer("\$Id$");
|
||||||
|
|
13
web/html/timeout.php
Normal file
13
web/html/timeout.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?
|
||||||
|
include("timeout_po.inc");
|
||||||
|
include("aur.inc");
|
||||||
|
set_lang();
|
||||||
|
html_header();
|
||||||
|
|
||||||
|
print __("Your session has timed out. You must log in again.");
|
||||||
|
print "<p>\n";
|
||||||
|
print __("Click on the Home link above to log in.");
|
||||||
|
print "</p>\n";
|
||||||
|
|
||||||
|
html_footer("\$Id$");
|
||||||
|
?>
|
|
@ -16,4 +16,69 @@ $_t["en"]["Hi, this is worth reading!"] = "Hi, this is worth reading!";
|
||||||
# $_t["fr"]["Hi, this is worth reading!"] = "--> Traduction française ici. <--";
|
# $_t["fr"]["Hi, this is worth reading!"] = "--> Traduction française ici. <--";
|
||||||
# $_t["de"]["Hi, this is worth reading!"] = "--> Deutsche Übersetzung hier. <--";
|
# $_t["de"]["Hi, this is worth reading!"] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["You must supply a password."] = "You must supply a password.";
|
||||||
|
# $_t["es"]["You must supply a password."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["You must supply a password."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["You must supply a password."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["You must supply a username."] = "You must supply a username.";
|
||||||
|
# $_t["es"]["You must supply a username."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["You must supply a username."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["You must supply a username."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Incorrect password for username %s."] = "Incorrect password for username %s.";
|
||||||
|
# $_t["es"]["Incorrect password for username %s."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Incorrect password for username %s."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Incorrect password for username %s."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["After that, this can be filled in with more meaningful text."] = "After that, this can be filled in with more meaningful text.";
|
||||||
|
# $_t["es"]["After that, this can be filled in with more meaningful text."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["After that, this can be filled in with more meaningful text."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["After that, this can be filled in with more meaningful text."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Your account has been suspended."] = "Your account has been suspended.";
|
||||||
|
# $_t["es"]["Your account has been suspended."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Your account has been suspended."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Your account has been suspended."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Password:"] = "Password:";
|
||||||
|
# $_t["es"]["Password:"] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Password:"] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Password:"] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Username:"] = "Username:";
|
||||||
|
# $_t["es"]["Username:"] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Username:"] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Username:"] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["It's more important to get the login functionality finished."] = "It's more important to get the login functionality finished.";
|
||||||
|
# $_t["es"]["It's more important to get the login functionality finished."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["It's more important to get the login functionality finished."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["It's more important to get the login functionality finished."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Currently logged in as: %h%s%h"] = "Currently logged in as: %h%s%h";
|
||||||
|
# $_t["es"]["Currently logged in as: %h%s%h"] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Currently logged in as: %h%s%h"] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Currently logged in as: %h%s%h"] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["For now, it's just a place holder."] = "For now, it's just a place holder.";
|
||||||
|
# $_t["es"]["For now, it's just a place holder."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["For now, it's just a place holder."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["For now, it's just a place holder."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["This is where the intro text will go."] = "This is where the intro text will go.";
|
||||||
|
# $_t["es"]["This is where the intro text will go."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["This is where the intro text will go."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["This is where the intro text will go."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Error trying to generate session id."] = "Error trying to generate session id.";
|
||||||
|
# $_t["es"]["Error trying to generate session id."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Error trying to generate session id."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Error trying to generate session id."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Login"] = "Login";
|
||||||
|
# $_t["es"]["Login"] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Login"] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Login"] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
?>
|
?>
|
24
web/lang/timeout_po.inc
Normal file
24
web/lang/timeout_po.inc
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<?
|
||||||
|
# INSTRUCTIONS TO TRANSLATORS
|
||||||
|
#
|
||||||
|
# This file contains the i18n translations for a subset of the
|
||||||
|
# Arch Linux User-community Repository (AUR). This is a PHP
|
||||||
|
# script, and as such, you MUST pay great attention to the syntax.
|
||||||
|
# If your text contains any double-quotes ("), you MUST escape
|
||||||
|
# them with the backslash character (\).
|
||||||
|
#
|
||||||
|
|
||||||
|
include_once("translator.inc");
|
||||||
|
global $_t;
|
||||||
|
|
||||||
|
$_t["en"]["Click on the Home link above to log in."] = "Click on the Home link above to log in.";
|
||||||
|
# $_t["es"]["Click on the Home link above to log in."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Click on the Home link above to log in."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Click on the Home link above to log in."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
$_t["en"]["Your session has timed out. You must log in again."] = "Your session has timed out. You must log in again.";
|
||||||
|
# $_t["es"]["Your session has timed out. You must log in again."] = "--> Traducción española aquí. <--";
|
||||||
|
# $_t["fr"]["Your session has timed out. You must log in again."] = "--> Traduction française ici. <--";
|
||||||
|
# $_t["de"]["Your session has timed out. You must log in again."] = "--> Deutsche Übersetzung hier. <--";
|
||||||
|
|
||||||
|
?>
|
|
@ -11,6 +11,84 @@ $SUPPORTED_LANGS = array(
|
||||||
"fr" => 1, # Français
|
"fr" => 1, # Français
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# see if the visitor is already logged in
|
||||||
|
#
|
||||||
|
function check_sid() {
|
||||||
|
global $_COOKIE;
|
||||||
|
|
||||||
|
if (isset($_COOKIE["AURSID"])) {
|
||||||
|
$failed = 0;
|
||||||
|
# the visitor is logged in, try and update the session
|
||||||
|
#
|
||||||
|
$dbh = db_connect();
|
||||||
|
$q = "SELECT LastUpdateTS, UNIX_TIMESTAMP() FROM Sessions ";
|
||||||
|
$q.= "WHERE SessionID = '" . mysql_escape_string($_COOKIE["AURSID"]) . "'";
|
||||||
|
$result = mysql_query($q, $dbh);
|
||||||
|
if (!$result) {
|
||||||
|
$failed = 1;
|
||||||
|
} else {
|
||||||
|
if ($row[0] + 10 >= $row[1]) {
|
||||||
|
$failed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($failed) {
|
||||||
|
# visitor's session id either doesn't exist, or the timeout
|
||||||
|
# was reached and they must login again, send them back to
|
||||||
|
# the main page where they can log in again.
|
||||||
|
#
|
||||||
|
$q = "DELETE FROM Sessions WHERE SessionID = '";
|
||||||
|
$q.= mysql_escape_string($_COOKIE["AURSID"]) . "'";
|
||||||
|
mysql_query($q, $dbh);
|
||||||
|
|
||||||
|
setcookie("AURSID", "", time() - (60*60*24*30), "/");
|
||||||
|
header("Location: /timeout.php");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
# a new seed value for mt_srand()
|
||||||
|
#
|
||||||
|
function make_seed() {
|
||||||
|
list($usec, $sec) = explode(' ', microtime());
|
||||||
|
return (float) $sec + ((float) $usec * 10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
# generate a (hopefully) unique session id
|
||||||
|
#
|
||||||
|
function new_sid() {
|
||||||
|
mt_srand(make_seed());
|
||||||
|
$ts = time();
|
||||||
|
$pid = getmypid();
|
||||||
|
|
||||||
|
$rand_num = mt_rand();
|
||||||
|
mt_srand(make_seed());
|
||||||
|
$rand_str = substr(md5(mt_rand()),2, 20);
|
||||||
|
|
||||||
|
$id = $rand_str . strtolower(md5($ts.$pid)) . $rand_num;
|
||||||
|
return strtoupper(md5($id));
|
||||||
|
}
|
||||||
|
|
||||||
|
# obtain the username if given their current SID
|
||||||
|
#
|
||||||
|
function username_from_sid($sid="") {
|
||||||
|
if (!$sid) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
$dbh = db_connect();
|
||||||
|
$q = "SELECT Email ";
|
||||||
|
$q.= "FROM Users, Sessions ";
|
||||||
|
$q.= "WHERE Users.ID = Sessions.UsersID ";
|
||||||
|
$q.= "AND SessionID = '" . mysql_escape_string($sid) . "'";
|
||||||
|
$result = mysql_query($q, $dbh);
|
||||||
|
if (!$result) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
$row = mysql_fetch_row($result);
|
||||||
|
|
||||||
|
return $row[0];
|
||||||
|
}
|
||||||
|
|
||||||
# connect to the database
|
# connect to the database
|
||||||
#
|
#
|
||||||
|
@ -155,7 +233,7 @@ function html_footer($ver="") {
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
print "<p>\n";
|
print "<p>\n";
|
||||||
if ($ver) {
|
if ($ver) {
|
||||||
print "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
|
print "<table border='0' cellpadding='0' cellspacing='0' width='97%'>\n";
|
||||||
print "<tr><td align='right'><span class='fix'>".$ver."</span></td></tr>\n";
|
print "<tr><td align='right'><span class='fix'>".$ver."</span></td></tr>\n";
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue