Skip to content

Commit 86e19fd

Browse files
committed
add check of credentials in login
1 parent c5d7797 commit 86e19fd

3 files changed

Lines changed: 35 additions & 6 deletions

File tree

src/app.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,7 @@ declare interface Row {
5858
declare interface Insert {
5959
[row: string]: string | boolean;
6060
}
61+
62+
declare interface Login_Response{
63+
success: boolean;
64+
}

src/routes/login/+page.server.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { redirect } from '@sveltejs/kit';
2+
import mysql from 'mysql2/promise';
23

34
/** @type {import('./$types').PageLoad} */
45
export async function load({ params, cookies }) {
@@ -7,7 +8,7 @@ export async function load({ params, cookies }) {
78
const ip = cookies.get('ip');
89
const type = cookies.get('type');
910
if (user == null || pass == null || ip == null || type == null) {
10-
// we are already in logic page
11+
// we are already in login page
1112
}else{
1213
throw redirect(301, "/");
1314
}
@@ -16,8 +17,25 @@ export async function load({ params, cookies }) {
1617
export const actions = {
1718
login: async ({ cookies, request }) => {
1819
const form_data = await request.formData();
20+
const ip = form_data.get('ip');
21+
const user = form_data.get('user');
22+
const pass = form_data.get('pass');
23+
const type = form_data.get('type');
24+
25+
26+
try {
27+
await mysql.createConnection({
28+
host: ip,
29+
user: user,
30+
database: 'sys',
31+
password: pass
32+
});
33+
} catch (error) {
34+
return { success: false };
35+
}
36+
1937
// Save all in cookies, we need for other actions
20-
await cookies.set('ip', form_data.get('ip'), {
38+
await cookies.set('ip', ip, {
2139
// send cookie for every page
2240
path: '/',
2341
// server side only cookie so you can't use `document.cookie`
@@ -30,7 +48,7 @@ export const actions = {
3048
// set cookie to expire after a month
3149
maxAge: 60 * 60 * 24 * 30
3250
});
33-
await cookies.set('user', form_data.get('user'), {
51+
await cookies.set('user', user, {
3452
// send cookie for every page
3553
path: '/',
3654
// server side only cookie so you can't use `document.cookie`
@@ -43,7 +61,7 @@ export const actions = {
4361
// set cookie to expire after a month
4462
maxAge: 60 * 60 * 24 * 30
4563
});
46-
await cookies.set('pass', form_data.get('pass'), {
64+
await cookies.set('pass', pass, {
4765
// send cookie for every page
4866
path: '/',
4967
// server side only cookie so you can't use `document.cookie`
@@ -56,7 +74,7 @@ export const actions = {
5674
// set cookie to expire after a month
5775
maxAge: 60 * 60 * 24 * 30
5876
});
59-
await cookies.set('type', form_data.get('type'), {
77+
await cookies.set('type', type, {
6078
// send cookie for every page
6179
path: '/',
6280
// server side only cookie so you can't use `document.cookie`

src/routes/login/+page.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
<script>
1+
<script lang="ts">
2+
import type { Login_Response } from 'src/app';
23
import { onMount } from 'svelte';
4+
import { dialogs } from 'svelte-dialogs';
5+
6+
/** @type {import('./$types').PageForm} */
7+
export let form: Login_Response;
38
49
onMount(() => {
510
const header = document.getElementsByTagName('header');
611
header[0].style.display = 'none';
12+
if(!form.success)
13+
dialogs.alert("Wrong login data, please try again.");
714
});
815
</script>
916

0 commit comments

Comments
 (0)