diff --git a/PROF-XXI FW Tool/client/src/components/pages/validation/registration/RegistrationWithValidation.js b/PROF-XXI FW Tool/client/src/components/pages/validation/registration/RegistrationWithValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..9b88a49608b0f2e55738027d9d2d1bc5bdf27a4e --- /dev/null +++ b/PROF-XXI FW Tool/client/src/components/pages/validation/registration/RegistrationWithValidation.js @@ -0,0 +1,179 @@ +import React, { useState, useEffect } from "react"; +import Axios from "axios"; +import "../../Default.css"; +import Footer from "../../../Footer"; + +import RegistrationForm from "./RegistrationForm"; +import validateRegistration from "./validateRegistration"; + +function Registration() { + const [gdpr, setGdpr] = useState(false); + const [registrationState, setregistrationState] = useState(""); + + Axios.defaults.withCredentials = true; + + const register = () => { + if (gdpr) { + Axios.post("/api/user/register", { + user: user, + }).then((response) => { + setregistrationState(response.data.message); + }); + } else { + console.log("You need to accept the terms of GDPR"); + } + }; + const { handleChange, handleSubmit, user, errors } = RegistrationForm( + register, + validateRegistration + ); + + useEffect(() => { + document.title = "Registration"; + }, []); + + return ( + <> + <h2> Registration Form</h2> + <div className="middle-container"> + <article className="form"> + <form> + <div> + <label htmlFor="organizationName">Name of organization : </label> + <input + type="text" + id="organizationName" + name="organizationName" + value={user.organizationName} + onChange={handleChange} + /> + </div> + + <h5 className="warning">{errors.organizationName}</h5> + + <div> + <label htmlFor="universityWebsite"> + Your university's official website : + </label> + <input + type="text" + id="universityWebsite" + name="universityWebsite" + value={user.universityWebsite} + onChange={handleChange} + /> + </div> + + <div> + <label htmlFor="firstName">First Name :</label> + <input + type="text" + id="firstName" + name="firstName" + value={user.firstName} + onChange={handleChange} + /> + </div> + <h5 className="warning"> {errors.firstName}</h5> + + <div> + <label htmlFor="lastName">Last Name :</label> + <input + type="text" + id="lastName" + name="lastName" + value={user.lastName} + onChange={handleChange} + /> + </div> + + <div> + <label htmlFor="position">Position :</label> + <select + name="position" + id="position" + value={user.position} + onChange={handleChange} + > + <option value="Teacher">Teacher</option> + <option value="Administrator"> Administrator</option> + <option value="Manager"> Manager</option> + </select> + </div> + + <div> + <label htmlFor="profile">Your profile :</label> + <input + type="text" + id="profile" + name="profile" + value={user.profile} + onChange={handleChange} + /> + <p style={{ color: "blue" }}> + Examples : LinkedIn / researchGate / University profile + </p> + </div> + + <div> + <label htmlFor="email">Your email :</label> + <input + type="email" + id="email" + name="email" + value={user.email} + onChange={handleChange} + /> + </div> + <h5 className="warning">{errors.email}</h5> + + <div> + <label htmlFor="password">Your password :</label> + <input + type="password" + id="password" + name="password" + value={user.password} + onChange={handleChange} + /> + </div> + <h5 className="warning"> {errors.password}</h5> + + <div> + <label htmlFor="gdpr"> </label> + <input + name="gdpr" + type="checkbox" + defaultChecked={gdpr} + onChange={() => setGdpr(!gdpr)} + ></input> + <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679"> + <span style={{ color: "red" }}> + General Data Protection Regulation + </span> + </a> + </div> + + <button type="submit" className="btn" onClick={handleSubmit}> + Send + </button> + <h4 style={{ color: "red", marginTop: "2rem" }}> + {registrationState} + </h4> + </form> + </article> + + <img + style={{ marginLeft: "10rem" }} + width="50%" + height="50%" + src="images/design2.jpg" + alt="" + /> + </div> + <Footer /> + </> + ); +} + +export default Registration;