forked from science-ation/science-ation
256 lines
7.5 KiB
PHP
256 lines
7.5 KiB
PHP
<?
|
|
/*
|
|
This file is part of the 'Science Fair In A Box' project
|
|
SFIAB Website: http://www.sfiab.ca
|
|
|
|
Copyright (C) 2010 James Grant <james@lightbox.org>
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation, version 2.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not, write to
|
|
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA.
|
|
*/
|
|
?>
|
|
<?
|
|
require_once("common.inc.php");
|
|
require_once("account.inc.php");
|
|
|
|
/* Make sure the user is not logged in. */
|
|
if(isset($_SESSION['accounts_id'])) {
|
|
message_push(error(i18n("You are already logged in")));
|
|
header("location: {$config['SFIABDIRECTORY']}/index.php");
|
|
exit;
|
|
}
|
|
|
|
function check_username($username) {
|
|
$u = mysql_real_escape_string($username);
|
|
$q = mysql_query("SELECT id FROM accounts WHERE username='$u' AND deleted='no'");
|
|
if(mysql_num_rows($q))
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
switch($_GET['action']) {
|
|
case 'check_username':
|
|
$x = check_username($_GET['username']);
|
|
echo json_encode(array('valid' => $x));
|
|
exit;
|
|
|
|
case 'save':
|
|
$email = trim($_POST['email']);
|
|
$pass = trim($_POST['pass1']);
|
|
$username_link = ($_POST['username_link'] == 'yes') ? true : false;
|
|
$username = $username_link ? $email : trim($_POST['username']);
|
|
$a=account_create($username,$pass);
|
|
if($email) {
|
|
account_set_email($a['id'],$email);
|
|
}
|
|
exit;
|
|
echo json_encode($a);
|
|
}
|
|
|
|
send_header("Account Registration",
|
|
array("Account Registration" => "register.php")
|
|
,"change_password"
|
|
);
|
|
|
|
?>
|
|
<div id="account-register-status"></div>
|
|
<div id="account-register">
|
|
<?
|
|
echo i18n("In order to participate as any role (student participant, judge, volunteer, etc) you must first have an account. Use the form below to create your account. If you already have an account, please use the login box at the top to access your account");
|
|
|
|
$username_link = 'checked="checked"';
|
|
?>
|
|
<h3><?=i18n("Account/Login Information")?></h3>
|
|
<br />
|
|
|
|
<form class="editor" name="account" id="accountform">
|
|
<table width="90%">
|
|
<tr>
|
|
<td style="text-align: left" colspan="2"><b>Email</b><hr /></td>
|
|
</tr><tr>
|
|
<td><label for="email"><?=i18n('Email')?>:</label></td>
|
|
<td><input id="email" name="email" type="text" size="30" value="<?=$email?>"></td>
|
|
</tr><tr>
|
|
<td></td><td>
|
|
<div style="font-size: 0.75em;"><?=i18n('Enter your email address. A confirmation email will be sent to this email to validate it.')?></div>
|
|
<br />
|
|
</td>
|
|
</tr><tr>
|
|
<td style="text-align: left" colspan="2"><b>Username</b><hr /></td>
|
|
</tr><tr>
|
|
<td><?=i18n('Username')?>:</td>
|
|
<td><input id="username" name=username type="text" size="20" value="<?=$username?>"><br />
|
|
<input id="username_link" <?=$username_link?> type="checkbox" name="username_link" value="yes" />
|
|
<?=i18n('Use the email address as the login username')?><br />
|
|
</td>
|
|
</tr><tr>
|
|
<td colspan="2">
|
|
<br />
|
|
</td>
|
|
</tr><tr>
|
|
<td style="text-align: left" colspan="2"><b>Password</b><hr /></td>
|
|
</tr><tr>
|
|
<td><label for="pass1"><?=i18n('Choose Password')?>:</label></td>
|
|
<td><input id="pass1" name="pass1" type="password" size="20" value=""></td>
|
|
</tr><tr>
|
|
<td><label for="pass2"><?=i18n('Confirm Password')?>:</label></td>
|
|
<td><input id="pass2" name="pass2" type="password" size="20" value=""></td>
|
|
</tr><tr>
|
|
<td></td><td>
|
|
<div style="font-size: 0.75em;"><?=i18n('Passwords must be be between 6 and 32 characters, and may NOT contain any quote or a backslash.')?></div>
|
|
</td>
|
|
</tr></table>
|
|
<br />
|
|
<br />
|
|
<input type="submit" value="<?=i18n("Register")?>" />
|
|
</form>
|
|
<br />
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
var username_valid = true;
|
|
var username_checking = true;
|
|
var check_username_time = false;
|
|
|
|
function username_changed()
|
|
{
|
|
username_checking = false;
|
|
username_valid = true;
|
|
|
|
/* Immediately go to checking... */
|
|
$("#accountform").validate().element( "#username" );
|
|
$("#accountform").validate().element( "#email" );
|
|
|
|
if(check_username_time != false)
|
|
clearTimeout(check_username_time);
|
|
check_username_time = setTimeout(function() {
|
|
var username = $("#username").val();
|
|
username_checking = false;
|
|
$.getJSON("<?=$config['SFIABDIRECTORY']?>/register.php?action=check_username&username="+username,
|
|
function(json){
|
|
username_valid = (json.valid == 1) ? true : false;
|
|
username_checking = true;
|
|
$("#accountform").validate().element( "#username" );
|
|
$("#accountform").validate().element( "#email" );
|
|
});
|
|
}, 500);
|
|
|
|
}
|
|
|
|
function email_changed() {
|
|
if($("#username_link").is(":checked")) {
|
|
$("#username").val($('#email').val());
|
|
username_changed();
|
|
}
|
|
}
|
|
|
|
|
|
$.validator.addMethod("username_in_use",function(value, element) {
|
|
if(element.id == 'username') {
|
|
return username_valid;
|
|
} else {
|
|
if($("#username_link").is(":checked"))
|
|
return username_valid;
|
|
else
|
|
return true;
|
|
}
|
|
});
|
|
|
|
$.validator.addMethod("checking",function(value, element) {
|
|
return username_checking;
|
|
});
|
|
|
|
$(document).ready(function() {
|
|
$("#accountform").validate({
|
|
rules: {
|
|
email: {
|
|
required: true,
|
|
email: true,
|
|
username_in_use: true,
|
|
},
|
|
username: {
|
|
// required: "#username_link:checked",
|
|
username_in_use: true,
|
|
checking: true,
|
|
minlength: 4
|
|
},
|
|
pass1: {
|
|
<?=$validator_passreq?>
|
|
minlength: 6,
|
|
maxlength: 32
|
|
},
|
|
pass2: {
|
|
<?=$validator_passreq?>
|
|
minlength: 6,
|
|
maxlength: 32,
|
|
equalTo: "#pass1"
|
|
}
|
|
},
|
|
messages: {
|
|
email: {
|
|
required: "Please enter an email address",
|
|
email: "Please enter a valid email address",
|
|
username_in_use: "Email aready in use as a username, use a different email, or uncheck the username box below"
|
|
},
|
|
username: {
|
|
required: "Please enter a username",
|
|
minlength: "Your username must consist of at least 2 characters",
|
|
username_in_use: "Username is already in use, please choose a different one",
|
|
checking: "Checking..."
|
|
},
|
|
pass1: {
|
|
required: "Please enter a password",
|
|
minlength: "Your password must be at least 6 characters long",
|
|
maxlength: "Your password must be at most 32 characters long"
|
|
},
|
|
pass2: {
|
|
required: "Please confirm the password",
|
|
minlength: "Your password must be at least 6 characters long",
|
|
maxlength: "Your password must be at most 32 characters long",
|
|
equalTo: "Please enter the same password as above"
|
|
}
|
|
},
|
|
submitHandler: function() {
|
|
$.post("register.php?action=save", $("#accountform").serializeArray(),function() {
|
|
$("#account-register").hide();
|
|
$("#account-register-status").addClass("happy");
|
|
$("#account-register-status").show();
|
|
$("#account-register-status").html("<?=i18n("Your account has been created. You can now login above")?>");
|
|
|
|
});
|
|
}
|
|
});
|
|
|
|
/* Code to disable the username box, only included if the password hasn't expired */
|
|
var username_link = $("#username_link").is(":checked");
|
|
$("#username").attr("disabled", username_link);
|
|
$("#username_link").click(function() {
|
|
$("#username").attr("disabled", this.checked);
|
|
email_changed();
|
|
username_changed();
|
|
});
|
|
$("#email").change(email_changed);
|
|
$("#email").keyup(email_changed);
|
|
$("#username").change(username_changed);
|
|
$("#username").keyup(username_changed);
|
|
|
|
|
|
});
|
|
</script>
|
|
|
|
<?
|
|
send_footer();
|
|
?>
|