login_function #40

Merged
vex merged 5 commits from login_function into develop 2025-04-29 19:20:52 +00:00
13 changed files with 50 additions and 80 deletions

View File

@ -113,7 +113,6 @@
const sendButton = document.getElementById('sendOrder'); const sendButton = document.getElementById('sendOrder');
let artikelVerfuegbarkeiten = [];
ladeWarenkorb(); ladeWarenkorb();
// Bestellung absenden // Bestellung absenden
@ -209,7 +208,7 @@
const data = await response.json(); const data = await response.json();
const artikelDivs = document.querySelectorAll('.Artikel'); const artikelDivs = document.querySelectorAll('.Artikel');
artikelVerfuegbarkeiten = []; let artikelVerfuegbarkeiten = [];
artikelDivs.forEach(div => { artikelDivs.forEach(div => {
const artikelNrInput = div.querySelector('.ArtikelNrText'); const artikelNrInput = div.querySelector('.ArtikelNrText');

View File

View File

@ -32,7 +32,7 @@
<!-- Eingabefeld für Benutzername --> <!-- Eingabefeld für Benutzername -->
<div class="input-group"> <div class="input-group">
<input id="email" type="text" placeholder="E-Mail" required/> <input id="email" type="email" placeholder="E-Mail" required/>
<i class="icon fas fa-user"></i> <i class="icon fas fa-user"></i>
</div> </div>
@ -43,7 +43,7 @@
</div> </div>
<!-- Login-Button --> <!-- Login-Button -->
<button type="submit" class="login-btn">Login</button> <button type="submit" class="login-btn" id="submit">Login</button>
<!-- Link zur Registrierungsseite --> <!-- Link zur Registrierungsseite -->
<p class="register-text"> <p class="register-text">
@ -54,7 +54,7 @@
</main> </main>
<script> <script>
document.getElementById('submit').addEventListener('click', async (event) => { document.querySelector('form').addEventListener('submit', async (event) => {
event.preventDefault() event.preventDefault()
const email = document.getElementById('email').value const email = document.getElementById('email').value

View File

@ -9,7 +9,6 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registrieren</title>
<!-- Registrieren-CSS-Datei --> <!-- Registrieren-CSS-Datei -->
<link rel="stylesheet" href="./Styles/registrieren/registrieren.css"> <link rel="stylesheet" href="./Styles/registrieren/registrieren.css">
<!-- Haupt-CSS-Datei --> <!-- Haupt-CSS-Datei -->
@ -18,6 +17,7 @@
<link href="https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css" rel="stylesheet"> <link href="https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css" rel="stylesheet">
<!-- Script zum Laden von Header/Footer --> <!-- Script zum Laden von Header/Footer -->
<script src="/header_footer"></script> <script src="/header_footer"></script>
<title>Registrieren</title>
</head> </head>
<body> <body>
<div class="page-container"> <div class="page-container">
@ -68,9 +68,21 @@
</main> </main>
<script> <script>
document.getElementById('register').addEventListener('click', async (event) => { document.querySelector('form').addEventListener('submit', async (event) => {
event.preventDefault(); event.preventDefault();
const passwordEl = document.getElementById('regPassword')
const password = passwordEl.value
const confirmPasswordEl = document.getElementById('confirmPassword')
const confirmPassword = confirmPasswordEl.value
if (password !== confirmPassword) {
passwordEl.value = ''
confirmPasswordEl.value = ''
alert('Die Passwörter stimmen nicht überein.')
return
}
const formData = { const formData = {
name: document.getElementById('vorname').value, name: document.getElementById('vorname').value,
lower_name: document.getElementById('nachname').value, lower_name: document.getElementById('nachname').value,

View File

View File

@ -31,7 +31,7 @@
</section> </section>
<!-- Hauptinhalt --> <!-- Hauptinhalt -->
<h1>Unsere Neusten Produkte: </h1> <h1>Unsere neusten Produkte: </h1>
<section class="card-grid" id="latest-products"> <section class="card-grid" id="latest-products">
<!-- Dynamische Produkte (5 neuesten Produkte) --> <!-- Dynamische Produkte (5 neuesten Produkte) -->
</section> </section>

View File

@ -21,8 +21,10 @@ document.addEventListener("DOMContentLoaded", () => {
// Header-Inhalt in die Seite einfügen // Header-Inhalt in die Seite einfügen
headerTarget.innerHTML = data; headerTarget.innerHTML = data;
// 🚀 WICHTIG: Jetzt den Warenkorb zählen, nachdem der Header geladen ist! // WICHTIG: Jetzt den Warenkorb zählen, nachdem der Header geladen ist!
zeigeWarenkorbAnzahl(); zeigeWarenkorbAnzahl();
zeigeLoginStatus();
}) })
.catch(error => { .catch(error => {
// Fehlerbehandlung: Fehlermeldung im Header-Bereich anzeigen // Fehlerbehandlung: Fehlermeldung im Header-Bereich anzeigen
@ -72,4 +74,25 @@ document.addEventListener("DOMContentLoaded", () => {
} }
console.log('Warenkorb-Anzahl:', anzahl); console.log('Warenkorb-Anzahl:', anzahl);
} }
window.zeigeLoginStatus= function (){
const userId = sessionStorage.getItem('user_id')
const loginBtn = document.querySelector('.login-btn')
if (!loginBtn) return
if (userId) {
loginBtn.textContent = 'Logout'
loginBtn.href = '/'
loginBtn.addEventListener('click', (e) => {
e.preventDefault()
sessionStorage.clear()
alert('Sie wurden ausgeloggt.')
location.reload()
})
} else {
loginBtn.textContent = 'Login'
loginBtn.href= '/login'
}
}
}); });

View File

@ -1,23 +0,0 @@
let sidebarEl = document.getElementById("mySidebar")
let mainEl = document.getElementById("main")
/* Set the width of the sidebar to 250px and the left margin of the page content to 250px */
function openNav() {
sidebarEl.style.width = "250px";
mainEl.style.marginLeft = "250px";
}
/* Set the width of the sidebar to 0 and the left margin of the page content to 0 */
function closeNav() {
sidebarEl.style.width = "0";
mainEl.style.marginLeft = "0";
}
/* Toggle the sidebar */
function toggleNav() {
if (sidebarEl.offsetWidth > 0) {
closeNav()
} else {
openNav()
}
}

View File

@ -1,7 +0,0 @@
let nameEl = document.getElementById("loginMail");
let passwordEl = document.getElementById("loginPassword");
function login() {
console.log(nameEl.value)
console.log(passwordEl.value)
}

View File

@ -1,17 +0,0 @@
const mysql = require('mysql');
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "webshop"
})
connection.connect(function (err) {
if (err) throw err
console.log("Connected to database")
connection.query("SELECT * FROM webshop.product LIMIT 10", function (err, result) {
if (err) throw err
console.log(result)
})
})

View File

@ -1,17 +0,0 @@
const mysql = require('mysql');
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "webshop"
})
connection.connect(function (err) {
if (err) throw err
console.log("Connected to database")
connection.query("SELECT * FROM webshop.user WHERE ID = 15", function (err, result) {
if (err) throw err
console.log(result)
})
})

View File

@ -6,10 +6,6 @@ router.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../../../public/startseite/startseite.html')); res.sendFile(path.join(__dirname, '../../../public/startseite/startseite.html'));
}) })
router.get('/example', (req, res) => {
res.sendFile(path.join(__dirname, '../../../public/example/index.html'));
})
// Route - Login // Route - Login
router.get('/login', (req, res) => { router.get('/login', (req, res) => {
res.sendFile(path.join(__dirname, '../../../public/login/login.html')); res.sendFile(path.join(__dirname, '../../../public/login/login.html'));

View File

@ -135,11 +135,15 @@ app.get('/api/products/sportwagen', async (req, res) => {
app.post('/api/user/registration', (req, res) => { app.post('/api/user/registration', (req, res) => {
// SQL-Query für Nutzerregistration // SQL-Query für Nutzerregistration
const {name, lower_name, email, passwd} = req.body; const {name, lower_name, email, passwd} = req.body;
const sql = "INSERT INTO webshop.user (name, lower_name, email, passwd, passwd_hash_algo) VALUES (?, ?, ?, ?, 'none')" const sql = "INSERT INTO webshop.user (name, lower_name, email, passwd, passwd_hash_algo) VALUES (?, ?, ?, ?, 'none')"
// Query abschicken // Query abschicken
db.query(sql, [name, lower_name, email, passwd], (err, results) => { db.query(sql, [name, lower_name, email, passwd], (err, results) => {
if (err) { if (err) {
if (err.code === 'ER_DUP_ENTRY'){
res.status(409).json({message: 'Diese E-Mail Adresse ist bereits registriert.'})
}
console.error('Fehler beim Schreiben in die Datenbank: ', err); console.error('Fehler beim Schreiben in die Datenbank: ', err);
res.status(500).send('Fehler beim Schreiben in die Datenbank'); res.status(500).send('Fehler beim Schreiben in die Datenbank');
return; return;
@ -150,7 +154,7 @@ app.post('/api/user/registration', (req, res) => {
app.post('/api/user/login', (req, res) => { app.post('/api/user/login', (req, res) => {
const {email, password} = req.body const {email, password} = req.body
const sql = 'SELECT * FROM user WHERE email = ?' const sql = 'SELECT * FROM webshop.user WHERE email = ?'
db.query(sql, [email], (err, results) => { db.query(sql, [email], (err, results) => {
if (err) { if (err) {
@ -276,7 +280,7 @@ app.get('/api/pruefe-artikel', (req, res) => {
return res.status(400).json({ error: 'Keine Artikelnummer angegeben.' }); return res.status(400).json({ error: 'Keine Artikelnummer angegeben.' });
} }
const query = 'SELECT id FROM product WHERE id = ?'; const query = 'SELECT id FROM webshop.product WHERE id = ?';
db.query(query, [artikelnummer], (err, results) => { db.query(query, [artikelnummer], (err, results) => {
if (err) { if (err) {