Einloggen Registrieren
Einloggen – Für bereits registrierte Nutzer
Falls Sie bereits registriert sind, loggen Sie sich hier ein, um Beiträge hochzuladen, zu kommentieren oder im Feed aktiv zu sein.
Registrieren – Werden Sie Teil unserer Gemeinschaft
Melden Sie sich an, um Ihre Kreativität zu teilen, zu kommentieren und im Feed aktiv zu sein. E-Mail, Alias und Passwort sind erforderlich, Vorname, Nachname, Land, Region und Ort sind
optional. Nach der Registrierung ist eine Bestätigung per E-Mail erforderlich.
// Backend mit Node.js, Express und MongoDB // Erforderliche Module importieren const express = require('express'); const mongoose = require('mongoose'); const bcrypt = require('bcryptjs'); const jwt
= require('jsonwebtoken'); const nodemailer = require('nodemailer'); const cors = require('cors'); const dotenv = require('dotenv'); dotenv.config(); const app = express(); app.use(express.json());
app.use(cors()); // MongoDB Verbindung mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }).then(() => console.log('MongoDB verbunden')).catch(err =>
console.log(err)); // Nutzermodell const UserSchema = new mongoose.Schema({ email: String, password: String, confirmed: { type: Boolean, default: false } }); const User = mongoose.model('User',
UserSchema); // Registrierung mit E-Mail-Bestätigung app.post('/register', async (req, res) => { const { email, password } = req.body; const hashedPassword = await bcrypt.hash(password, 10); const
user = new User({ email, password: hashedPassword }); await user.save(); // Bestätigungslink erstellen const token = jwt.sign({ email }, process.env.JWT_SECRET, { expiresIn: '1d' }); const
confirmLink = `http://localhost:3000/confirm/${token}`; // E-Mail versenden const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: process.env.EMAIL_USER, pass:
process.env.EMAIL_PASS } }); await transporter.sendMail({ from: process.env.EMAIL_USER, to: email, subject: 'Bestätigen Sie Ihre Registrierung', text: `Bitte bestätigen Sie Ihre Registrierung:
${confirmLink}` }); res.json({ message: 'Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mail.' }); }); // E-Mail-Bestätigung app.get('/confirm/:token', async (req, res) => { try { const {
email } = jwt.verify(req.params.token, process.env.JWT_SECRET); await User.updateOne({ email }, { confirmed: true }); res.send('E-Mail bestätigt. Sie können sich nun einloggen.'); } catch (error) {
res.status(400).send('Ungültiger Token'); } }); // Login app.post('/login', async (req, res) => { const { email, password } = req.body; const user = await User.findOne({ email }); if (!user ||
!user.confirmed || !(await bcrypt.compare(password, user.password))) { return res.status(400).json({ message: 'Ungültige Anmeldedaten oder Konto nicht bestätigt' }); } const token = jwt.sign({
userId: user._id }, process.env.JWT_SECRET, { expiresIn: '1h' }); res.json({ token }); }); // Server starten app.listen(5000, () => console.log('Server läuft auf Port 5000'));