prepare("SELECT * FROM users WHERE username = :username"); $stmt->bindParam(":username", $username); $stmt->execute(); // set the resulting array to associative $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($result) { if (password_verify($password, $result[0]["password"])) { return true; } return false; } return false; } /** * Create a JWT token * @param $username string - Username * @return string - JWT token */ function createToken(string $username): string { $now = time(); $future = strtotime('+6 hour',$now); $secretKey = getSecretKey(); $payload = [ "jti"=>$username, "iat"=>$now, "exp"=>$future ]; return JWT::encode($payload,$secretKey,"HS256"); } /** * Check if email is already in use * @param string $email - Email to check * @return bool - True if email exists, false if not */ function checkEmail(string $email): bool { $conn = dbConn(); $stmt = $conn->prepare("SELECT * FROM users WHERE email = :email"); $stmt->bindParam(":email", $email); $stmt->execute(); // set the resulting array to associative $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($result) { return true; } return false; } /** * Send a verification email to the user * @param $email - email address of the user * @return string - verification code */ function sendResetEmail($email): string { //generate a random token and email the address $token = uniqid("rpe-"); $headers1 = "From: noreply@rohitpai.co.uk\r\n"; $headers1 .= "MIME-Version: 1.0\r\n"; $headers1 .= "Content-Type: text/html; charset=UTF-8\r\n"; $message = " Document

Reset Password Verification Code


Please enter the following code to reset your password: $token

"; mail($email, "Reset Password Verification Code", $message, $headers1); return $token; } /** * Change password for an email with new password * @param $email string Email * @param $password string Password * @return bool - true if the password was changed, false if not */ function changePassword(string $email, string $password): bool { $conn = dbConn(); $stmt = $conn->prepare("UPDATE users SET password = :password WHERE email = :email"); $newPwd = password_hash($password, PASSWORD_BCRYPT); $stmt->bindParam(":password", $newPwd); $stmt->bindParam(":email", $email); if ($stmt->execute()) { return true; } return false; } }