added login and sign Funtion properly

This commit is contained in:
2024-02-22 16:43:08 +01:00
parent 4b193ac5a1
commit 8c18d80737
11 changed files with 230 additions and 102 deletions

View File

@ -15,8 +15,9 @@ import {
//insert user to databased
export const signUp = async (req, res, next) => {
try {
let sql = `SELECT id FROM users WHERE LOWER(username) = LOWER(?)`;
let sql = `SELECT id FROM users WHERE LOWER(username) = LOWER(?)`;
const result = await ownConn.execute(sql, [req.body.username])
if (result.length > 0) { //username already exists
return res.status(409).send({
message: 'This username is already in use!'

View File

@ -88,9 +88,9 @@ const testFunctionSignup = async () => {
isError.value = false;
errorMsg.value = '';
const username = 'maria'
const password = 'maria123'
const password_repeat = 'maria123'
const username = 'franzzzzzrtg'
const password = '112345678'
const password_repeat = '112345678'
const fullName = 'hallo'
const email = 'test.sdj@web.de'
const phonenumber = '015736283729'
@ -126,11 +126,10 @@ const testFunctionSignup = async () => {
let res = await Axios.post(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/signup`, requestBody);
// something to do with the res?
console.log(res.data)
console.log(res)
} catch (err) {
// handle the error
// console.log(err)
console.log(err.response.statusText)
isError.value = true;
errorMsg.value = err.response.statusText;

View File

@ -9,8 +9,14 @@
<pre :class="['label', darkMode ? 'pre-darkmode' : 'pre-lightmode']">Client:</pre>
<pre v-if="!editable"
:class="['data', darkMode ? 'data-darkmode' : 'data-lightmode']"> {{ item.customer }}</pre>
<input v-if="editable" v-model="item.customer" @change="updateConfigItem()"
:class="['data', 'input', darkMode ? 'data-darkmode' : 'data-lightmode']">
<!-- <input v-if="editable" v-model="item.customer" @change="updateCustomerID()"
:class="['data', 'input', darkMode ? 'data-darkmode' : 'data-lightmode']"> -->
<select v-if="editable" id="customersDropDownChosenCI" v-model="item.customer"
@change="updateCustomerID()" :class="[darkMode ? 'select-darkmode' : 'select-lightmode']">
<option v-for="cust in customers" :key="cust.primaryID">
{{ cust.customername }}
</option>
</select>
</div>
<div class="data-field" id="location">
<pre :class="['label', darkMode ? 'pre-darkmode' : 'pre-lightmode']">Location:</pre>
@ -89,6 +95,9 @@ const deleteAssetBool = computed(() => store.state.deleteAsset)
const darkMode = ref(true)
const item = ref({});
const customer = ref({});
const configItems = ref([]);
const customers = ref([]);
// get config item from id
const getItemById = async () => {
@ -109,13 +118,13 @@ const updateConfigItem = async () => {
return;
} else {
var counter = 0;
//later check if ci already exists
// for (let key in item.value) {
// if (this.configItems[key].assetName === this.item.assetName) {
// counter += 1;
// }
// }
if (counter == 1) {
// check if config item name already exists
configItems.value.forEach(ci => {
if (ci.assetName === item.value.assetName) {
counter += 1;
}
});
if (counter == 2) {
alert("This asset name already exists. Please choose an unique asset name or modify respectively delete the old one!");
return;
}
@ -160,6 +169,17 @@ const updateConfigItem = async () => {
}
}
//get all customers
const getCustomers = async () => {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getAllCustomers`
);
customers.value = response.data;
} catch (err) {
console.log(err.response.statusText);
}
}
const confirmDeleteAsset = async () => {
if (deleteAssetBool.value === true) {
if (confirm("Do you really want to delete this config item? It cannot be undone!")) {
@ -176,10 +196,34 @@ const confirmDeleteAsset = async () => {
}
}
//get all config items
const getConfigItems = async () => {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getAllConfigItems`);
configItems.value = response.data;
} catch (err) {
console.log(err.response.statusText);
}
}
// update customerid if customer was changed
const updateCustomerID = async () => {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getCustomerByName/${item.value.customer}`);
customer.value = response.data;
item.value.customerID = customer.value.customerID;
} catch (err) {
console.log(err.response.statusText);
}
await updateConfigItem();
}
watch(deleteAssetBool, confirmDeleteAsset);
onMounted(() => {
getItemById();
getConfigItems();
getCustomers();
});
</script>
@ -397,4 +441,20 @@ export default {
.rectangle-lightmode {
background-color: #EBEBEB;
}
.select-darkmode {
border: none;
color: white;
background: #212121;
padding: 0.4rem;
border-radius: 0.3125rem;
}
.select-lightmode {
border: none;
color: black;
background: #EBEBEB;
padding: 0.4rem;
border-radius: 0.3125rem;
}
</style>

View File

@ -0,0 +1,22 @@
import { customers, errorMsg } from "../middleware/customers";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
};
setResponseHeaders(event, headers)
if (!(errorMsg === '')) {
throw createError({
statusCode: 400,
statusMessage: errorMsg,
})
}
setResponseStatus(event, 200)
return customers
})

View File

@ -0,0 +1,22 @@
import { customerObject, errorMsg } from "../../middleware/customers";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'OPTIONS,GET,HEAD,PUT,PATCH,POST,DELETE',
};
setResponseHeaders(event, headers)
if (!(errorMsg === '')) {
throw createError({
statusCode: 400,
statusMessage: errorMsg,
})
}
setResponseStatus(event, 200)
return customerObject
})

View File

@ -3,14 +3,6 @@ import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
'Access-Control-Max-Age': '86400',
};
setResponseHeaders(event, headers)
if (!loginSuccessful) {
throw createError({
statusCode: 400,

View File

@ -1,16 +1,8 @@
import { registeringSuccessful, errorMsg } from "../middleware/signUp.js";
import { OutgoingMessage } from 'http';
import { errorMsg } from "../middleware/signUp.js";
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
};
setResponseHeaders(event, headers)
if (!registeringSuccessful) {
if (!(errorMsg === '')) {
throw createError({
statusCode: 400,
statusMessage: errorMsg,

View File

@ -1,5 +1,4 @@
import { errorMsg } from "../middleware/configItems";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {

View File

@ -0,0 +1,84 @@
import axios, { AxiosError } from 'axios';
import serversideConfig from '../../serversideConfig';
import https from 'https';
let customers = [];
let customerObject = [];
let errorMsg = '';
export default defineEventHandler(async (event) => {
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
if (event.path.startsWith("/api/getAllCustomers")) {
// get all customers object from backend
try {
let res = await axiosInstance.get(`https://${serversideConfig.url}:${serversideConfig.port}/customers`);
customers = res.data;
} catch (err) {
if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError;
if (axiosError.response) {
// Axios error
console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message;
} else if (axiosError.request) {
console.log(err)
// If error was caused by the request
console.error(axiosError.request);
} else {
// Other errors
console.error('Error', axiosError.message);
}
} else {
// No AxiosError
console.error('Error', err);
}
}
}
if (event.path.startsWith("/api/getCustomerByName")) {
// get customer object from backend
let itemId = null;
const path = event._path;
const pathSegments = path.split('/');
itemId = pathSegments[pathSegments.length - 1];
try {
let res = await axiosInstance.get(`https://${serversideConfig.url}:${serversideConfig.port}/customerName/${itemId}`);
customerObject = res.data;
} catch (err) {
if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError;
if (axiosError.response) {
// Axios error
console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message;
} else if (axiosError.request) {
// If error was caused by the request
console.error(axiosError.request);
} else {
// Other errors
console.error('Error', axiosError.message);
}
} else {
// No AxiosError
console.error('Error', err);
}
}
}
})
export { customers, customerObject, errorMsg };

View File

@ -1,6 +1,5 @@
import axios, { AxiosError } from 'axios';
import serversideConfig from '../../serversideConfig';
import fs from 'fs';
import https from 'https';
let loginSuccessful = false;
@ -8,31 +7,22 @@ let errorMsg = '';
export default defineEventHandler(async (event) => {
loginSuccessful = false;
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
if (event.path.startsWith("/api/login")) {
const body = await readBody(event)
// read the certificate and create agent
const caCert = fs.readFileSync('./certs/server_ca.pem');
// const httpsAgent = new https.Agent({
// keepAlive: true,
// ca: caCert,
// rejectUnauthorized: true,
// });
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
// get user object from backend
try {
let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/login`, {

View File

@ -1,60 +1,28 @@
import axios, { AxiosError } from 'axios';
import serversideConfig from '../../serversideConfig';
import fs from 'fs';
import https from 'https';
let registeringSuccessful = false;
let errorMsg = '';
export default defineEventHandler(async (event) => {
registeringSuccessful = false;
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
if (event.path.startsWith("/api/signup")) {
const body = await readBody(event)
// read the certificate and create agent
const caCert = fs.readFileSync('./certs/server_ca.pem');
// const httpsAgent = new https.Agent({
// keepAlive: true,
// ca: caCert,
// rejectUnauthorized: true,
// });
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
// do the post request in the backend
try {
let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/signup`, {
username: body.username,
password: body.password,
password_repeat: body.password_repeat,
lastLogin: body.lastLogin,
fullName: body.fullName,
email: body.email,
phonenumber: body.phonenumber,
address: body.address,
city: body.city,
postcode: body.postcode,
adminBool: body.adminBool,
technician1Bool: body.technician1Bool,
technician2Bool: body.technician2Bool,
technicianMonitoringBool: body.technicianMonitoringBool,
merchantBool: body.merchantBool,
internBool: body.internBool,
});
registeringSuccessful = true;
let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/signup`, body);
} catch (err) {
if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError;
@ -64,6 +32,7 @@ export default defineEventHandler(async (event) => {
console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message;
} else if (axiosError.request) {
console.log(err)
// If error was caused by the request
console.error(axiosError.request);
} else {
@ -78,6 +47,4 @@ export default defineEventHandler(async (event) => {
}
})
export { registeringSuccessful, errorMsg };
registeringSuccessful = false;
export { errorMsg };