<!DOCTYPE html>
<html lang="en-ie">
<head>
  <meta charset="UTF-8"/>
  <title>Account Recovery</title>
  <link rel="icon" type="image/png" href="../images/favicon/favicon-16x16.png"/>
  <link rel="stylesheet" type="text/css" href="../stylesheets/index.css"/>
</head>
<body>
<div id="title">
  <a href="../"><img src="../images/sharky_vector_svg.svg" alt="Picture of Sharky, the mascot of skynet" width="145"
                     height="81.56"/> </a>
  <h1>Skynet Password Reset & Sign-up service</h1>
</div>
<div class="boxes">
  <h2>Forgot Password</h2>
  <p>Please use this page to request a password reset link to your linked email.</p>
    <form id="recovery">
      <table id="table">    
        <tr>  
          <td><label for="username">Username</label> </td>
          <td><input type="text" id="username" name="username"/> <br/></td>
        </tr>  
        <tr>  
          <td>Or<br/></td>
        </tr>
        <tr>  
          <td><label for="email">Email</label> </td>
          <td><input type="text" id="email" name="email"/> <br/></td>
        </tr>  
        <tr>
          <td colspan="2"><input type="submit" value="submit"/></td> 
        </tr>
         </table>
    </form>
    <p id="formStatus"></p>
</div>
<footer>
  UL Computer Society 2023-<span id="year">2023</span>
</footer>
<script>
  const formEl = document.getElementById('recovery');
  formEl.addEventListener('submit', formHandler);

  async function formHandler(listener) {
    listener.preventDefault();

    // reset teh form status
    document.getElementById('formStatus').innerHTML = "";

    const formData = new FormData(formEl);
    const username = formData.get('username').trim();
    const email = formData.get('email').trim();

    if (username.length === 0 && email.length === 0) {
      document.getElementById('formStatus').innerHTML = "<span style='background-color: red; color: white'>Please enter username or email</span>";
      return;
    }

    let to_send = {
      email: email
    };

    // assuming username is not empty it is the preferred method
    if (username.length > 0) {
      to_send = {user: username};
    }

    let url = "https://api.account.skynet.ie/ldap/recover/password";

    try {
      let req = await fetch(url, {
        method: 'POST',
        body: JSON.stringify(to_send),
        mode: "cors"
      });

      if (req.status === 200) {
        document.getElementById('formStatus').innerHTML = "<span style='background-color: green; color: white'>Success Please check emails</span>";
      } else {
        document.getElementById('formStatus').innerHTML = "<span style='background-color: red; color: white'>Failure: Failed to communicate to server</span>";
      }
    } catch (e) {
      document.getElementById('formStatus').innerHTML = `<span style='background-color: red; color: white'>Error: ${e}</span>`;
    }
  }
</script>
</body>
<script>
  document.getElementById('year').textContent = new Date().getFullYear().toString()
</script>
</html>