diff --git a/src/api/core/OpenAPI.ts b/src/api/core/OpenAPI.ts index bae5eb773e38a6fa187a68f3ac9f3dbecc88eaf5..213c15d4a7b840e8d13a35f74c2618c13b7c9398 100644 --- a/src/api/core/OpenAPI.ts +++ b/src/api/core/OpenAPI.ts @@ -21,7 +21,7 @@ export type OpenAPIConfig = { export const OpenAPI: OpenAPIConfig = { BASE: 'http://localhost:8080', - VERSION: '0', + VERSION: '3.0', WITH_CREDENTIALS: false, CREDENTIALS: 'include', TOKEN: undefined, diff --git a/src/api/index.ts b/src/api/index.ts index 7bfbd7a82dcdde4a855e2ee242508c2268633a83..2a974f1dd456ed118f2caf5c190038eb3cfa7c3f 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -6,3 +6,10 @@ export { ApiError } from './core/ApiError'; export { CancelablePromise, CancelError } from './core/CancelablePromise'; export { OpenAPI } from './core/OpenAPI'; export type { OpenAPIConfig } from './core/OpenAPI'; + +export type { AuthenticationResponse } from './models/AuthenticationResponse'; +export type { ExceptionResponse } from './models/ExceptionResponse'; +export type { LoginRequest } from './models/LoginRequest'; +export type { SignUpRequest } from './models/SignUpRequest'; + +export { AuthenticationService } from './services/AuthenticationService'; diff --git a/src/api/models/AuthenticationResponse.ts b/src/api/models/AuthenticationResponse.ts new file mode 100644 index 0000000000000000000000000000000000000000..e9773225f1c1b7206a2339985029abcfe618971f --- /dev/null +++ b/src/api/models/AuthenticationResponse.ts @@ -0,0 +1,8 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type AuthenticationResponse = { + token?: string; +}; + diff --git a/src/api/models/ExceptionResponse.ts b/src/api/models/ExceptionResponse.ts new file mode 100644 index 0000000000000000000000000000000000000000..12c0a7873d7d38f6782e970737603521971c9c81 --- /dev/null +++ b/src/api/models/ExceptionResponse.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type ExceptionResponse = { + status?: number; + message?: string; +}; + diff --git a/src/api/models/LoginRequest.ts b/src/api/models/LoginRequest.ts new file mode 100644 index 0000000000000000000000000000000000000000..9c5def4f1a6a028911a9b4ca8a147fcc14f8015e --- /dev/null +++ b/src/api/models/LoginRequest.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type LoginRequest = { + email?: string; + password?: string; +}; + diff --git a/src/api/models/SignUpRequest.ts b/src/api/models/SignUpRequest.ts new file mode 100644 index 0000000000000000000000000000000000000000..28a2e78a3a39e8ceb5f28567ebdf02d912017210 --- /dev/null +++ b/src/api/models/SignUpRequest.ts @@ -0,0 +1,14 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type SignUpRequest = { + firstName?: string; + lastName?: string; + email?: string; + password?: string; + changeWilling?: string; + experience?: string; + challenges?: Array<string>; +}; + diff --git a/src/api/services/AuthenticationService.ts b/src/api/services/AuthenticationService.ts new file mode 100644 index 0000000000000000000000000000000000000000..eae8fd5c8b2f6ef8d5cfaf6ed6976edcf0a386d4 --- /dev/null +++ b/src/api/services/AuthenticationService.ts @@ -0,0 +1,55 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { AuthenticationResponse } from '../models/AuthenticationResponse'; +import type { LoginRequest } from '../models/LoginRequest'; +import type { SignUpRequest } from '../models/SignUpRequest'; +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; +export class AuthenticationService { + /** + * User Signup + * Sign up a new user + * @returns AuthenticationResponse Successfully signed up + * @throws ApiError + */ + public static signup({ + requestBody, + }: { + requestBody: SignUpRequest, + }): CancelablePromise<AuthenticationResponse> { + return __request(OpenAPI, { + method: 'POST', + url: '/api/auth/signup', + body: requestBody, + mediaType: 'application/json', + errors: { + 409: `Email already exists`, + }, + }); + } + /** + * User Login + * Log in with an existing user + * @returns AuthenticationResponse Successfully logged in + * @throws ApiError + */ + public static login({ + requestBody, + }: { + requestBody: LoginRequest, + }): CancelablePromise<AuthenticationResponse> { + return __request(OpenAPI, { + method: 'POST', + url: '/api/auth/login', + body: requestBody, + mediaType: 'application/json', + errors: { + 401: `Invalid credentials`, + 404: `User not found`, + }, + }); + } +} diff --git a/src/components/Buttons/Button1.vue b/src/components/Buttons/Button1.vue index 33b300d7139220c9388160810541bafdf579332e..c5dfa9cfa37b8d1d047ae0a0dbb4ab2907b00a78 100644 --- a/src/components/Buttons/Button1.vue +++ b/src/components/Buttons/Button1.vue @@ -1,5 +1,5 @@ <template> - <button type="button" class="btn btn-success" id="buttonStyle">{{ buttonText }}</button> + <button type="button" class="btn btn-primary" id="buttonStyle">{{ buttonText }}</button> </template> <script> diff --git a/src/views/FeedbackView.vue b/src/views/FeedbackView.vue index 9095328987e0c5479f039dd59d667f0533d4cb71..37264535422ff7742a1e6e410d4e6338c0752598 100644 --- a/src/views/FeedbackView.vue +++ b/src/views/FeedbackView.vue @@ -1,3 +1,85 @@ <template> - Hallo -</template> \ No newline at end of file + <main> + <div class="wrapper"> + <div id="formFrame"> + <h1>Feedback</h1> + <form @submit.prevent="submitForm"> + <BaseInput v-model="email" label="Email" type="email" placeholder="Enter your email" inputId="email" required /> + <br> + <label for="feedback">Your feedback:</label> + <textarea v-model="message" placeholder="Write here" rows="5" name="comment[text]" id="comment_text" cols="33" + required></textarea> + <Button1 button-text="Send" @click="submitForm">Submit</Button1> + <p v-if="submissionStatus">{{ submissionStatus }}</p> + </form> + </div> + </div> + </main> + </template> + +<script setup lang="ts"> +import { ref } from 'vue'; +import BaseInput from '@/components/InputFields/BaseInput.vue'; +import Button1 from '@/components/Buttons/Button1.vue'; + +const email = ref(""); +const message = ref(""); +const submissionStatus = ref(""); + +const submitForm = async () => { + +}; +</script> + +<style scoped> +main { + display: flex; + flex-direction: column; + align-items: center; + font-family: 'Poppins', sans-serif; +} + +.wrapper { + width: 60%; + height: 100%; + margin: 30px; + margin-bottom: 4rem; + display: flex; + justify-content: center; + align-items: center; +} + +#formFrame { + width: 400px; + padding: 40px; + border-radius: 50px; + color: #101010; +} + +textarea { + padding: 10px; + max-width: 100%; + line-height: 1.5; + border-radius: 5px; + border: 1px solid #ccc; + box-shadow: 1px 1px 1px #999; +} + +textarea { + width: 500px; + height: 100px; + background: none repeat scroll 0 0 rgba(255, 255, 255, 0.151); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) inset; + color: #555555; + font-size: 0.9em; + line-height: 1.4em; + padding: 5px 8px; + transition: background-color 0.2s ease 0s; +} + + +textarea:focus { + background: none repeat scroll 0 0 #FFFFFF; + outline-width: 0; +} +</style> \ No newline at end of file