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

@ -17,6 +17,7 @@ export const signUp = async (req, res, next) => {
try { 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]) const result = await ownConn.execute(sql, [req.body.username])
if (result.length > 0) { //username already exists if (result.length > 0) { //username already exists
return res.status(409).send({ return res.status(409).send({
message: 'This username is already in use!' message: 'This username is already in use!'

View File

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

View File

@ -9,8 +9,14 @@
<pre :class="['label', darkMode ? 'pre-darkmode' : 'pre-lightmode']">Client:</pre> <pre :class="['label', darkMode ? 'pre-darkmode' : 'pre-lightmode']">Client:</pre>
<pre v-if="!editable" <pre v-if="!editable"
:class="['data', darkMode ? 'data-darkmode' : 'data-lightmode']"> {{ item.customer }}</pre> :class="['data', darkMode ? 'data-darkmode' : 'data-lightmode']"> {{ item.customer }}</pre>
<input v-if="editable" v-model="item.customer" @change="updateConfigItem()" <!-- <input v-if="editable" v-model="item.customer" @change="updateCustomerID()"
:class="['data', 'input', darkMode ? 'data-darkmode' : 'data-lightmode']"> :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>
<div class="data-field" id="location"> <div class="data-field" id="location">
<pre :class="['label', darkMode ? 'pre-darkmode' : 'pre-lightmode']">Location:</pre> <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 darkMode = ref(true)
const item = ref({}); const item = ref({});
const customer = ref({});
const configItems = ref([]);
const customers = ref([]);
// get config item from id // get config item from id
const getItemById = async () => { const getItemById = async () => {
@ -109,13 +118,13 @@ const updateConfigItem = async () => {
return; return;
} else { } else {
var counter = 0; var counter = 0;
//later check if ci already exists // check if config item name already exists
// for (let key in item.value) { configItems.value.forEach(ci => {
// if (this.configItems[key].assetName === this.item.assetName) { if (ci.assetName === item.value.assetName) {
// counter += 1; counter += 1;
// } }
// } });
if (counter == 1) { if (counter == 2) {
alert("This asset name already exists. Please choose an unique asset name or modify respectively delete the old one!"); alert("This asset name already exists. Please choose an unique asset name or modify respectively delete the old one!");
return; 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 () => { const confirmDeleteAsset = async () => {
if (deleteAssetBool.value === true) { if (deleteAssetBool.value === true) {
if (confirm("Do you really want to delete this config item? It cannot be undone!")) { 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); watch(deleteAssetBool, confirmDeleteAsset);
onMounted(() => { onMounted(() => {
getItemById(); getItemById();
getConfigItems();
getCustomers();
}); });
</script> </script>
@ -397,4 +441,20 @@ export default {
.rectangle-lightmode { .rectangle-lightmode {
background-color: #EBEBEB; 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> </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) => { 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) { if (!loginSuccessful) {
throw createError({ throw createError({
statusCode: 400, statusCode: 400,

View File

@ -1,16 +1,8 @@
import { registeringSuccessful, errorMsg } from "../middleware/signUp.js"; import { errorMsg } from "../middleware/signUp.js";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = { if (!(errorMsg === '')) {
'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) {
throw createError({ throw createError({
statusCode: 400, statusCode: 400,
statusMessage: errorMsg, statusMessage: errorMsg,

View File

@ -1,5 +1,4 @@
import { errorMsg } from "../middleware/configItems"; import { errorMsg } from "../middleware/configItems";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => { 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 axios, { AxiosError } from 'axios';
import serversideConfig from '../../serversideConfig'; import serversideConfig from '../../serversideConfig';
import fs from 'fs';
import https from 'https'; import https from 'https';
let loginSuccessful = false; let loginSuccessful = false;
@ -8,19 +7,6 @@ let errorMsg = '';
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
loginSuccessful = false; loginSuccessful = false;
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({ const agent = new https.Agent({
rejectUnauthorized: false, rejectUnauthorized: false,
}); });
@ -33,6 +19,10 @@ export default defineEventHandler(async (event) => {
httpsAgent: agent httpsAgent: agent
}); });
if (event.path.startsWith("/api/login")) {
const body = await readBody(event)
// get user object from backend // get user object from backend
try { try {
let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/login`, { let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/login`, {

View File

@ -1,26 +1,10 @@
import axios, { AxiosError } from 'axios'; import axios, { AxiosError } from 'axios';
import serversideConfig from '../../serversideConfig'; import serversideConfig from '../../serversideConfig';
import fs from 'fs';
import https from 'https'; import https from 'https';
let registeringSuccessful = false;
let errorMsg = ''; let errorMsg = '';
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
registeringSuccessful = false;
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({ const agent = new https.Agent({
rejectUnauthorized: false, rejectUnauthorized: false,
}); });
@ -33,28 +17,12 @@ export default defineEventHandler(async (event) => {
httpsAgent: agent httpsAgent: agent
}); });
if (event.path.startsWith("/api/signup")) {
const body = await readBody(event)
// do the post request in the backend // do the post request in the backend
try { try {
let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/signup`, { let res = await axiosInstance.post(`https://${serversideConfig.url}:${serversideConfig.port}/signup`, body);
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;
} catch (err) { } catch (err) {
if (axios.isAxiosError(err)) { if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError; const axiosError = err as AxiosError;
@ -64,6 +32,7 @@ export default defineEventHandler(async (event) => {
console.error(axiosError.response.data.message); console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message; errorMsg = axiosError.response.data.message;
} else if (axiosError.request) { } else if (axiosError.request) {
console.log(err)
// If error was caused by the request // If error was caused by the request
console.error(axiosError.request); console.error(axiosError.request);
} else { } else {
@ -78,6 +47,4 @@ export default defineEventHandler(async (event) => {
} }
}) })
export { registeringSuccessful, errorMsg }; export { errorMsg };
registeringSuccessful = false;