Introducción a JavaScript
Fundamentos de JavaScript para Principiantes
Instalación y Configuración de JavaScript en Visual Studio Code
Instalación y configuración de Visual Studio Code y Node.js en Windows
Variables y Buenas Prácticas en JavaScript
Tipos de Datos en JavaScript: Primitivos y Complejos
Manipulación de Strings en JavaScript: Escritura, Concatenación y Substrings
Números y Operaciones Matemáticas en JavaScript
Conversión de Tipos en JavaScript: Implícita y Explícita
Conversión de Tipos en JavaScript: Explícita e Implícita
Estructuras de Control y Lógica
Operadores de Comparación en JavaScript: Igualdad y Desigualdad
Operadores Lógicos en Programación: AND, OR y NOT
Estructuras Condicionales: Uso de IF, ELSE y ELSE IF en JavaScript
Juego de Adivinanza: Programación con Estructuras Condicionales
Estructura y uso del condicional Switch en programación
Ciclo For: Iteración de Listas y Uso de Console.log en JavaScript
Iteración con for-of en JavaScript para arrays y strings
Iteración sobre Objetos con forIn en JavaScript
Uso del ciclo while para iteración en programación
Ciclos doWhile: Estructura y Diferencias con While
Funciones y This
Funciones en JavaScript: Cómo Calcular Precios con Descuentos
Diferencias entre Funciones y Métodos en JavaScript
Funciones Puras e Impuras en Programación: Conceptos y Ejemplos
Arrow Functions y Enlace Léxico en JavaScript
Scope y Contextos de Ejecución en JavaScript
Closures y Ámbito Léxico en JavaScript
Fundamentos del Desarrollo Web: Frontend y Backend
Manipulación de Arrays
Arrays: Propiedades, Acceso y Creación en Programación
Mutabilidad e inmutabilidad en arrays: conceptos y ejemplos prácticos
Métodos push y pop para modificar arrays en JavaScript
Métodos map y forEach en JavaScript: Uso y Ejemplos Prácticos
Métodos Filter y Reduce en JavaScript: Uso y Ejemplos Prácticos
Métodos find y findIndex en JavaScript: Uso y ejemplos prácticos
Uso del método slice para extraer porciones de un array en JavaScript
Uso del Spread Operator en JavaScript: Copia, Combinación y Más
Programación Orientada a Objetos
Programación Orientada a Objetos en JavaScript: Conceptos y Práctica
Creación y Manipulación de Objetos en JavaScript
Función constructora y gestión de instancias en JavaScript
Clases en JavaScript: Creación y Uso de Objetos con Sintaxis Moderna
Programación Orientada a Objetos en JavaScript: Clases y Prototipos
Prototipos y Herencia en JavaScript: Construcción y Uso Práctico
Métodos y herencia prototípica en JavaScript
Uso de "this" en Clases y Funciones Constructoras
Validación de Usuarios en una Red Social: Algoritmo Básico
Implementación de la Función Sign-In y Validación de Usuario
Asincronía en JavaScript
Programación Síncrona y Asíncrona en JavaScript
Promesas en JavaScript: Asincronía y Manejo de Estados
Uso de Async/Await para Promesas Asíncronas en JavaScript
Peticiones asíncronas con for await en JavaScript
Fundamentos de HTTP: Cliente-Servidor y Métodos de Petición
Peticiones HTTP en Frontend: Uso de Fetch y Análisis en Network
Peticiones HTTP en JavaScript: Fetch, GET, POST y DELETE
Envío de Datos al Servidor con JavaScript y Fetch API
Eliminar Posts con JavaScript y Delegación de Eventos
Manejo de IDs en JavaScript para eliminar artículos del DOM
Actualizaciones y Nuevas Funciones en JavaScript
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Construir una red social desde cero puede parecer una tarea complicada, pero con la guía correcta, puedes lograr grandes avances. Hoy, nos centraremos en un reto propuesto: crear un algoritmo que permita desarrollar una red social básica. Aquí exploraremos los pasos necesarios para lograr este objetivo, desde la autenticación de usuario hasta la validación de contraseñas y el manejo de datos para presentar un "timeline".
Primero, debemos permitir que el usuario ingrese sus credenciales. Lo haremos capturando el nombre de usuario y la contraseña a través de la consola utilizando prompt
. Luego, guardaremos estos valores en variables que posteriormente usaremos para comprobar la autenticidad del usuario en nuestra base de datos.
const username = prompt("¿Cuál es tu usuario?");
const password = prompt("¿Cuál es tu contraseña?");
Seguidamente, el sistema debe verificar si el usuario y contraseña ingresados existen en una base de datos. Para ello, simulamos nuestra base de datos como un array de objetos. Crear una función que recorra este array y compare las credenciales ingresadas por el usuario.
function usuarioExistente(username, password) {
for (let i = 0; i < userDatabase.length; i++) {
if (userDatabase[i].username === username && userDatabase[i].password === password) {
console.log("Es correcto");
break;
}
}
console.log("No es correcto");
}
La función usuarioExistente
utiliza un bucle que itera sobre cada objeto de nuestro userDatabase
, y verifica si la información se corresponde con el input del usuario.
Si el usuario y la contraseña coinciden con los registros de la base de datos, el sistema debe mostrar un mensaje de bienvenida y el "timeline" del usuario, similar al concepto de redes sociales como Twitter o Facebook. Si no coinciden, se muestra un mensaje de error y se gestiona el acceso denegado.
usuarioExistente(username, password);
Por lo tanto, el acceso seguro a los datos es crítico y es importante tener en cuenta que este ejemplo es una simplificación, ideal para entender los conceptos básicos de autenticación. Pero en un desarrollo en producción, sería necesario implementar protocolos de seguridad más avanzados.
A medida que avances en la construcción de tu propia red social, considera aprender más sobre:
Este reto es solo el comienzo. La práctica y la curiosidad te ayudarán a continuar desarrollando tus habilidades de programación. ¡Ánimo! Cada línea de código que escribes es un paso hacia el dominio del arte de la programación.
Aportes 96
Preguntas 3
Te damos la bienvenida a nuestra red social. <input type="text" id="inputNomUsuario" placeholder="Escribe el nombre de usuario"> <input type="text" id="inputContraseña" placeholder="Escribe tu contraseña"> <button onclick="enviarDatos()">Enviar</button>
<script src="red_social.js"></script> </body> </html> ```\\<html>\<head> \<meta charset="UTF-8"> \<meta name="viewport" content="width=device-width, initial-scale=1.0"> \<title>Document\</title>\</head>\<body> \Te damos la bienvenida a nuestra red social. \<input type="text" id="inputNomUsuario" placeholder="Escribe el nombre de usuario"> \<input type="text" id="inputContraseña" placeholder="Escribe tu contraseña"> \<button onclick="enviarDatos()">Enviar\</button>\
\<script src="red\_social.js">\</script>\</body>\</html> ${usersTimeline[key].username}:
${usersTimeline[key].timeline}
Username
<input type="text" id="username">Password
<input type="password" id="password">Does't have an accouunt yet?
Sign Upor login with
WELCOME
</section> <section id="modal-denied" class="access-denied">WRONG PARAMETERS
</section> <button id="retry" class="primary-botton retry "> RETRY </button> </body> <script src="./main.js"></script> </html> ``````css @import './reset.scss'; body { position: relative; display: grid; place-items: center; background-image: url(../assets/820cff50cb608fb5321461b275b72ab1.jpg); background-position: center; background-repeat: no-repeat; background-size: cover; width: 100vw; height: 100vh; } .content { display: flex; justify-content: center; align-items: center; gap: 2rem; background-color: #ffffff; padding: 6rem; width: 90%; max-width: 100rem; height: 60rem; border-radius: 6px; box-shadow: -5px 1px 29px 0px lightslategrey; .girl-work { width: 60%; min-height: auto; max-height: 100%; } } .login { display: flex; flex-direction: column; justify-content: center; gap: 1.6rem; width: 40%; height: 100%; padding: 3rem; border-radius: 6px; box-shadow: -5px 1px 29px 0px #9099a2; } .login-tittle { font-size: 2.4rem; } .login-subtitle-text { display: flex; justify-content: space-between; align-items: center; } .login-subtitle { font-size: 1.4rem; font-weight: 300; color: rgb(192, 191, 191); } .strong-color { color: #9870fb; text-decoration: underline; font-size: 1.3rem; cursor: pointer; &:hover { text-decoration: none; } } .forgot-password { position: absolute; right: 0; font-size: 1.2rem; } .login-form { display: flex; flex-direction: column; gap: 2rem; width: 100%; } .login-label { position: relative; display: flex; flex-direction: column; font-size: 1.4rem; font-weight: 500; gap: 0.6rem; .input-login { height: 4.4rem; padding: 1.4rem; border: 1px solid #c0bfbf; border-radius: 4px; outline: #9870fb; } } .remeber-me { display: flex; align-items: center; gap: 0.4rem; font-size: 1.2rem; list-style: none; color: #c0bfbf; width: auto; cursor: pointer; & input { cursor: pointer; } } .primary-botton { background-color: #9870fb; border: solid 1px #9870fb; color: #ffffff; border-radius: 4px; height: 4.4rem; cursor: pointer; &:hover { background-color: transparent; color: #9870fb; } } .or-login-with { position: relative; margin: 1rem 0; display: flex; font-size: 1.2rem; justify-content: center; border-top: 1px solid #c0bfbf; p { position: absolute; top: -8px; background-color: #ffffff; color: rgb(192, 191, 191); padding: 0 1rem; } } //Social-networks Buttons .social-networks-login-buttons { display: flex; justify-content: space-between; } .secundary-button { display: flex; align-items: center; justify-content: center; gap: 1.2rem; width: 49%; height: 5rem; background-color: #ffffff; border-radius: 4px; font-weight: 500; cursor: pointer; .icon-button { height: 50%; } } .google-botton { border: solid 1px #dc6561; color: #dc6561; } .facebook-botton { border: solid 1px #3d6ad6; color: #3d6ad6; } //ACCESS .access-approved, .access-denied { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; display: none; flex-direction: column; justify-content: center; align-items: center; gap: 2rem; width: 50rem; height: 30rem; background-color: #ffffff; border-radius: 6px; box-shadow: -5px 1px 29px 0px #9099a2; z-index: 20; img { width: 30%; } } .display-flex { display: flex; } .display-none { display: none; } //RETRY .retry { position: absolute; bottom: 30%; color: #ffffff; width: 12rem; &:hover { color: #ffffff; } } ```JavaScript: ```js const content = document.getElementById('content') const modalApproved = document.getElementById('modal-approved') const modalDenied = document.getElementById('modal-denied') const retry = document.getElementById('retry') const nameModal = document.getElementById('name') let access = false retry.addEventListener('click', () => {location.reload()}) retry.classList.add('display-none') class UsersDataBase { constructor(name, username, password) { this.name = name this.username = username this.password = password } } const user1 = new UsersDataBase ('Jonathan', '[email protected]', 'user1.12345') const user2 = new UsersDataBase ('Juan', '[email protected]', 'user2.12345') const user3 = new UsersDataBase ('Diego', '[email protected]', 'user3.12345') const user4 = new UsersDataBase ('Maria', '[email protected]', 'user4.12345') const user5 = new UsersDataBase ('Merelin', '[email protected]', 'user5.12345') const users = [user1, user2, user3, user4, user5] const loginButton = document.getElementById('login-button') loginButton.addEventListener('click', findUser) function findUser (event) { event.preventDefault() console.log(users) const inputEmail = document.getElementById('input-email').value const inputPassword = document.getElementById('input-password').value for (let i = 0; i < users.length; i++) { if(users[i].username === inputEmail && users[i].password === inputPassword) { nameModal.innerHTML = users[i].name.toUpperCase() access = true break } else { if(i == 4) { modalDenied.classList.add('display-flex') } } } if(access == true) { retry.innerHTML = 'HOME' modalApproved.classList.add('display-flex') } content.classList.add('display-none') retry.classList.toggle('display-none') } ```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?