2015-01-09 18:54:05 +00:00
|
|
|
<?php
|
|
|
|
// This file is part of BOINC.
|
|
|
|
// http://boinc.berkeley.edu
|
2018-02-28 00:56:59 +00:00
|
|
|
// Copyright (C) 2018 University of California
|
2015-01-09 18:54:05 +00:00
|
|
|
//
|
|
|
|
// BOINC is free software; you can redistribute it and/or modify it
|
|
|
|
// under the terms of the GNU Lesser General Public License
|
|
|
|
// as published by the Free Software Foundation,
|
|
|
|
// either version 3 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// BOINC 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 Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public License
|
|
|
|
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
2017-10-31 04:38:07 +00:00
|
|
|
// functions related to account creation and login:
|
|
|
|
// - forms for create / login
|
|
|
|
// - function to make login token
|
|
|
|
|
2018-03-01 00:27:00 +00:00
|
|
|
// If have recent token, return it.
|
|
|
|
// Else make login token, store in user record, return token
|
2017-10-31 04:38:07 +00:00
|
|
|
//
|
|
|
|
function make_login_token($user) {
|
|
|
|
$now = time();
|
2018-03-01 00:27:00 +00:00
|
|
|
if ($now - $user->login_token_time < 86400) {
|
|
|
|
return $user->login_token;
|
|
|
|
}
|
|
|
|
$token = substr(random_string(), 0, 8);
|
2017-11-03 20:07:51 +00:00
|
|
|
$user->update("login_token='$token', login_token_time=$now");
|
2017-10-31 04:38:07 +00:00
|
|
|
return $token;
|
|
|
|
}
|
2015-01-14 17:19:11 +00:00
|
|
|
|
2018-01-08 08:35:53 +00:00
|
|
|
// return HTML string for a checkbox for toggling password visibility
|
|
|
|
//
|
|
|
|
function passwd_visible_checkbox($name) {
|
|
|
|
return sprintf('
|
|
|
|
<script>
|
|
|
|
function toggle_passwd() {
|
|
|
|
var x = document.getElementById("%s");
|
|
|
|
if (x.type === "password") {
|
|
|
|
x.type = "text";
|
|
|
|
} else {
|
|
|
|
x.type = "password";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<input type="checkbox" onclick="toggle_passwd()"><small> Show password</small>
|
|
|
|
', $name
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2015-01-09 18:54:05 +00:00
|
|
|
function create_account_form($teamid, $next_url) {
|
2017-02-02 06:13:21 +00:00
|
|
|
global $recaptcha_public_key;
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_hidden('next_url', $next_url);
|
2015-01-09 18:54:05 +00:00
|
|
|
|
|
|
|
if ($teamid) {
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_hidden('teamid', $teamid);
|
2015-01-09 18:54:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Using invitation codes to restrict access?
|
|
|
|
//
|
|
|
|
if (defined('INVITE_CODES')) {
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(
|
2017-09-26 05:08:40 +00:00
|
|
|
sprintf('<span title="%s">%s</span>',
|
|
|
|
tra("An invitation code is required to create an account."),
|
|
|
|
tra("Invitation code")
|
|
|
|
),
|
|
|
|
"invite_code"
|
2017-06-20 07:38:11 +00:00
|
|
|
);
|
2015-01-09 18:54:05 +00:00
|
|
|
}
|
|
|
|
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(
|
2017-09-26 05:08:40 +00:00
|
|
|
sprintf('<span title="%s">%s</span>',
|
|
|
|
tra("Identifies you on our web site. Use your real name or a nickname."),
|
|
|
|
tra("Screen name")
|
|
|
|
),
|
2017-06-20 07:38:11 +00:00
|
|
|
"new_name"
|
2015-01-09 18:54:05 +00:00
|
|
|
);
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(
|
2017-09-26 05:08:40 +00:00
|
|
|
sprintf('<span title="%s">%s</span>',
|
|
|
|
tra("Must be a valid address of the form 'name@domain'."),
|
|
|
|
tra("Email address")
|
|
|
|
),
|
2017-06-20 07:38:11 +00:00
|
|
|
"new_email_addr"
|
2015-01-09 18:54:05 +00:00
|
|
|
);
|
|
|
|
$min_passwd_length = parse_element(get_config(), "<min_passwd_length>");
|
|
|
|
if (!$min_passwd_length) {
|
|
|
|
$min_passwd_length = 6;
|
|
|
|
}
|
|
|
|
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(
|
2017-09-26 05:08:40 +00:00
|
|
|
sprintf('<span title="%s">%s</span>',
|
|
|
|
tra("Must be at least %1 characters", $min_passwd_length),
|
|
|
|
tra("Password")
|
|
|
|
),
|
2017-06-20 07:38:11 +00:00
|
|
|
"passwd", "", "password"
|
2015-01-09 18:54:05 +00:00
|
|
|
);
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(tra("Confirm password"), "passwd2", "", "password");
|
|
|
|
form_select(
|
2017-09-26 05:08:40 +00:00
|
|
|
sprintf('<span title="%s">%s</span>',
|
|
|
|
tra("Select the country you want to represent, if any."),
|
|
|
|
tra("Country")
|
|
|
|
),
|
2017-06-20 07:38:11 +00:00
|
|
|
"country",
|
|
|
|
country_select_options()
|
2015-01-09 18:54:05 +00:00
|
|
|
);
|
2017-06-05 21:26:42 +00:00
|
|
|
if (POSTAL_CODE) {
|
2017-06-20 07:38:11 +00:00
|
|
|
form_input_text(
|
2016-11-29 08:34:26 +00:00
|
|
|
tra("Postal or ZIP Code")."<br><small>".tra("Optional")."</small>",
|
2017-06-20 07:38:11 +00:00
|
|
|
"postal_code"
|
2015-01-14 17:19:11 +00:00
|
|
|
);
|
|
|
|
}
|
2015-01-09 18:54:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function login_form($next_url) {
|
2017-11-21 23:32:42 +00:00
|
|
|
form_start(secure_url_base()."/login_action.php", "post");
|
|
|
|
form_input_hidden("next_url", $next_url);
|
2015-01-09 18:54:05 +00:00
|
|
|
if (LDAP_HOST) {
|
|
|
|
$x = "Email address or LDAP user name:";
|
|
|
|
} else {
|
|
|
|
$x = tra("Email address:");
|
|
|
|
}
|
2017-11-21 23:32:42 +00:00
|
|
|
form_input_text($x, "email_addr");
|
|
|
|
form_input_text(
|
|
|
|
tra("Password:").'<br><small><a href="get_passwd.php">' . tra("forgot password?") . "</a></small>",
|
|
|
|
"passwd",
|
|
|
|
"",
|
2018-02-28 00:56:59 +00:00
|
|
|
"password",
|
|
|
|
'id="passwd"',
|
|
|
|
passwd_visible_checkbox("passwd")
|
2015-01-09 18:54:05 +00:00
|
|
|
);
|
2018-01-06 09:07:27 +00:00
|
|
|
form_checkboxes(tra("Stay logged in"),
|
|
|
|
array(array("stay_logged_in", "", true))
|
|
|
|
);
|
2017-11-21 23:32:42 +00:00
|
|
|
form_submit("Log in");
|
|
|
|
form_end();
|
2015-01-09 18:54:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|