xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
<root> / inc / user / forgot.php (c58d45b1da81596b98beb3432b0f4ade0cbf4db3) (1,427B) (mode 100644) [raw]
<?php
rg_log("FILE: /inc/user/forgot");

$forgot_token = rg_var_str("forgot_token");
if (empty($forgot_token)) {
	$forgot_token = empty($paras) ? "" : array_shift($paras);
	$forgot_token = preg_replace("/[^A-Za-z0-9]/", "", $forgot_token);
}

$pass1 = rg_var_str("pass1");
$pass2 = rg_var_str("pass2");
$lock_ip = rg_var_uint("lock_ip");

$_forgot = "";

$errmsg = array();

if ($rg['doit'] == 1) {
	if (strcmp($pass1, $pass2) != 0) {
		$errmsg[] = "Passwords mismatch.";
	} else {
		$r = rg_user_forgot_pass_uid($db, $forgot_token);
		if ($r['ok'] != 1) {
			$_forgot .= "Internal error, try again later.<br />\n";
			return;
		}

		if ($r['uid'] == 0) {
			$_forgot .= "Invalid (or expired) reset pass URL;"
				. " try again.<br />\n";
			return;
		}

		if (!rg_user_set_pass($db, $r['uid'], $pass1)) {
			$_forgot .= "Internal error; try again later.<br />\n";
			return;
		}

		rg_user_forgot_pass_destroy($db, $r['uid']);
		// auto-login
		if (!rg_user_auto_login($db, $r['uid'], $lock_ip,
			$rg['https'], $rg['hostname'], $rg['login_ui'])) {
			$_forgot = rg_template("msg/internal_err.html", TRUE /* xss */);
			return;
		}

		// redirect to home
		$url = rg_re_userpage($rg['login_ui']);
		rg_redirect($url);
	}
}

$rg['forgot_token'] = $forgot_token;
$rg['pass1'] = $pass1;
$rg['pass2'] = $pass2;
$rg['HTML:errmsg'] = rg_template_errmsg($errmsg);
$_forgot .= rg_template("user/forgot.html", $rg, TRUE /* xss */);
?>
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master