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 */ public function createToken(string $username): string { $now = time(); $future = strtotime('+2 day', $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 */ public 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 userData * @param $email - email address of the userData * @return string - verification code */ public 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 = "
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 */ public 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; } }