first commit
This commit is contained in:
commit
61956b562c
|
@ -0,0 +1,7 @@
|
|||
.env
|
||||
.DS_STORE
|
||||
.DS_Store
|
||||
server/node_modules/*
|
||||
app/node_modules/*
|
||||
package-lock.json
|
||||
package.json
|
|
@ -0,0 +1,6 @@
|
|||
PORT=3000
|
||||
DB_HOST=localhost
|
||||
DB_USER=postgres
|
||||
DB_PASSWORD=your_db_password
|
||||
DB_NAME=your_database_name
|
||||
JWT_SECRET=your_jwt_secret
|
|
@ -0,0 +1,17 @@
|
|||
require("dotenv").config();
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
const authRoutes = require("./routes/auth");
|
||||
const bodyParser = require("body-parser");
|
||||
|
||||
// Middleware
|
||||
app.use(bodyParser.json());
|
||||
|
||||
// Routes
|
||||
app.use("/auth", authRoutes);
|
||||
|
||||
// Server starten
|
||||
const PORT = process.env.PORT || 3000;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server läuft auf Port ${PORT}`);
|
||||
});
|
|
@ -0,0 +1,81 @@
|
|||
const bcrypt = require("bcryptjs");
|
||||
const jwt = require("jsonwebtoken");
|
||||
const { Pool } = require("pg");
|
||||
|
||||
// Datenbankverbindung
|
||||
const pool = new Pool({
|
||||
user: process.env.DB_USER,
|
||||
host: process.env.DB_HOST,
|
||||
database: process.env.DB_NAME,
|
||||
password: process.env.DB_PASSWORD,
|
||||
port: 5432,
|
||||
});
|
||||
|
||||
// Registrierungsfunktion
|
||||
const registerUser = async (req, res) => {
|
||||
const { username, password, email, role } = req.body;
|
||||
|
||||
try {
|
||||
// Überprüfen, ob der Benutzer bereits existiert
|
||||
const userExists = await pool.query(
|
||||
"SELECT * FROM Users WHERE email = $1",
|
||||
[email]
|
||||
);
|
||||
if (userExists.rows.length > 0) {
|
||||
return res.status(400).json({ message: "Benutzer existiert bereits" });
|
||||
}
|
||||
|
||||
// Passwort hashen
|
||||
const hashedPassword = await bcrypt.hash(password, 10);
|
||||
|
||||
// Neuen Benutzer einfügen
|
||||
const newUser = await pool.query(
|
||||
"INSERT INTO Users (username, password, email, role, is_active) VALUES ($1, $2, $3, $4, $5) RETURNING *",
|
||||
[username, hashedPassword, email, role, true]
|
||||
);
|
||||
|
||||
res
|
||||
.status(201)
|
||||
.json({ message: "Benutzer registriert", user: newUser.rows[0] });
|
||||
} catch (err) {
|
||||
res
|
||||
.status(500)
|
||||
.json({ message: "Fehler beim Registrieren", error: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
// Loginfunktion
|
||||
const loginUser = async (req, res) => {
|
||||
const { email, password } = req.body;
|
||||
|
||||
try {
|
||||
// Überprüfen, ob der Benutzer existiert
|
||||
const user = await pool.query("SELECT * FROM Users WHERE email = $1", [
|
||||
email,
|
||||
]);
|
||||
if (user.rows.length === 0) {
|
||||
return res.status(400).json({ message: "Benutzer nicht gefunden" });
|
||||
}
|
||||
|
||||
// Passwort vergleichen
|
||||
const validPassword = await bcrypt.compare(password, user.rows[0].password);
|
||||
if (!validPassword) {
|
||||
return res.status(400).json({ message: "Ungültiges Passwort" });
|
||||
}
|
||||
|
||||
// JWT Token erstellen
|
||||
const token = jwt.sign(
|
||||
{ id: user.rows[0].id, role: user.rows[0].role },
|
||||
process.env.JWT_SECRET,
|
||||
{
|
||||
expiresIn: "1h",
|
||||
}
|
||||
);
|
||||
|
||||
res.status(200).json({ message: "Login erfolgreich", token });
|
||||
} catch (err) {
|
||||
res.status(500).json({ message: "Fehler beim Login", error: err.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { registerUser, loginUser };
|
|
@ -0,0 +1,11 @@
|
|||
const express = require("express");
|
||||
const { loginUser, registerUser } = require("../controllers/userController");
|
||||
const router = express.Router();
|
||||
|
||||
// Registrierungsroute
|
||||
router.post("/register", registerUser);
|
||||
|
||||
// Loginroute
|
||||
router.post("/login", loginUser);
|
||||
|
||||
module.exports = router;
|
Loading…
Reference in New Issue