diff --git a/software/backend/server.ts b/software/backend/server.ts index e012081..bec88e1 100644 --- a/software/backend/server.ts +++ b/software/backend/server.ts @@ -20,9 +20,12 @@ app.use(bodyParser.json()) // Create database and tables startDatabase() +// Static files +const path = require('path') +app.use('/static', express.static(path.join(__dirname, 'images'))) + // Add delay for more realistic response times app.use((req, res, next) => { - console.log(123) setTimeout(next, Math.floor((Math.random () * 4000) + 100)) }) @@ -33,9 +36,6 @@ app.use("/products", product) app.use("/orders", order) app.use("/accounts", account) -// Static files -const path = require('path') -app.use('/static', express.static(path.join(__dirname, 'images'))) // Start server app.listen(port, () => { diff --git a/software/src/data/enums/serverStateEnum.ts b/software/src/data/enums/serverStateEnum.ts new file mode 100644 index 0000000..2e92d38 --- /dev/null +++ b/software/src/data/enums/serverStateEnum.ts @@ -0,0 +1,5 @@ +export enum ServerStateEnum { + ONLINE, + OFFLINE, + PENDING +} \ No newline at end of file diff --git a/software/src/locales/de.json b/software/src/locales/de.json index 33f31f6..98d3e18 100644 --- a/software/src/locales/de.json +++ b/software/src/locales/de.json @@ -115,5 +115,12 @@ "exerciseGroup3": "Aufgabengruppe 3: Cross-Site Scripting (XSS)", "exercise": "Aufgabe {0}" }, - "serverState": "Server Status" + "serverState": "Server Status", + "required": "Darf nicht leer bleiben", + "noDigitsAllowed": "Zahlen sind nicht erlaubt", + "notEnoughChars": "Nicht lang genug", + "passwordToShort": "Passwort zu kurz", + "onlyDigitsAllowed": "Nur Zahlen erlaubt", + "noOrders": "Keine Bestellungen gefunden", + "noOrdersText": "Bisher wurden keine Bestellungen von diesem Account getÃĪtigt. Gehe zum Warenkorb und bestelle!" } diff --git a/software/src/locales/en.json b/software/src/locales/en.json index e56d37a..08686f0 100644 --- a/software/src/locales/en.json +++ b/software/src/locales/en.json @@ -115,5 +115,12 @@ "exerciseGroup3": "Exercise Group 3: Cross-Site Scripting (XSS)", "exercise": "Exercise {0}" }, - "serverState": "Server State:" + "serverState": "Server State:", + "required": "Is required", + "noDigitsAllowed": "Digits are not allowed", + "notEnoughChars": "Too short", + "passwordToShort": "Password too short", + "onlyDigitsAllowed": "Only digits are allowed", + "noOrders": "No orders found", + "noOrdersText": "There are no orders with this account until now. Go to the basket page and order something!" } diff --git a/software/src/pages/loginPage/loginForm.vue b/software/src/pages/loginPage/loginForm.vue index 1fc2e0f..c5d70fe 100644 --- a/software/src/pages/loginPage/loginForm.vue +++ b/software/src/pages/loginPage/loginForm.vue @@ -6,11 +6,14 @@ import { useAccountStore } from '@/data/stores/accountStore'; const accountStore = useAccountStore() const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false }) +const loginInProgress = ref(false) const username = ref("duranduran") const password = ref("H4nn0ver") -function startLogin() { - accountStore.login(username.value, password.value) +async function startLogin() { + loginInProgress.value = true + await accountStore.login(username.value, password.value) + loginInProgress.value = false } @@ -33,6 +36,7 @@ function startLogin() { {{ $t('account.noAccountRegister') }} @@ -40,6 +44,7 @@ function startLogin() { {{ $t('menu.login') }} diff --git a/software/src/pages/loginPage/registerForm.vue b/software/src/pages/loginPage/registerForm.vue index 1334eed..31ee220 100644 --- a/software/src/pages/loginPage/registerForm.vue +++ b/software/src/pages/loginPage/registerForm.vue @@ -4,10 +4,96 @@ import { ref } from 'vue'; import cardView from '@/components/cardView.vue'; import outlinedButton from '@/components/outlinedButton.vue'; import { useAccountStore } from '@/data/stores/accountStore'; +import { i18n } from '@/plugins/i18n'; +import { useFeedbackStore } from '@/data/stores/feedbackStore'; const newUser = ref(new AccountModel()) const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false }) const accountStore = useAccountStore() +const feedbackStore = useFeedbackStore() +const registerInProgress = ref(false) + +const stringRules = [ + value => { + if (value) { + return true + } else { + return feedbackStore.i18n.t('required') + } + }, + value => { + if (/[^0-9]/.test(value)) { + return true + } else { + return feedbackStore.i18n.t('noDigitsAllowed') + } + }, + value => { + if (value?.length >= 4) { + return true + } else { + return feedbackStore.i18n.t('notEnoughChars') + } + } +] + +const passwordRules = [ + value => { + if (value) { + return true + } else { + return feedbackStore.i18n.t('required') + } + }, + value => { + if (value?.length >= 8) { + return true + } else { + return feedbackStore.i18n.t('passwordToShort') + } + } +] + +const postalRules = [ + value => { + if (/[0-9]/.test(value)) { + return true + } else { + return feedbackStore.i18n.t('onlyDigitsAllowed') + } + }, + value => { + if (value?.length == 5) { + return true + } else { + return feedbackStore.i18n.t('notEnoughChars') + } + } +] + +const numberRules = [ + value => { + if (value) { + return true + } else { + return feedbackStore.i18n.t('required') + } + }, + value => { + if (/[0-9]/.test(value)) { + return true + } else { + return feedbackStore.i18n.t('onlyDigitsAllowed') + } + }, +] + +async function registerAccount() { + registerInProgress.value = true + + await accountStore.registerAccount(newUser.value) + registerInProgress.value = false +}