<?php
// ========================
// VÉRIFICATION TOKEN
// ========================

session_start();

// Si token en URL, vérifier et créer session
if (isset($_GET['token'])) {
  $token = $_GET['token'];
  $tokens_file = '/volume1/web/cyrilis/depot-client/tokens.txt';
  
  if (file_exists($tokens_file)) {
    $lines = file($tokens_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $token_found = false;
    
    foreach ($lines as $line) {
      $parts = explode('|', $line);
      if (count($parts) === 4) {
        $email = $parts[0];
        $company = $parts[1];
        $stored_token = $parts[2];
        $expiry = (int)$parts[3];
        
        if ($stored_token === $token && $expiry > time()) {
          // Token valide ! Créer dossier + session
          $client_folder = '/volume1/web/cyrilis/depot fichiers/' . preg_replace('/[^a-zA-Z0-9_-]/', '_', $company);
          if (!is_dir($client_folder)) {
            @mkdir($client_folder, 0755, true);
          }
          
          // Créer session
          $_SESSION['email'] = $email;
          $_SESSION['client_name'] = $company;
          $_SESSION['logged_in'] = true;
          
          // Rediriger vers upload.php
          header('Location: upload.php');
          exit;
        }
      }
    }
  }
  
  // Token invalide ou expiré
  $token_error = true;
}
?>
<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Cyrilis — Espace de dépôt sécurisé</title>
  <meta name="description" content="Espace sécurisé Cyrilis pour le dépôt de fichiers de production." />
  <style>
    :root {
      --magenta: #CC35C8;
      --violet: #5B3FD4;
      --cyan: #29C5C5;
      --text: #f5f2eb;
      --muted: #a8abb4;
      --line: rgba(255,255,255,.10);
      --radius: 16px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    
    body {
      margin: 0;
      min-height: 100vh;
      color: var(--text);
      background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);
      background-image: url('image_9.jfif');
      background-size: cover;
      background-position: center;
      background-attachment: fixed;
      background-repeat: no-repeat;
      font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      -webkit-font-smoothing: antialiased;
      position: relative;
    }

    body::after {
      content: "";
      position: fixed;
      inset: 0;
      background: rgba(15, 12, 41, 0.75);
      backdrop-filter: blur(8px);
      pointer-events: none;
      z-index: 0;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      opacity: .1;
      background-image:
        linear-gradient(rgba(255,255,255,.02) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.02) 1px, transparent 1px);
      background-size: 48px 48px;
      mask-image: linear-gradient(to bottom, black, transparent 85%);
    }

    .shell {
      width: min(1180px, calc(100% - 40px));
      margin: 0 auto;
      position: relative;
      z-index: 2;
    }

    .topbar {
      height: 90px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      border-bottom: 1px solid rgba(255,255,255,.08);
      backdrop-filter: blur(8px);
    }

    .brand {
      display: none;
    }

    .topmeta {
      display: flex;
      gap: 40px;
      font-size: 16px;
      color: var(--text);
      font-weight: 600;
      letter-spacing: 0.5px;
    }

    .topmeta a {
      text-decoration: none;
      color: inherit;
      display: flex;
      align-items: center;
      gap: 8px;
      transition: all 0.3s ease;
      border-bottom: 2px solid transparent;
    }

    .topmeta a:hover {
      transform: translateY(-2px);
      border-bottom-color: var(--cyan);
      filter: brightness(1.1);
    }

    .topmeta strong {
      font-weight: 700;
      background: linear-gradient(135deg, var(--magenta), var(--cyan));
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
    }

    main { padding: 80px 0 100px; }

    .hero {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 60px;
      align-items: center;
    }

    .hero-left .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      color: var(--cyan);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      margin-bottom: 16px;
    }

    .eyebrow::before {
      content: "";
      width: 30px;
      height: 1px;
      background: linear-gradient(90deg, var(--cyan), transparent);
    }

    h1 {
      font-family: Georgia, 'Times New Roman', serif;
      font-size: clamp(44px, 5vw, 72px);
      line-height: 1.1;
      margin: 16px 0 20px;
      font-weight: 500;
      letter-spacing: -0.02em;
      max-width: 600px;
    }

    h1 em {
      font-style: normal;
      background: linear-gradient(135deg, var(--magenta), var(--cyan));
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
    }

    .intro {
      max-width: 580px;
      color: rgba(255,255,255,.7);
      font-size: 16px;
      line-height: 1.7;
      margin: 0 0 40px;
    }

    .card {
      position: relative;
      border: 1px solid rgba(204,53,200,.25);
      border-radius: 20px;
      padding: 40px;
      background: linear-gradient(135deg, rgba(30,32,50,.4), rgba(20,25,45,.3));
      backdrop-filter: blur(20px);
      box-shadow: 0 20px 60px rgba(204,53,200,.1);
      overflow: hidden;
    }

    .card::before {
      content: "";
      position: absolute;
      inset: 0 0 auto 0;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--magenta), var(--cyan), transparent);
      opacity: 0.6;
    }

    .secure-row {
      display: flex;
      align-items: center;
      gap: 16px;
      margin-bottom: 32px;
    }

    .secure-icon {
      width: 56px;
      height: 56px;
      border-radius: 14px;
      display: grid;
      place-items: center;
      background: linear-gradient(135deg, rgba(204,53,200,.15), rgba(91,63,212,.1));
      border: 1px solid rgba(204,53,200,.3);
      color: var(--magenta);
      flex-shrink: 0;
    }

    .secure-icon svg {
      width: 26px;
      height: 26px;
      stroke: currentColor;
    }

    .secure-row h2 {
      margin: 0;
      font-size: 20px;
      letter-spacing: -0.01em;
    }

    .secure-row p {
      margin: 6px 0 0;
      color: rgba(255,255,255,.6);
      font-size: 13px;
    }

    .field {
      margin-top: 22px;
    }

    label {
      display: block;
      font-size: 10px;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255,255,255,.7);
      font-weight: 700;
      margin-bottom: 10px;
    }

    input {
      width: 100%;
      height: 54px;
      border-radius: 12px;
      border: 1px solid rgba(255,255,255,.1);
      background: rgba(255,255,255,.03);
      color: #fff;
      padding: 0 16px;
      font-size: 14px;
      outline: none;
      transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
    }

    input::placeholder {
      color: rgba(255,255,255,.4);
    }

    input:focus {
      border-color: var(--magenta);
      box-shadow: 0 0 0 3px rgba(204,53,200,.1);
      background: rgba(255,255,255,.06);
    }

    button {
      width: 100%;
      height: 56px;
      border: 0;
      border-radius: 12px;
      margin-top: 28px;
      cursor: pointer;
      color: #fff;
      background: linear-gradient(135deg, var(--magenta), var(--violet));
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      box-shadow: 0 12px 32px rgba(204,53,200,.2);
      transition: transform 0.2s, filter 0.2s, box-shadow 0.2s;
    }

    button:hover {
      transform: translateY(-2px);
      filter: brightness(1.08);
      box-shadow: 0 16px 40px rgba(204,53,200,.3);
    }

    button:active {
      transform: translateY(0);
    }

    .note {
      margin-top: 24px;
      padding: 20px;
      border-radius: 14px;
      border: 1px solid rgba(255,255,255,.1);
      background: rgba(255,255,255,.02);
      backdrop-filter: blur(8px);
      display: flex;
      gap: 14px;
      align-items: flex-start;
    }

    .note i {
      font-style: normal;
      color: var(--cyan);
      font-size: 18px;
      line-height: 1;
    }

    .note strong {
      display: block;
      font-size: 13px;
      color: rgba(255,255,255,.9);
      margin-bottom: 6px;
    }

    .note p {
      margin: 0;
      color: rgba(255,255,255,.6);
      font-size: 12px;
      line-height: 1.6;
    }

    .status {
      display: none;
      margin-top: 16px;
      padding: 14px;
      border-radius: 12px;
      font-size: 13px;
      line-height: 1.5;
    }

    .status.ok {
      display: block;
      background: rgba(41,197,197,.15);
      border: 1px solid rgba(41,197,197,.3);
      color: var(--cyan);
    }

    .status.err {
      display: block;
      background: rgba(255,107,107,.15);
      border: 1px solid rgba(255,107,107,.3);
      color: #ff9c9c;
    }

    .footer {
      margin-top: 80px;
      padding-top: 30px;
      border-top: 1px solid rgba(255,255,255,.08);
      display: flex;
      justify-content: space-between;
      gap: 20px;
      color: rgba(255,255,255,.5);
      font-size: 12px;
    }

    .footer strong {
      color: rgba(255,255,255,.7);
      font-weight: 600;
    }

    @media(max-width: 900px) {
      .hero {
        grid-template-columns: 1fr;
        gap: 50px;
      }
      main { padding-top: 60px; }
      .footer { flex-direction: column; }
    }
  </style>
</head>
<body>
  <header class="shell topbar">
    <div class="brand"></div>
    <div class="topmeta">
      <a href="tel:+33632538127" style="display: flex; align-items: center; gap: 8px;">
        <span style="font-size: 20px;">📞</span>
        <strong>06 32 53 81 27</strong>
      </a>
      <a href="mailto:contact@cyrilis.fr" style="display: flex; align-items: center; gap: 8px;">
        <span style="font-size: 20px;">✉️</span>
        <span>contact@cyrilis.fr</span>
      </a>
      <a href="https://cyrilis.fr/" style="display: flex; align-items: center; gap: 8px; margin-left: auto; padding: 10px 16px; background: linear-gradient(135deg, #CC35C8 0%, #5B3FD4 100%); color: #ffffff; border-radius: 8px; font-weight: 500; text-decoration: none; transition: all 0.3s ease;">
        <span>←</span>
        <span>Retour site Cyrilis</span>
      </a>
    </div>
  </header>

  <main class="shell">
    <section class="hero">
      <div class="hero-left">
        <div class="eyebrow">Transmission de fichiers</div>
        <h1>Votre espace de <em>dépôt sécurisé.</em></h1>
        <p class="intro">Déposez vos fichiers de production dans un espace réservé à votre entreprise. Une fois votre demande validée, vous recevez un lien personnel vous permettant d'accéder au dépôt Cyrilis.</p>
      </div>

      <form class="card" method="POST" novalidate>
        <?php if (isset($token_error)): ?>
          <div class="status err">
            ❌ Lien invalide ou expiré. Veuillez demander un nouvel accès.
          </div>
        <?php endif; ?>

        <div class="secure-row">
          <div class="secure-icon" aria-hidden="true">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
              <rect x="4" y="10" width="16" height="11" rx="2"></rect>
              <path d="M8 10V7a4 4 0 0 1 8 0v3"></path>
              <path d="M12 14v3"></path>
            </svg>
          </div>
          <div>
            <h2>Demander l'accès</h2>
            <p>Identifiez votre entreprise et le responsable autorisé.</p>
          </div>
        </div>

        <div class="field">
          <label for="company">Nom de votre entreprise</label>
          <input id="company" name="company" type="text" autocomplete="organization" placeholder="Ex. ABC Printing SARL" required />
        </div>

        <div class="field">
          <label for="email">E-mail du responsable autorisé</label>
          <input id="email" name="email" type="email" autocomplete="email" placeholder="responsable@votreentreprise.com" required />
        </div>

        <button type="submit">Demander mon accès →</button>
        <div id="status" class="status" role="status" aria-live="polite"></div>

        <div class="note">
          <i>ⓘ</i>
          <div>
            <strong>Comment ça fonctionne ?</strong>
            <p>Après vérification de votre demande, Cyrilis vous adresse par e-mail un lien sécurisé et personnel pour transmettre vos fichiers.</p>
          </div>
        </div>
      </form>
    </section>

    <footer class="footer">
      <span>© Cyrilis — Tous droits réservés</span>
      <span><strong>Fichiers recommandés :</strong> PDF haute qualité · CMJN · 300 dpi</span>
    </footer>
  </main>

  <script>
    const form = document.querySelector('form');
    const status = document.getElementById('status');

    form.addEventListener('submit', (e) => {
      e.preventDefault();
      const company = form.company.value.trim();
      const email = form.email.value.trim();
      const validEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);

      if (!company || !validEmail) {
        status.className = 'status err';
        status.textContent = 'Merci de renseigner le nom de votre entreprise et une adresse e-mail valide.';
        return;
      }

      status.className = 'status ok';
      status.textContent = 'Présentation validée. Vérification en cours... Vous recevrez un lien d\'accès par e-mail dans quelques instants.';
      
      form.submit();
    });
  </script>
</body>
</html>

<?php
// ========================
// TRAITEMENT DEMANDE D'ACCÈS - SENDMAIL
// ========================

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['company']) && isset($_POST['email'])) {
  
  $company = trim($_POST['company']);
  $email = trim($_POST['email']);
  
  if (empty($company) || empty($email)) {
    http_response_code(400);
    exit('Données manquantes');
  }
  
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    http_response_code(400);
    exit('Email invalide');
  }
  
  // Créer le dossier client
  $client_folder = '/volume1/web/cyrilis/depot fichiers/' . preg_replace('/[^a-zA-Z0-9_-]/', '_', $company);
  if (!is_dir($client_folder)) {
    @mkdir($client_folder, 0755, true);
  }
  
  // Générer token (32 bytes)
  $token = bin2hex(random_bytes(32));
  $expiry = time() + 86400; // +24h
  
  // Stocker token
  $tokens_file = '/volume1/web/cyrilis/depot-client/tokens.txt';
  $line = "$email|$company|$token|$expiry\n";
  @file_put_contents($tokens_file, $line, FILE_APPEND);
  
  // Email
  $subject = 'Cyrilis - Accès à votre espace de dépôt fichiers';
  $magic_link = 'https://cyrilis.fr/depot-client/?token=' . $token;
  
  $message = "Bonjour,\n\n";
  $message .= "Votre demande d'accès au dépôt fichiers Cyrilis a été validée.\n\n";
  $message .= "Cliquez sur le lien ci-dessous pour accéder à votre espace de dépôt :\n";
  $message .= "$magic_link\n\n";
  $message .= "Ce lien expire dans 24 heures.\n\n";
  $message .= "Cordialement,\n";
  $message .= "L'équipe Cyrilis\n";
  $message .= "contact@cyrilis.fr\n";
  $message .= "06 32 53 81 27";
  
  $headers = "To: $email\r\n";
  $headers .= "From: contact@cyrilis.fr\r\n";
  $headers .= "Reply-To: contact@cyrilis.fr\r\n";
  $headers .= "Subject: $subject\r\n";
  $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
  
  $full_message = "$headers\r\n$message";
  
  // Sendmail direct avec -f pour forcer l'expéditeur
  $proc = proc_open('/usr/sbin/sendmail -t -i -f contact@cyrilis.fr', array(
    0 => array('pipe', 'r'),
    1 => array('pipe', 'w'),
    2 => array('pipe', 'w')
  ), $pipes);
  
  if (is_resource($proc)) {
    fwrite($pipes[0], $full_message);
    fclose($pipes[0]);
    fclose($pipes[1]);
    fclose($pipes[2]);
    proc_close($proc);
  }
  
  header('Location: ' . $_SERVER['REQUEST_URI'] . '?success=1');
  exit;
}
?>
