add registration script and required config options
This commit is contained in:
parent
bf996dfab4
commit
4f7956b3df
|
@ -184,6 +184,19 @@
|
|||
define('PHP_EXECUTABLE', '/usr/bin/php');
|
||||
// Path to PHP executable
|
||||
|
||||
define('ENABLE_REGISTRATION', false);
|
||||
// Allow users to register themselves. Please be vary that allowing
|
||||
// random people to access your tt-rss installation is a security risk
|
||||
// and potentially might lead to data loss or server exploit. Disabled
|
||||
// by default.
|
||||
|
||||
define('REG_NOTIFY_ADDRESS', 'user@your.domain.dom');
|
||||
// Email address to send new user notifications to.
|
||||
|
||||
define('REG_MAX_USERS', 10);
|
||||
// Maximum amount of users which will be allowed to register on this
|
||||
// system. 0 - no limit.
|
||||
|
||||
define('CONFIG_VERSION', 18);
|
||||
// Expected config version. Please update this option in config.php
|
||||
// if necessary (after migrating all new options from this file).
|
||||
|
|
|
@ -129,7 +129,7 @@ window.onload = init;
|
|||
<tr><td colspan="2" align="right" class="innerLoginCell">
|
||||
|
||||
<input type="submit" class="button" value="<?php echo __('Log in') ?>" name='click'>
|
||||
<?php if (defined('_ENABLE_REGISTRATION')) { ?>
|
||||
<?php if (defined('ENABLE_REGISTRATION') && ENABLE_REGISTRATION) { ?>
|
||||
<input type="submit" class="button" onclick="return gotoRegForm()"
|
||||
value="<?php echo __("Create new account") ?>"/>
|
||||
<?php } ?>
|
||||
|
|
|
@ -0,0 +1,352 @@
|
|||
<?php
|
||||
// Note: this script uses an undocumented constant in config.php named
|
||||
// REG_NOTIFY_ADDRESS - email address to send registration notifications to.
|
||||
//
|
||||
// define('REG_NOTIFY_ADDRESS', 'my-address@domain.dom');
|
||||
|
||||
error_reporting(E_ERROR | E_WARNING | E_PARSE);
|
||||
|
||||
$action = $_REQUEST["action"];
|
||||
|
||||
define('MAX_USERS', 55);
|
||||
|
||||
require_once "sessions.php";
|
||||
|
||||
require_once "sanity_check.php";
|
||||
require_once "functions.php";
|
||||
require_once "config.php";
|
||||
require_once "db.php";
|
||||
|
||||
$link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
|
||||
init_connection($link);
|
||||
|
||||
/* Remove users which didn't login after receiving their registration information */
|
||||
|
||||
if (DB_TYPE == "pgsql") {
|
||||
db_query($link, "DELETE FROM ttrss_users WHERE last_login IS NULL
|
||||
AND created < NOW() - INTERVAL '1 day' AND access_level = 0");
|
||||
} else {
|
||||
db_query($link, "DELETE FROM ttrss_users WHERE last_login IS NULL
|
||||
AND created < DATE_SUB(NOW(), INTERVAL 1 DAY) AND access_level = 0");
|
||||
}
|
||||
|
||||
if ($action == "check") {
|
||||
header("Content-Type: application/xml");
|
||||
|
||||
$login = trim(db_escape_string($_REQUEST['login']));
|
||||
|
||||
$result = db_query($link, "SELECT id FROM ttrss_users WHERE
|
||||
LOWER(login) = LOWER('$login')");
|
||||
|
||||
$is_registered = db_num_rows($result) > 0;
|
||||
|
||||
print "<result>";
|
||||
|
||||
printf("%d", $is_registered);
|
||||
|
||||
print "</result>";
|
||||
|
||||
return;
|
||||
}
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Create new account</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="utility.css">
|
||||
<link rel="alternate" type="application/rss+xml" title="online.tt-rss.org - Registration Status" href="http://online.tt-rss.org/register_rss.php">
|
||||
<script type="text/javascript" src="functions.js"></script>
|
||||
<script type="text/javascript" src="prototype.js"></script>
|
||||
<script type="text/javascript" src="scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
|
||||
</head>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function checkUsername() {
|
||||
|
||||
try {
|
||||
var f = document.forms['register_form'];
|
||||
var login = f.login.value;
|
||||
|
||||
if (login == "") {
|
||||
new Effect.Highlight(f.login);
|
||||
f.sub_btn.disabled = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
var query = "register.php?action=check&login=" +
|
||||
param_escape(login);
|
||||
|
||||
new Ajax.Request(query, {
|
||||
onComplete: function(transport) {
|
||||
|
||||
try {
|
||||
|
||||
var reply = transport.responseXML;
|
||||
|
||||
var result = reply.getElementsByTagName('result')[0];
|
||||
var result_code = result.firstChild.nodeValue;
|
||||
|
||||
if (result_code == 0) {
|
||||
new Effect.Highlight(f.login, {startcolor : '#00ff00'});
|
||||
f.sub_btn.disabled = false;
|
||||
} else {
|
||||
new Effect.Highlight(f.login, {startcolor : '#ff0000'});
|
||||
f.sub_btn.disabled = true;
|
||||
}
|
||||
} catch (e) {
|
||||
exception_error("checkUsername_callback", e);
|
||||
}
|
||||
|
||||
} });
|
||||
|
||||
} catch (e) {
|
||||
exception_error("checkUsername", e);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
function validateRegForm() {
|
||||
try {
|
||||
|
||||
var f = document.forms['register_form'];
|
||||
|
||||
if (f.login.value.length == 0) {
|
||||
new Effect.Highlight(f.login);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (f.email.value.length == 0) {
|
||||
new Effect.Highlight(f.email);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (f.turing_test.value.length == 0) {
|
||||
new Effect.Highlight(f.turing_test);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
} catch (e) {
|
||||
exception_error("validateRegForm", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="floatingLogo"><img src="images/ttrss_logo.png"></div>
|
||||
|
||||
<h1><?php echo __("Create new account") ?></h1>
|
||||
|
||||
<?php
|
||||
if (!ENABLE_REGISTRATION) {
|
||||
print_error(__("New user registrations are administratively disabled."));
|
||||
|
||||
print "<p><form method=\"GET\" action=\"logout.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>";
|
||||
return;
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- If you have any rules or ToS you'd like to display, enter them here -->
|
||||
|
||||
|
||||
<?php if (REG_MAX_USERS > 0) {
|
||||
$result = db_query($link, "SELECT COUNT(*) AS cu FROM ttrss_users");
|
||||
$num_users = db_fetch_result($result, 0, "cu");
|
||||
} ?>
|
||||
|
||||
<? if (!REG_MAX_USERS || $num_users < REG_MAX_USERS) { ?>
|
||||
|
||||
<? if (!$action) { ?>
|
||||
|
||||
<p><?php echo __('Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent.') ?></p>
|
||||
|
||||
<form action="register.php" method="POST" name="register_form">
|
||||
<input type="hidden" name="action" value="do_register">
|
||||
<table>
|
||||
<tr>
|
||||
<td><?php echo __('Desired login:') ?></td><td>
|
||||
<input name="login">
|
||||
</td><td>
|
||||
<input type="submit" value="<?php echo __('Check availability') ?>" onclick='return checkUsername()'>
|
||||
</td></tr>
|
||||
<td><?php echo __('Email:') ?></td><td>
|
||||
<input name="email">
|
||||
</td></tr>
|
||||
<td><?php echo __('How much is two plus two:') ?></td><td>
|
||||
<input name="turing_test"></td></tr>
|
||||
<tr><td colspan="2" align="right">
|
||||
<input type="submit" name="sub_btn" value="<?php echo __('Submit registration"') ?>"
|
||||
disabled="true" onclick='return validateRegForm()'>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<? } else if ($action == "do_register") { ?>
|
||||
|
||||
<p><?php echo __('Processing registration...') ?></p>
|
||||
|
||||
<?
|
||||
$login = mb_strtolower(trim(db_escape_string($_REQUEST["login"])));
|
||||
$email = trim(db_escape_string($_REQUEST["email"]));
|
||||
$test = trim(db_escape_string($_REQUEST["turing_test"]));
|
||||
|
||||
if (!$login || !$email || !$test) {
|
||||
print "<div class='error'>Please fill in the form.</div>";
|
||||
print "<p><a href='register.php'>Return to registration form</a></p>";
|
||||
return;
|
||||
}
|
||||
|
||||
if ($test == "four" || $test == "4") {
|
||||
|
||||
$result = db_query($link, "SELECT id FROM ttrss_users WHERE
|
||||
login = '$login'");
|
||||
|
||||
$is_registered = db_num_rows($result) > 0;
|
||||
|
||||
if ($is_registered) {
|
||||
print_error(__('Sorry, this username is already taken.'));
|
||||
print "<p><form method=\"GET\" action=\"tt-rss.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>";
|
||||
} else {
|
||||
|
||||
$password = make_password();
|
||||
|
||||
$pwd_hash = encrypt_password($password, $login);
|
||||
|
||||
db_query($link, "INSERT INTO ttrss_users
|
||||
(login,pwd_hash,access_level,last_login, email, created)
|
||||
VALUES ('$login', '$pwd_hash', 0, null, '$email', NOW())");
|
||||
|
||||
$result = db_query($link, "SELECT id FROM ttrss_users WHERE
|
||||
login = '$login' AND pwd_hash = '$pwd_hash'");
|
||||
|
||||
if (db_num_rows($result) != 1) {
|
||||
print_error(__('Registration failed.'));
|
||||
print "<p><form method=\"GET\" action=\"tt-rss.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>";
|
||||
} else {
|
||||
|
||||
$new_uid = db_fetch_result($result, 0, "id");
|
||||
|
||||
initialize_user($link, $new_uid);
|
||||
|
||||
$reg_text = "Hi!\n".
|
||||
"\n".
|
||||
"You are receiving this message, because you (or somebody else) have opened\n".
|
||||
"an account at Tiny Tiny RSS.\n".
|
||||
"\n".
|
||||
"Your login information is as follows:\n".
|
||||
"\n".
|
||||
"Login: $login\n".
|
||||
"Password: $password\n".
|
||||
"\n".
|
||||
"Don't forget to login at least once to your new account, otherwise\n".
|
||||
"it will be deleted in 24 hours.\n".
|
||||
"\n".
|
||||
"If that wasn't you, just ignore this message. Thanks.";
|
||||
|
||||
$mail = new PHPMailer();
|
||||
|
||||
$mail->PluginDir = "phpmailer/";
|
||||
$mail->SetLanguage("en", "phpmailer/language/");
|
||||
|
||||
$mail->CharSet = "UTF-8";
|
||||
|
||||
$mail->From = DIGEST_FROM_ADDRESS;
|
||||
$mail->FromName = DIGEST_FROM_NAME;
|
||||
$mail->AddAddress($email);
|
||||
|
||||
if (DIGEST_SMTP_HOST) {
|
||||
$mail->Host = DIGEST_SMTP_HOST;
|
||||
$mail->Mailer = "smtp";
|
||||
$mail->Username = DIGEST_SMTP_LOGIN;
|
||||
$mail->Password = DIGEST_SMTP_PASSWORD;
|
||||
}
|
||||
|
||||
// $mail->IsHTML(true);
|
||||
$mail->Subject = "Registration information for Tiny Tiny RSS";
|
||||
$mail->Body = $reg_text;
|
||||
// $mail->AltBody = $digest_text;
|
||||
|
||||
$rc = $mail->Send();
|
||||
|
||||
if (!$rc) print_error($mail->ErrorInfo);
|
||||
|
||||
$reg_text = "Hi!\n".
|
||||
"\n".
|
||||
"New user had registered at your Tiny Tiny RSS installation.\n".
|
||||
"\n".
|
||||
"Login: $login\n".
|
||||
"Email: $email\n";
|
||||
|
||||
$mail = new PHPMailer();
|
||||
|
||||
$mail->PluginDir = "phpmailer/";
|
||||
$mail->SetLanguage("en", "phpmailer/language/");
|
||||
|
||||
$mail->CharSet = "UTF-8";
|
||||
|
||||
$mail->From = DIGEST_FROM_ADDRESS;
|
||||
$mail->FromName = DIGEST_FROM_NAME;
|
||||
$mail->AddAddress(REG_NOTIFY_ADDRESS);
|
||||
|
||||
if (DIGEST_SMTP_HOST) {
|
||||
$mail->Host = DIGEST_SMTP_HOST;
|
||||
$mail->Mailer = "smtp";
|
||||
$mail->Username = DIGEST_SMTP_LOGIN;
|
||||
$mail->Password = DIGEST_SMTP_PASSWORD;
|
||||
}
|
||||
|
||||
// $mail->IsHTML(true);
|
||||
$mail->Subject = "Registration notice for Tiny Tiny RSS";
|
||||
$mail->Body = $reg_text;
|
||||
// $mail->AltBody = $digest_text;
|
||||
|
||||
$rc = $mail->Send();
|
||||
|
||||
print_notice(__("Account created successfully."));
|
||||
|
||||
print "<p><form method=\"GET\" action=\"tt-rss.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
print_error('Plese check the form again, you have failed the robot test.');
|
||||
print "<p><form method=\"GET\" action=\"tt-rss.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>";
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<? } else { ?>
|
||||
|
||||
<?php print_notice(__('New user registrations are currently closed.')) ?>
|
||||
|
||||
<?php print "<p><form method=\"GET\" action=\"tt-rss.php\">
|
||||
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
|
||||
</form>"; ?>
|
||||
|
||||
<? } ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue