Skip to content

Commit

Permalink
Merge pull request #15 from denssle/feature/redirect-after-registration
Browse files Browse the repository at this point in the history
Feature/redirect after registration
  • Loading branch information
Dominik Hellweg authored Jan 26, 2024
2 parents 21fc68f + d165e9b commit 8411b9a
Show file tree
Hide file tree
Showing 13 changed files with 427 additions and 330 deletions.
641 changes: 321 additions & 320 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "festival",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"scripts": {
"dev": "vite dev",
Expand Down
4 changes: 3 additions & 1 deletion src/hooks.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import * as userController from '$lib/services/user-service';
import { authorized } from '$lib/stores/authorized-store';
import type { BackendUser } from '$lib/models/BackendUser';

const noAuthURLs: string[] = ['/login', '/registration', '/about', '/impressum'];
export const handle: Handle = async ({ event, resolve }): Promise<Response> => {
const pathname: string = event.url.pathname;
if (!pathname.includes('login') && !pathname.includes('registration')) {
console.log(pathname);
if (!noAuthURLs.includes(pathname)) {
const sessionCookie: string | undefined = event.cookies.get('session');
const valid: boolean = await userController.validateSessionToken(sessionCookie);
authorized.set(valid);
Expand Down
3 changes: 1 addition & 2 deletions src/lib/services/festival-event-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ export async function create(
bringYourOwnFood: bringYourOwnFood,
location: location
};
console.log('festival service: create: date: ', startDate);
redis.set(`festival:${newFestival.id}`, parseFestivalToString(newFestival));
return await parseToFrontend(newFestival);
} else {
Expand Down Expand Up @@ -98,7 +97,7 @@ export async function updateFestival(
return redis.set(`festival:${festivalId}`, parseFestivalToString(festival));
} else {
// TODO create new? throw error?
console.error('cration failed!!!');
console.error('updateFestival failed!', festival);
}
}

Expand Down
11 changes: 9 additions & 2 deletions src/lib/sharedComponents/NicknamePasswordForm.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,18 @@
<form method="POST">
<section>
<p>
<input name="nickname" required value={data?.nickname ?? ''} type="text" placeholder="Nickname" />
<input name="nickname" required value={data?.nickname ?? ''} type="text" placeholder="Nickname" minlength="3" />
</p>

<p>
<input name="password" required value={data?.password ?? ''} type="password" placeholder="Passwort" />
<input
name="password"
required
value={data?.password ?? ''}
type="password"
placeholder="Passwort"
minlength="3"
/>
</p>

<p>
Expand Down
11 changes: 10 additions & 1 deletion src/routes/+layout.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,23 @@
<a href="/festival/new">Neu</a>
<a href="/settings">Einstellungen</a>
<a href="/user/{data.currentUser.id}">{data.currentUser.nickname}</a>
<a href="/about">About</a>
<button on:click|trusted={logout}>Logout</button>
{:else}
<a href="/login">Anmelden</a>
<a href="/registration">Registrieren</a>
{/if}
</nav>
</header>

<slot />

<footer>
<nav>
<a href="/about">About</a>
<a href="/impressum">Impressum</a>
</nav>
</footer>

<style global>
:global(:root) {
--red: #d81e30;
Expand Down
9 changes: 9 additions & 0 deletions src/routes/about/+page.server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
import packageJSON from './package.json';
import { PageServerLoad } from '../../../.svelte-kit/types/src/routes/$types';

export const load: PageServerLoad = async (): Promise<{ version: string }> => {
console.log('package version', packageJSON.version);
return { version: packageJSON.version };
};
4 changes: 4 additions & 0 deletions src/routes/about/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<script lang="ts">
import uberspaceBanner from '$lib/assets/uberspace_badge_dark.png';
export let data: { version: string };
console.log(data);
</script>

<article>
Expand All @@ -16,6 +19,7 @@
</p>
<img src={uberspaceBanner} alt="uberspace Banner" class="center" />
</section>
<p>Version: {data.version}</p>
</article>

<style>
Expand Down
61 changes: 61 additions & 0 deletions src/routes/impressum/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<article>
<section>
<h1>Impressum</h1>
<p>Angaben gemäß § 5 TMG</p>
<address>
Dominik Hellweg<br />
Thomas-Mann-Str. 26<br />
44141 Dortmund<br />
E-Mail: <a href="mailto:[email protected]">[email protected]</a>
</address>
</section>

<section>
<strong>Haftungsausschluss: </strong>
<br /><br />
<strong>Haftung für Inhalte</strong>
<br /><br />
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität
der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte
auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch
nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen,
die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen
nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt
der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden
wir diese Inhalte umgehend entfernen.
<br /><br />
<strong>Haftung für Links</strong>
<br /><br />
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können
wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige
Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche
Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche
Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden
von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
<br /><br />
<strong>Urheberrecht</strong>
<br /><br />
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht.
Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen
der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den
privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden,
werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie
trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden
von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
<br /><br />
<strong>Datenschutz</strong>
<br /><br />
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten
personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich,
stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
<br />
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken
aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
<br />
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht
ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber
der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen,
etwa durch Spam-Mails, vor.
</section>
Website Impressum von <a href="https://www.impressum-generator.de">impressum-generator.de</a>
</article>
2 changes: 0 additions & 2 deletions src/routes/login/+page.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { StandardResponse } from '$lib/models/StandardResponse';

export const load: PageServerLoad = async ({ cookies }: { cookies: Cookies }): Promise<StandardResponse> => {
const valid: boolean = await validateSessionToken(cookies.get('session'));
console.log('LOGIN valid', valid);
if (valid) {
redirect(303, '/');
}
Expand All @@ -21,7 +20,6 @@ export const actions: Actions = {
const formData: UserFormData = await userService.readFormDataFrontEndUser(request.formData());
if (formData.nickname && formData.password) {
const user: BackendUser | null = await login(formData.nickname, formData.password);
console.log(user, formData.nickname, formData.password);
if (user) {
userService.createSessionCookie(cookies, user);
redirect(302, '/');
Expand Down
3 changes: 3 additions & 0 deletions src/routes/login/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<script lang="ts">
import type { NicknamePasswordFormData } from '$lib/models/NicknamePasswordFormData';
import NicknamePasswordForm from '$lib/sharedComponents/NicknamePasswordForm.svelte';
import type { ActionData } from '../../../.svelte-kit/types/src/routes/registration/$types';
export let data: NicknamePasswordFormData;
export let form: ActionData;
console.log('form', form);
</script>

<NicknamePasswordForm {data} headline={'Anmeldung'}>
Expand Down
3 changes: 2 additions & 1 deletion src/routes/registration/+page.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as userService from '$lib/services/user-service';
import { nickNameInvalid, register, validateSessionToken } from '$lib/services/user-service';
import type { UserFormData } from '$lib/models/UserFormData';
import { StandardResponse } from '$lib/models/StandardResponse';
import { BackendUser } from '$lib/models/BackendUser';

export const load: PageServerLoad = async ({ cookies }: { cookies: Cookies }): Promise<StandardResponse> => {
const valid: boolean = await validateSessionToken(cookies.get('session'));
Expand All @@ -22,7 +23,7 @@ export const actions: Actions = {
console.log('User already existing');
return { success: false, message: 'Invalid Nickname' };
} else {
const user = await register(formData.nickname, formData.password);
const user: BackendUser | null = await register(formData.nickname, formData.password);
if (user) {
userService.createSessionCookie(cookies, user);
redirect(302, '/');
Expand Down
3 changes: 3 additions & 0 deletions src/routes/registration/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<script lang="ts">
import type { NicknamePasswordFormData } from '$lib/models/NicknamePasswordFormData';
import NicknamePasswordForm from '$lib/sharedComponents/NicknamePasswordForm.svelte';
import type { ActionData } from '../../../.svelte-kit/types/src/routes/registration/$types';
export let data: NicknamePasswordFormData;
export let form: ActionData;
console.log(form);
</script>

<NicknamePasswordForm {data} headline={'Registration'}>
Expand Down

0 comments on commit 8411b9a

Please sign in to comment.