Error message component and form logic done

This commit is contained in:
2021-10-22 12:15:24 -03:00
parent d1a428a3e9
commit 3d09def619
12 changed files with 279 additions and 17 deletions

View File

@@ -457,11 +457,25 @@ header .redirect-button:hover {
border-bottom: 0;
border: 1px solid #797979;
}
.form-container .loading {
opacity: 70%;
}
@media (min-width: 991.98px) {
.form-container {
margin: 0px 20vw;
}
}
.message-container {
padding: 4vh 5vw;
display: flex;
justify-content: center;
align-items: center;
background-color: #ff4e4e;
}
.message-container h2 {
color: #fff;
margin: 0;
}
/*# sourceMappingURL=index.css.map */

View File

@@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../sass/index.scss","../sass/_header.scss","../sass/_game-container.scss","../sass/_hangman.scss","../sass/_word.scss","../sass/_current-score.scss","../sass/_categories.scss","../sass/_defeat-victory.scss","../sass/_loading.scss","../sass/_letters-registered.scss","../sass/_letter-input.scss","../sass/_form.scss"],"names":[],"mappings":";AAAA;EACI;EACA;;;ACFJ;EACI;EAEA;EAEA;EACA;EACA;EACA;;AAEA;EDHA;EACA;EAIA;EACA;;ACGA;EDTA;EACA;EAIA;EACA;ECMI;EACA;EAEA;;AAGJ;EACI;EACA;EAEA;EACA;EAIA,kBAFkB;EAGlB;EACA;EAEA;EACA;EAEA;EAEA;;AAEA;EACI;EAEA;;;AAMZ;EAIQ;IAEI;IACA;IAEA;IACA;IAEA;;EAEA;IACI;IACA;;;AAMhB;EAIQ;IACI;IACA;;;AClFZ;EAEI;EACA;EAEA;;AAMA;EACI;EACA;EAEA;;;AAIR;EAEI;IAEI;IACA;IACA;;EAEA;IACI;;EAII;IAEI;;EAKZ;IACI;IACA;IAEA;IACA;IACA;;;AAKZ;;AAAA;AClDA;EAEI;;AAEA;EACI;;;ACLR;EJkBI;EACA;EIhBA;EAEA;EACA;EAEA;EAEA;EACA;;AAEA;EACI;EACA;EACA;EAEA;EAEA;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EAEA;EAEA;;;AAIR;EAIQ;IAEI;;EAGJ;IACI;;;AAKZ;EAIQ;IAEI;;;AC3DZ;EAEI;EAEA;ELGA;EACA;EKAA;EAEA;;AAEA;EACI;;;ACbR;EAEI;;AAEA;EAEI;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;;AAKA;EACI;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACI;EACA;;AA0BJ;EArBI,OAFuD;EAIvD,kBAoBc;EAnBd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAYZ;EA3BI,OAFuD;EAIvD,kBA0Bc;EAzBd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAkBZ;EAjCI,OAFuD;EAIvD,kBAgCc;EA/Bd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAwBZ;EAvCI,OAyCY;EAvCZ,kBAsCc;EArCd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AA+BZ;EA9CI,OAFuD;EAIvD,kBA6Cc;EA5Cd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAqCZ;EApDI,OAsDY;EApDZ,kBAmDc;EAlDd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AA4CZ;EA3DI,OAFuD;EAIvD,kBA0Dc;EAzDd;EAEA;EAEA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAmDhB;EACI;EAEA;EACA;;AAEA;EAEI;;AAIR;EACI;;AAIJ;EACI;EACA;;AAEA;EAEI;;AAGJ;EAEI;;;AAMhB;EAIQ;IACI;;EAEA;IAEI;;;AClKhB;EACI;EACA;EACA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;EAEA;EAEA;;AAEA;EACI;EACA;;;AAIR;EACI;;;AAGJ;EACI;;;AAGJ;EAEI;IAEI;IACA;;;ACvCR;EACI;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EACA;;AAEA;EACI;EACA;;;ACnBR;EACI;EAEA;EAEA;EAEA;EACA;EACA;EAEA;;AAEA;EACI;;;ACdR;EACI;EAEA;EACA;EACA;;AAEA;EAII,OAFO;EAGP,QAHO;EAKP;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;ACvBR;EAEI;;AAEA;EAEI;EAGA;EACA;;AAEA;EAGI;EACA,kBAHkB;EAKlB;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAEA;EAEI;EACA;EACA;;AAMZ;EAEI;EAEA;EACA;EAEA;EAEA;;AAEA;EAEI;EACA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;;AAEA;EACI;EAEA;EACA;;;AAOhB;EAEI;IAEI","file":"index.css"}
{"version":3,"sourceRoot":"","sources":["../sass/index.scss","../sass/_header.scss","../sass/_game-container.scss","../sass/_hangman.scss","../sass/_word.scss","../sass/_current-score.scss","../sass/_categories.scss","../sass/_defeat-victory.scss","../sass/_loading.scss","../sass/_letters-registered.scss","../sass/_letter-input.scss","../sass/_form.scss","../sass/_message.scss"],"names":[],"mappings":"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","file":"index.css"}

View File

@@ -71,6 +71,10 @@
}
}
}
.loading {
opacity: 70%;
}
}
@media (min-width: 991.98px) {

16
public/sass/_message.scss Normal file
View File

@@ -0,0 +1,16 @@
.message-container {
padding: 4vh 5vw;
display: flex;
justify-content: center;
align-items: center;
background-color: rgb(255, 78, 78);
h2 {
color: #fff;
margin: 0;
}
}

View File

@@ -26,4 +26,5 @@ html, body {
@import 'loading';
@import 'letters-registered';
@import 'letter-input';
@import 'form';
@import 'form';
@import 'message';

View File

@@ -0,0 +1,20 @@
import { getFirestore, collection, getDocs } from 'firebase/firestore/lite';
import { firestore } from '../../../../../Firebase/Firebase_Config';
const BringAdminCode = async () => {
try {
const db = getFirestore(firestore)
const data = await collection(db, 'adminCodes')
const result = await getDocs(data)
return await result.docs.map(doc => doc.data())
} catch (error) {
console.log(error)
}
}
export default BringAdminCode

View File

@@ -0,0 +1,19 @@
import { firestore } from '../../../../../Firebase/Firebase_Config'
import {getAuth, createUserWithEmailAndPassword} from 'firebase/auth'
const RegisterNewUser = async (email, password, setMessage) => {
const auth = getAuth()
try {
const response = await createUserWithEmailAndPassword(auth, email, password)
console.log(response)
} catch (error) {
setMessage('There has been an error registering the user. Please try again later')
console.log(error)
}
}
export default RegisterNewUser

View File

@@ -0,0 +1,21 @@
import { firestore } from "../../../../../Firebase/Firebase_Config"
import {getAuth, signInWithEmailAndPassword} from 'firebase/auth'
const SignIn = async (data, setMessage) => {
const auth = getAuth()
const email = data[0]
const password = data[1]
try {
const response = await signInWithEmailAndPassword(auth, email, password)
console.log(response)
} catch (error) {
console.log(error)
setMessage('User or Password wrong')
}
}
export default SignIn

View File

@@ -1,27 +1,83 @@
import React from 'react'
import React, {useState} from 'react'
import Loading from '../../../Game/components/Loading/Loading'
import MessageContainer from './MessageContainer'
import FormActions from './Scripts/FormActions'
const Form = () => {
const [option, setOption] = React.useState('login')
const [option, setOption] = useState('login')
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const [confirmPassword, setConfirmPassword] = useState('')
const [adminReferredCode, setAdminReferredCode] = useState('')
const [loading, setLoading] = useState(false)
const [message, setMessage] = useState(false)
const clearStates = () => {
setEmail('')
setPassword('')
setConfirmPassword('')
setAdminReferredCode('')
setMessage(false)
}
return (
<div className="form-container">
{
message ?
<MessageContainer message={message} />
: null
}
<nav className="options-container">
<div className={option === 'login' ? "active option" : 'option'} onClick={() => setOption('login')}>
<div
className={option === 'login' ? "active option" : 'option'}
onClick={() => {
setOption('login')
clearStates()
}}
>
LOGIN
</div>
<div className={option === 'register' ? "active option" : 'option'} onClick={() => setOption('register')}>
<div
className={option === 'register' ? "active option" : 'option'}
onClick={() => {
setOption('register')
clearStates()
}}
>
REGISTER
</div>
</nav>
{
option === 'login' ?
<form>
<input type="email" placeholder="Email" id="login-email"/>
<input type="password" placeholder="Password" id="login-password"/>
<input type="submit" value="Login" id="login-submit"/>
<form
onSubmit={(e) => {
setLoading(true)
FormActions(e, [email, password], option, setLoading, setMessage)
clearStates()
}}
>
<input
type="email"
placeholder="Email"
required
onChange={(e) => setEmail(e.target.value)}
value={email}
/>
<input
type="password"
placeholder="Password"
onChange={(e) => setPassword(e.target.value)}
value={password}
/>
<input type="submit" value="Login"/>
</form>
: null
@@ -29,16 +85,51 @@ const Form = () => {
{
option === 'register' ?
<form>
<input type="email" placeholder="Email" id="register-email"/>
<input type="password" placeholder="Password" id="register-password"/>
<input type="password" placeholder="Confirm Password" id="register-confirm-password"/>
<input type="password" placeholder="Admin Referred Code" id="register-admin-code"/>
<input type="submit" value="Register" id=""/>
<form
onSubmit={(e) => {
FormActions(e, [email, password, confirmPassword, adminReferredCode], option, setLoading, setMessage)
clearStates()
setLoading(true)
}}
>
<input
type="email"
placeholder="Email"
required
onChange={(e) => setEmail(e.target.value)}
value={email}
/>
<input
type="password"
placeholder="Password"
required
onChange={(e) => setPassword(e.target.value)}
value={password}
/>
<input
type="password"
placeholder="Confirm Password"
required
onChange={(e) => setConfirmPassword(e.target.value)}
value={confirmPassword}
/>
<input
type="password"
placeholder="Admin Referred Code"
required
onChange={(e) => {setAdminReferredCode(e.target.value)}}
value={adminReferredCode}
/>
<input type="submit" value="Register" />
</form>
: null
}
{
loading ?
<Loading />
: null
}
</div>
)
}

View File

@@ -0,0 +1,11 @@
import React from 'react'
const MessageContainer = (props) => {
return (
<div className="message-container">
<h2>{props.message}</h2>
</div>
)
}
export default MessageContainer

View File

@@ -0,0 +1,20 @@
import SignIn from "../Firebase Querys/Sign In"
import ValidateRegister from "./ValidateRegister"
const FormActions = async (e, data, option, setLoading, setMessage) => {
e.preventDefault()
if (option === 'login') {
await SignIn(data, setMessage)
setLoading(false)
}
if (option === 'register') {
await ValidateRegister(data, setMessage)
setLoading(false)
}
}
export default FormActions

View File

@@ -0,0 +1,45 @@
import React from 'react'
import BringAdminCode from '../Firebase Querys/BringAdminCode'
import RegisterNewUser from '../Firebase Querys/RegisterNewUser'
const ValidateRegister = async (data, setMessage) => {
const email = data[0]
const password = data[1]
const confirmPassword = data[2]
const adminRefferCode = data[3]
if (password.length < 6) {
console.log('PASSWORD TOO SHORT')
setMessage('Password too short')
return false
}
if (password !== confirmPassword) {
console.log('LAS CONTRASEÑAS NO COINCIDEN')
setMessage('The Passwords not match')
return false
}
const documents = await BringAdminCode()
let adminRefferCodeIsValid = false
documents.forEach(document => {
if (adminRefferCode === document.code) {
adminRefferCodeIsValid = true
RegisterNewUser(email, password, setMessage)
}
});
if (!adminRefferCodeIsValid) {
setMessage('Admin Reffer Code not valid')
}
}
export default ValidateRegister