Navbar mit login und logout

This commit is contained in:
Klaas 2024-05-28 16:19:59 +02:00
parent 7907d460e9
commit 0f3187f38a
4 changed files with 66 additions and 84 deletions

22
app.js
View File

@ -232,7 +232,7 @@ app.post('/login', async (req, res) => {
if (user.is_active) { if (user.is_active) {
req.session.userId = user.id; req.session.userId = user.id;
req.session.role=user.role; req.session.role=user.role;
res.redirect('/'); res.redirect('/training');
} else { } else {
res.redirect('/freischaltung') res.redirect('/freischaltung')
} }
@ -248,6 +248,7 @@ app.post('/login', async (req, res) => {
} }
}); });
//Wird angezeigt, wenn ein nicht freigeschalteter User sich anmelden will.
app.get('/freischaltung', async (req, res) => { app.get('/freischaltung', async (req, res) => {
res.render('freischaltung', { session: req.session}); res.render('freischaltung', { session: req.session});
}) })
@ -258,7 +259,7 @@ app.get('/logout', (req, res) => {
if (err) { if (err) {
return res.status(500).send('Internal Server Error'); return res.status(500).send('Internal Server Error');
} }
res.redirect('/login'); res.redirect('/');
}); });
}); });
@ -370,7 +371,7 @@ app.post('/profile', requireAuth, async (req, res) => {
} }
}); });
app.post('/update-training', async (req, res) => { app.post('/update-training', requireAuth, async (req, res) => {
const { trainingId, type, spielName } = req.body; const { trainingId, type, spielName } = req.body;
let spielId; let spielId;
@ -398,7 +399,7 @@ app.post('/update-training', async (req, res) => {
} }
}); });
app.post('/update-leader', async (req, res) => { app.post('/update-leader', requireAuth , async (req, res) => {
const { trainingId, type, leaderId } = req.body; const { trainingId, type, leaderId } = req.body;
try { try {
@ -434,7 +435,7 @@ res.redirect('/riege');
}) })
// Teilnehmer_innen // Teilnehmer_innen
app.get('/', requireAuth, async (req, res) => { app.get('/training', requireAuth, async (req, res) => {
try { try {
let dateParam = req.query.date; let dateParam = req.query.date;
let selectedDate; let selectedDate;
@ -571,7 +572,7 @@ app.post('/set-riege', requireAuth, async (req, res) => {
res.redirect('/riege'); res.redirect('/riege');
}) })
app.post('/update-mitglied', async (req, res) => { app.post('/update-mitglied', requireAdmin, async (req, res) => {
const { type, id, telid, adresse, name, verbindung, nummer } = req.body; const { type, id, telid, adresse, name, verbindung, nummer } = req.body;
try{ try{
if (type=="tel"){ if (type=="tel"){
@ -596,10 +597,12 @@ app.get('/login', (req, res) => {
res.render('login', {session: req.session}); // Stelle sicher, dass es eine login.ejs gibt res.render('login', {session: req.session}); // Stelle sicher, dass es eine login.ejs gibt
}); });
// Registrierung
app.get('/register', (req, res) => { app.get('/register', (req, res) => {
res.render('register', {session: req.session}); // Stelle sicher, dass es eine register.ejs gibt res.render('register', {session: req.session}); // Stelle sicher, dass es eine register.ejs gibt
}); });
// Spieleliste
app.get('/spiele', async (req, res) => { app.get('/spiele', async (req, res) => {
try { try {
const spieleResult = await pool.query('SELECT * FROM spiele'); const spieleResult = await pool.query('SELECT * FROM spiele');
@ -611,6 +614,7 @@ app.get('/spiele', async (req, res) => {
} }
}) })
// Gerenderte Seite für gewähltes Spiel
app.get('/spiel/:id', async (req, res) => { app.get('/spiel/:id', async (req, res) => {
const { id } = req.params; const { id } = req.params;
try { try {
@ -623,6 +627,7 @@ app.get('/spiel/:id', async (req, res) => {
} }
}) })
// Postseite für Änderungen
app.post('/edit-spiel', requireAuth, async (req, res) => { app.post('/edit-spiel', requireAuth, async (req, res) => {
const { material, dauer, regeln, variationen, id } = req.body; const { material, dauer, regeln, variationen, id } = req.body;
try { try {
@ -635,6 +640,11 @@ res.redirect('/spiel/' + id);
}) })
// Startseite
app.get('/', (req, res) => {
res.render('index', {session: req.session});
});
const server = app.listen(port, '0.0.0.0', () => { const server = app.listen(port, '0.0.0.0', () => {
console.log(`Server is running on http://localhost:${port}/`); console.log(`Server is running on http://localhost:${port}/`);
}); });

View File

@ -1,6 +1,6 @@
<%- include('partials/header') %> <%- include('partials/header') %>
<p>Du musst erst freigeschaltet werden um dich einloggen zu können.</p>> <p>Du musst erst freigeschaltet werden um dich einloggen zu können.</p>
<%- include('partials/footer') %> <%- include('partials/footer') %>

View File

@ -2,45 +2,7 @@
<h1>Turnstunden Organisation</h1> <h1>Turnstunden Organisation</h1>
<h2>Teilnehmende</h2>
<ul>
<% teilnehmende.forEach(teilnehmer => { %>
<li>
<% if (teilnehmer.helfer) { %>
<strong><%= teilnehmer.name %></strong> (<%= teilnehmer.age %> Jahre)
<% } else { %>
<%= teilnehmer.name %> (<%= teilnehmer.age %> Jahre)
<% } %>
</li>
<% }) %>
</ul>
<h2>Riegen</h2>
<ul>
<% riegen.forEach(riege => { %>
<li>
Riege <%= riege.riegennummer %> - <%= riege.name %> (<%= riege.age %> Jahre)
</li>
<% }) %>
</ul>
<h2>Trainings</h2>
<ul>
<% trainings.forEach(training => { %>
<li>
Datum: <%= training.datum %> -
Gerät Riege 1: <%= training.geraet_riege_1_name %> -
Gerät Riege 2: <%= training.geraet_riege_2_name %> -
Gerät Riege 3: <%= training.geraet_riege_3_name %> -
Gerät Riege 4: <%= training.geraet_riege_4_name %> -
Gerät Riege 5: <%= training.geraet_riege_5_name %> -
Aufwärmleiter: <%= training.aufwaermleiter_name %> -
Spielleiter: <%= training.spielleiter_name %> -
Aufwärmen: <%= training.aufwaermen_name %> -
Spiel: <%= training.spiel_name %>
</li>
<% }) %>
</ul>
</body> </body>
</html> </html>

View File

@ -8,46 +8,56 @@
</head> </head>
<body> <body>
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <nav class="navbar navbar-expand-lg bg-body-tertiary">
<a class="navbar-brand" href="/">Turnstunden WebApp</a> <div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <a class="navbar-brand" href="/">Kinderturnen</a>
<span class="navbar-toggler-icon"></span> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
</button> <span class="navbar-toggler-icon"></span>
<div class="collapse navbar-collapse" id="navbarNav"> </button>
<ul class="navbar-nav"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<% if (session && ( session.role =='admin' || session.role =='user' )) { %>
<% if (session) { if ( session.role =='admin' || session.role =='user' ) { %> <li class="nav-item">
<a class="nav-link" href="/">Trainings</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/riege">Riegen</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/teilnehmer">Teilnehmende</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/profile">Profil</a>
</li>
<li class="nav-item"> <% } else {%>
<a class="nav-link" href="/">Trainings</a> <li class="nav-item">
</li> <a class="nav-link" href="/register">Registrieren</a>
<li class="nav-item"> </li>
<a class="nav-link" href="/riege">Riegen</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/teilnehmer">Teilnehmende</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/profile">Profil</a>
</li>
<% }} %> <% } %>
<li class="nav-item">
<a class="nav-link" href="/spiele">Spiele</a>
</li>
<li class="nav-item"> <% if (session && session.role === 'admin') { %>
<a class="nav-link" href="/spiele">Spiele</a> <li class="nav-item"><a class="nav-link" href="/admin">Admin</a></li>
</li> <% } %>
</ul>
<% if (session && session.role === 'admin') { %> <% if (session && ( session.role =='admin' || session.role =='user' )) { %>
<li class="nav-item"><a class="nav-link" href="/admin">Admin</a></li> <form class="d-flex" role="search" method="get" action="/logout">
<% } %> <button class="btn btn-outline-success" type="submit">Logout</button>
</ul> </form>
<ul class="navbar-nav ml-auto">
<% if (session && session.userId) { %>
<li class="nav-item"><a class="nav-link" href="/logout">Logout</a></li>
<% } else { %> <% } else { %>
<li class="nav-item"><a class="nav-link" href="/login">Login</a></li> <form class="d-flex" role="search" method="POST" action="/login">
<% } %> <input type="text" class="form-control" placeholder="username" name="username">
</ul> <input type="password" class="form-control" placeholder="passwort" name="password">
<button class="btn btn-outline-success" type="submit">Login</button>
</form>
<% } %>
</div>
</div> </div>
</nav> </nav>
<div class="container"> <div class="container">