+
+
+
+ Ingresa a tu cuenta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 35868bab..d7cf359a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,3 +1,221 @@
-import { example } from './example.js';
+/* import { example } from './example.js';
-example();
+example(); */
+var db = firebase.firestore();
+
+//login, instancia del provedor del servicio
+var provider = new firebase.auth.GoogleAuthProvider();
+var providerf = new firebase.auth.FacebookAuthProvider();
+
+let div = document.querySelector('#root');
+//Autentificar con Google
+let btn = document.querySelector('#login');
+btn.addEventListener('click', function () {
+ firebase.auth()//Se llama a la func autenticar
+ .signInWithPopup(provider)//Se va a usar una popUp y se va a loguear con la var provider que es google
+ .then(function (result) {//lo que se hace cuando el usuario ya inicio sension y ya dio permisos, nos dio su info
+ console.log(result.user);//trae info de usuario(correo, nombre, foto, etc)
+ guardaDatos(result.user)//Se le manda a la func guardDatos para hacer uns BD
+ //ocultar el boton y mostrar la foto
+ btn.classList.hide;
+ div.innerHTML = `
+
+ `
+
+ })
+});
+
+//const docData = db.doc('datausers/users');
+//func que guarda los datos gmail automaticamente
+function guardaDatos(user) {
+ //console.log(user);
+ /* firebase.database().ref("usersapp/" + user.uid)//la / y el + user.uid hace que no se duplique el usuario
+ .set(usuario) */
+ const docData = db.doc('datausers/' + user.uid);//la / y el + user.uid hace que no se duplique el usuario
+ docData.set({
+ uid: user.uid,//Servirá para eliminar
+ nombre: user.displayName,//Se obtiene el nom
+ email: user.email,
+ foto: user.photoURL
+ })
+
+ .then(function () {
+ console.log('Los datos se guardaron');
+
+ })
+ .catch(function (error) {
+ console.log('Hubo en error:', error);
+
+ })
+ updateData(docData)
+
+}
+
+
+//se leen los datos de la BD
+
+function updateData(docData) {
+ docData.get().then(function (snapshot) {
+ let myData = snapshot.data();
+ console.log(myData);
+ div.innerHTML = `Hola ${myData.nombre}`
+
+ })
+}
+
+//se leen los datos de la BD
+/* firebase.database().ref("datausers/users")//cuando alguien agregue un elemen a la rama
+ .on("child_added", function (snapshot) {//on escucha si se agrega algo(child_added), recibe snapshot que es el nodo con toda la info del obj telmex
+ //Se agregan las fotos de las personas que ingresan
+ var user = snapshot.val()//val tiene los datos (obj con key y val)
+ div.innerHTML = `
+
+ `
+
+
+ }) */
+
+//Autentificar con facebook
+let btnfb = document.querySelector('#loginfb');
+btnfb.addEventListener('click', function () {
+ firebase.auth()//Se llama a la func autenticar
+ .signInWithPopup(providerf)//Se va a usar una popUp y se va a loguear con la var provider que es google
+ .then(function (result) {//lo que se hace cuando el usuario ya inicio sension y ya dio permisos, nos dio su info
+ console.log(result.user);//trae info de usuario(correo, nombre, foto, etc)
+ guardaDatosFb(result.user)//Se le manda a la func guardDatos para hacer una BD
+ //ocultar el boton y mostrar la foto
+ btn.classList.hide;
+ div.innerHTML = `
+
+ `
+
+ })
+});
+
+//func que guarda los datos gmail automaticamente
+function guardaDatosFb(user) {
+ //console.log(user);
+ /* firebase.database().ref("usersapp/" + user.uid)//la / y el + user.uid hace que no se duplique el usuario
+ .set(usuario) */
+ const docDataFb = db.doc('datausers/' + user.uid);//la / y el + user.uid hace que no se duplique el usuario
+ docDataFb.set({
+ uid: user.uid,//Servirá para eliminar
+ nombre: user.displayName,//Se obtiene el nom
+ email: user.email,
+ foto: user.photoURL
+ })
+
+ .then(function () {
+ console.log('Los datos se guardaron');
+
+ })
+ .catch(function (error) {
+ console.log('Hubo en error:', error);
+
+ })
+ updateDataFb(docDataFb)
+
+}
+
+//se leen los datos de la BD
+
+function updateDataFb(docDataFb) {
+ docDataFb.get().then(function (snapshot) {
+ let myData = snapshot.data();
+ console.log(myData);
+ div.innerHTML = `Hola ${myData.nombre} `
+
+ })
+}
+
+//Crear cuenta con email
+/* document.querySelector('#ingresar').addEventListener('submit', cargarEmail)
+
+function cargarEmail(e) {
+ e.preventDefault();
+
+ //Leer variables del form
+ const valEmail = document.querySelector('#email').value
+ const valPass = document.querySelector('#password').value
+
+ console.log(valEmail);
+ console.log(valPass);
+
+
+} */
+//Leer y guardar los datos del usuario para crear cuenta
+document.querySelector('#create').addEventListener('click', function (e) {
+ e.preventDefault()
+ //Leer variables del form
+ const email = document.querySelector('#email').value
+ const password = document.querySelector('#password').value
+
+ //console.log(valEmail);
+ //console.log(valPass);
+
+ return createUser(email, password)
+})
+//Guardar los datos en firebase y BD
+function createUser(email, password) {
+ console.log(email + password);
+ firebase.auth().createUserWithEmailAndPassword(email, password)
+ .then(function (user) {
+ console.log('Se ha creado la cuenta!');
+ console.log(user.user);
+
+ })
+ .catch(function (error) {
+ console.error(error);
+
+ })
+ const docData = db.doc('datausers/' + email);//la / y el + user.uid hace que no se duplique el usuario
+ docData.set({
+ email: email,
+ password: password
+ })
+
+ .then(function () {
+ console.log('Los datos se guardaron');
+
+ })
+ .catch(function (error) {
+ console.log('Hubo en error:', error);
+
+ })
+
+}
+
+
+//Leer y guardar los datos del us. para despues comparar con los datos almacenados en la BD
+document.querySelector('#enter').addEventListener('click', function (e) {
+ e.preventDefault()
+ //Leer variables del form
+ const email = document.querySelector('#email').value
+ const password = document.querySelector('#password').value
+
+ //console.log(email);
+ //console.log(password)
+ return loginUser(email, password)
+})
+
+//Comparar los datos del usuario con los datos que usó para crear cuenta
+function loginUser(email, password) {
+ console.log(email + password);
+ firebase.auth().signInWithEmailAndPassword(email, password)
+ .then(function (user) {
+ console.log('Datos correctos, bienvenido!')
+ })
+ .catch(function (error) {
+ alert('Upsi, datos incorrectos');
+
+ })
+
+}
+
+//salir de la sesión
+const btnexit = document.querySelector('#salir')
+btnexit.addEventListener('click', signoutUser)
+
+function signoutUser() {
+ firebase.auth().signOut();
+}
\ No newline at end of file
diff --git a/src/styles.css b/src/styles.css
new file mode 100644
index 00000000..d08af301
--- /dev/null
+++ b/src/styles.css
@@ -0,0 +1,57 @@
+.overSmall{
+ display: flex;
+ flex-direction: column;
+ background: rgba(0, 0, 0, .3);
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ align-items: center;
+ justify-content: center;
+ visibility: hidden;
+ }
+ .active{
+ visibility: visible;
+ }
+ .popSmall{
+ display: flex;
+ flex-direction: column;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ width: 500px;
+ height: 700px;
+ background: #F8F8F8;
+ border-radius: 10%;
+ margin-top: 5%;
+ -webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5);
+ }
+ .containerPop{
+
+ margin: 50px;
+ text-align: center;
+ }
+ .closeButton{
+ display: block;
+ text-align: center;
+ margin-right: 7%;
+ }
+ .btn-cerrar-popup{
+ font-size: 40px;
+ display: flex;
+ color: #BBB;
+ }
+ .textSmall{
+ text-align: center;
+ }
+ .imagePop{
+ font-size: 100px;
+ }
+ .acceptDelete{
+ font-size: 70px;
+ color: rgb(11, 155, 18);
+ }
+ .cancelDelete{
+ font-size: 60px;
+ color: rgb(243, 26, 26);
+ }
\ No newline at end of file
diff --git a/storage.rules b/storage.rules
new file mode 100644
index 00000000..d494542e
--- /dev/null
+++ b/storage.rules
@@ -0,0 +1,7 @@
+service firebase.storage {
+ match /b/{bucket}/o {
+ match /{allPaths=**} {
+ allow read, write: if request.auth!=null;
+ }
+ }
+}
From f2a7c1a13fe824da43418cfd0b323620430f5597 Mon Sep 17 00:00:00 2001
From: LizethRivera04 <60666768+LizethRivera04@users.noreply.github.com>
Date: Tue, 14 Apr 2020 16:54:25 -0500
Subject: [PATCH 02/14] email and password validation, bulma install
---
package.json | 3 ++
src/index.js | 83 +++++++++++++++++++++++++++++++++++++++-----------
src/styles.css | 57 ----------------------------------
3 files changed, 68 insertions(+), 75 deletions(-)
diff --git a/package.json b/package.json
index 796f1d15..f59500b2 100644
--- a/package.json
+++ b/package.json
@@ -32,5 +32,8 @@
"serve": "^11.0.2",
"stylelint": "^10.1.0",
"stylelint-config-recommended": "^2.2.0"
+ },
+ "dependencies": {
+ "bulma": "^0.8.2"
}
}
diff --git a/src/index.js b/src/index.js
index d7cf359a..d963118a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,11 +1,12 @@
/* import { example } from './example.js';
example(); */
-var db = firebase.firestore();
+const db = firebase.firestore();
+
//login, instancia del provedor del servicio
-var provider = new firebase.auth.GoogleAuthProvider();
-var providerf = new firebase.auth.FacebookAuthProvider();
+const provider = new firebase.auth.GoogleAuthProvider();
+const providerf = new firebase.auth.FacebookAuthProvider();
let div = document.querySelector('#root');
//Autentificar con Google
@@ -15,6 +16,8 @@ btn.addEventListener('click', function () {
.signInWithPopup(provider)//Se va a usar una popUp y se va a loguear con la var provider que es google
.then(function (result) {//lo que se hace cuando el usuario ya inicio sension y ya dio permisos, nos dio su info
console.log(result.user);//trae info de usuario(correo, nombre, foto, etc)
+
+
guardaDatos(result.user)//Se le manda a la func guardDatos para hacer uns BD
//ocultar el boton y mostrar la foto
btn.classList.hide;
@@ -23,6 +26,10 @@ btn.addEventListener('click', function () {
`
})
+ .catch(function (error) {
+ console.log('No tienes una cuenta Google');
+
+ })
});
//const docData = db.doc('datausers/users');
@@ -97,6 +104,8 @@ function guardaDatosFb(user) {
//console.log(user);
/* firebase.database().ref("usersapp/" + user.uid)//la / y el + user.uid hace que no se duplique el usuario
.set(usuario) */
+ let useremailFb = user.email
+ compareData(useremailFb)
const docDataFb = db.doc('datausers/' + user.uid);//la / y el + user.uid hace que no se duplique el usuario
docDataFb.set({
uid: user.uid,//Servirá para eliminar
@@ -113,10 +122,12 @@ function guardaDatosFb(user) {
console.log('Hubo en error:', error);
})
+
updateDataFb(docDataFb)
}
+
//se leen los datos de la BD
function updateDataFb(docDataFb) {
@@ -128,6 +139,7 @@ function updateDataFb(docDataFb) {
})
}
+
//Crear cuenta con email
/* document.querySelector('#ingresar').addEventListener('submit', cargarEmail)
@@ -153,25 +165,53 @@ document.querySelector('#create').addEventListener('click', function (e) {
//console.log(valEmail);
//console.log(valPass);
- return createUser(email, password)
+ createUser(email, password)
})
//Guardar los datos en firebase y BD
function createUser(email, password) {
+ //console.log(user);
console.log(email + password);
- firebase.auth().createUserWithEmailAndPassword(email, password)
- .then(function (user) {
- console.log('Se ha creado la cuenta!');
- console.log(user.user);
- })
- .catch(function (error) {
- console.error(error);
+ const expRegEmail = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/
+ const expRegPass = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/
- })
- const docData = db.doc('datausers/' + email);//la / y el + user.uid hace que no se duplique el usuario
- docData.set({
+ if (expRegPass.test(password) === true && expRegEmail.test(email) === true) {
+ firebase.auth().createUserWithEmailAndPassword(email, password)
+
+ .then(function (user) {
+ console.log('Se ha creado la cuenta!');
+ console.log(user.user);
+ //useremail = user.user.email
+ saveEmailBD(email, password, user)
+ //compareData(useremail)
+
+
+ })
+
+ .catch(function (error) {//Si la cuenta se ha creado se muestra el error
+ console.log(error.message);
+
+ })
+
+ } else {
+ alert('Comprueba tu correo o contraseña (debe contener al menos 6 caracteres,un número, una minúscula y al menos una mayúscula).')
+ }
+
+
+}
+function compareData(useremailFb) {
+ console.log(useremailFb);
+
+ //console.log(useremail);
+
+}
+
+function saveEmailBD(email, password, user) {
+ const docDataEm = db.doc('datausers/' + user.user.uid);//la / y el + user.uid hace que no se duplique el usuario
+ docDataEm.set({
email: email,
- password: password
+ password: password,
+ uid: user.user.uid
})
.then(function () {
@@ -183,10 +223,11 @@ function createUser(email, password) {
})
+
}
-//Leer y guardar los datos del us. para despues comparar con los datos almacenados en la BD
+//Leer y guardar los datos del us. para despues comparar con los datos almacenados en la autenticación
document.querySelector('#enter').addEventListener('click', function (e) {
e.preventDefault()
//Leer variables del form
@@ -195,7 +236,7 @@ document.querySelector('#enter').addEventListener('click', function (e) {
//console.log(email);
//console.log(password)
- return loginUser(email, password)
+ loginUser(email, password)
})
//Comparar los datos del usuario con los datos que usó para crear cuenta
@@ -212,10 +253,16 @@ function loginUser(email, password) {
}
+
+
+
//salir de la sesión
const btnexit = document.querySelector('#salir')
btnexit.addEventListener('click', signoutUser)
-function signoutUser() {
+function signoutUser(e) {
+ e.preventDefault()
firebase.auth().signOut();
+ console.log('Adiós Bye');
+
}
\ No newline at end of file
diff --git a/src/styles.css b/src/styles.css
index d08af301..e69de29b 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -1,57 +0,0 @@
-.overSmall{
- display: flex;
- flex-direction: column;
- background: rgba(0, 0, 0, .3);
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- align-items: center;
- justify-content: center;
- visibility: hidden;
- }
- .active{
- visibility: visible;
- }
- .popSmall{
- display: flex;
- flex-direction: column;
- flex-wrap: nowrap;
- justify-content: space-between;
- width: 500px;
- height: 700px;
- background: #F8F8F8;
- border-radius: 10%;
- margin-top: 5%;
- -webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5);
- }
- .containerPop{
-
- margin: 50px;
- text-align: center;
- }
- .closeButton{
- display: block;
- text-align: center;
- margin-right: 7%;
- }
- .btn-cerrar-popup{
- font-size: 40px;
- display: flex;
- color: #BBB;
- }
- .textSmall{
- text-align: center;
- }
- .imagePop{
- font-size: 100px;
- }
- .acceptDelete{
- font-size: 70px;
- color: rgb(11, 155, 18);
- }
- .cancelDelete{
- font-size: 60px;
- color: rgb(243, 26, 26);
- }
\ No newline at end of file
From de031f9a8857a1a3314e1667d6dca0e92ce6a4a7 Mon Sep 17 00:00:00 2001
From: LizethRivera04 <60666768+LizethRivera04@users.noreply.github.com>
Date: Mon, 20 Apr 2020 15:15:40 -0500
Subject: [PATCH 03/14] Login settings and popup functionality
---
src/example.js | 257 +++++++++++++++++++----------------------
src/index.html | 21 ++--
src/index.js | 301 ++++++++++++++++++++-----------------------------
src/login.js | 67 +++++++++++
src/pops.js | 175 ++++++++++++++++++++++++++++
src/signIn.js | 80 +++++++++++++
src/styles.css | 93 +++++++++++++++
src/vista.js | 7 ++
8 files changed, 666 insertions(+), 335 deletions(-)
create mode 100644 src/login.js
create mode 100644 src/pops.js
create mode 100644 src/signIn.js
create mode 100644 src/vista.js
diff --git a/src/example.js b/src/example.js
index 9b3f191f..c8f913e0 100644
--- a/src/example.js
+++ b/src/example.js
@@ -1,153 +1,122 @@
-/* export const example = () => {
- // aquí tu código
-} */
-
-// Are you sure that you want to delete the element?
-const overDelete = document.createElement('div');
-overDelete.className = 'overSmall';
-overDelete.id = 'overDelete';
-overDelete.innerHTML = `
-
-
-
-
-
-
-
-
Estás seguro que quieres eliminar el elemento?
-
-
-
-
-
-
-
-`
-document.body.appendChild(overDelete);
-
-
-
-// Open PopUpDelete
-const btnPop = document.querySelector('#pop')
-const overlayDelete = document.querySelector('#overDelete');// el id lo tiene el overlay
-const popup = document.querySelector('.popSmall');
-const btnClosePopup = document.querySelector('#btn-cerrar-delete');
-btnPop.addEventListener('click', abrirPopup);
-btnClosePopup.addEventListener('click', cerrarPopup);
-
-function abrirPopup() {
- overlayDelete.classList.add('active');
- popup.classList.add('active');
-}
-function cerrarPopup() {
- overlayDelete.classList.remove('active');
- popup.classList.remove('active');
+import vista from '/vista.js'
+import login from '/login.js'
+import signIn from '/signIn.js'
+import { loginGoogle } from '/index.js'//Se importa para usar addEventListener
+import { loginFacebook } from '/index.js'
+import { createUser } from '/index.js'
+import { loginUser } from '/index.js'
+import { signoutUser } from '/index.js'
+
+//Boton para mostrar iniciar sesión
+const btnshow = document.querySelector('#showLogin')
+btnshow.addEventListener('click', principalView)
+
+//Boton para cerrar sesión
+const btnExit = document.querySelector('#goOut')
+btnExit.addEventListener('click', signoutUser)
+
+//Mostrar vista (una antes de iniciar sesión)
+function principalView() {
+ const divRoot = document.querySelector('#root')
+ divRoot.innerHTML = vista()
+ let goLogin = document.querySelector('#goLogin')
+ goLogin.addEventListener('click', viewLogin)
}
-
-//Task Completed
-
-const overComplete = document.createElement('div');
-overComplete.className = 'overSmall';
-overComplete.id = 'overComplete';
-overComplete.innerHTML = `
-