CoolFace
Apppublic

DataScope26/WEB

sourceHugging Faceupdated 7d agoView on Hugging Face
0likes
AcceptInvite.jsx84 linesDownload Raw Back to pages
1import { useState } from "react";2import { useNavigate, useSearchParams } from "react-router-dom";3import { employeeRegister } from "../services/apiAuth.js";4import { useAuth } from "../context/AuthContext.jsx";5import InvalidInvite from "../components/InvalidInvite.jsx";6import AcceptInviteForm from "../components/AcceptInviteForm.jsx";7import "./AcceptInvite.css";8 9export default function AcceptInvite() {10  const [searchParams] = useSearchParams();11  const inviteToken = searchParams.get("token");12  13  const navigate = useNavigate();14  const { refreshAuth } = useAuth();15  16  const [isLoading, setIsLoading] = useState(false);17  const [error, setError] = useState("");18  const [isInvalid, setIsInvalid] = useState(!inviteToken);19 20  const validatePasswordRules = (password) => {21    if (password.length < 8) return false;22    if (!/[$&+,:;=?@#|'<>.-^*()%!]/.test(password)) return false;23    if (password === password.toUpperCase() || password === password.toLowerCase()) return false;24    return true;25  };26 27  const handleRegister = async (name, password) => {28    if (name.length < 3) {29      setError("El nombre debe tener al menos 3 caracteres.");30      return;31    }32    if (!validatePasswordRules(password)) {33      setError("La contraseña no cumple con los requisitos mínimos.");34      return;35    }36 37    setIsLoading(true);38    setError("");39 40    try {41      const response = await employeeRegister(name, password, inviteToken);42      const { token: jwtToken } = response.data;43      44      sessionStorage.setItem("token", jwtToken);45      localStorage.setItem("token", jwtToken);46      47      if (refreshAuth) await refreshAuth(jwtToken);48      49      navigate("/"); 50    } catch (err) {51      console.error("Error al registrar empleado:", err);52      const backendError = err.response?.data?.error || "";53      54      if (backendError.includes("expired") || backendError.includes("used") || backendError.includes("Invalid token")) {55        setIsInvalid(true);56      } else {57        setError(backendError || "Ocurrió un error al crear tu cuenta. Intenta de nuevo.");58      }59    } finally {60      setIsLoading(false);61    }62  };63 64  if (isInvalid) {65    return <InvalidInvite />;66  }67 68  return (69    <div className="invite-page-layout">70      <div className="invite-modal-override">71        <h1>UNIRTE AL EQUIPO</h1>72        <p className="invite-subtitle">73          Completa tus datos para activar tu cuenta corporativa.74        </p>75 76        <AcceptInviteForm 77          onSubmit={handleRegister} 78          isLoading={isLoading} 79          error={error} 80        />81      </div>82    </div>83  );84}