CreateUser done
This commit is contained in:
parent
bd2d6c0b92
commit
cdf0827c91
@ -10,6 +10,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@primevue/themes": "^4.2.5",
|
"@primevue/themes": "^4.2.5",
|
||||||
|
"axios": "^1.7.9",
|
||||||
|
"primeicons": "^7.0.0",
|
||||||
"primevue": "^4.2.5",
|
"primevue": "^4.2.5",
|
||||||
"swagger-ui": "^5.18.2",
|
"swagger-ui": "^5.18.2",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
|
11
pnpm-lock.yaml
generated
11
pnpm-lock.yaml
generated
@ -11,6 +11,12 @@ importers:
|
|||||||
'@primevue/themes':
|
'@primevue/themes':
|
||||||
specifier: ^4.2.5
|
specifier: ^4.2.5
|
||||||
version: 4.2.5
|
version: 4.2.5
|
||||||
|
axios:
|
||||||
|
specifier: ^1.7.9
|
||||||
|
version: 1.7.9
|
||||||
|
primeicons:
|
||||||
|
specifier: ^7.0.0
|
||||||
|
version: 7.0.0
|
||||||
primevue:
|
primevue:
|
||||||
specifier: ^4.2.5
|
specifier: ^4.2.5
|
||||||
version: 4.2.5(vue@3.5.13)
|
version: 4.2.5(vue@3.5.13)
|
||||||
@ -730,6 +736,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
|
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
|
|
||||||
|
primeicons@7.0.0:
|
||||||
|
resolution: {integrity: sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==}
|
||||||
|
|
||||||
primevue@4.2.5:
|
primevue@4.2.5:
|
||||||
resolution: {integrity: sha512-7UMOIJvdFz4jQyhC76yhNdSlHtXvVpmE2JSo2ndUTBWjWJOkYyT562rQ4ayO+bMdJLtzBGqgY64I9ZfEvNd7vQ==}
|
resolution: {integrity: sha512-7UMOIJvdFz4jQyhC76yhNdSlHtXvVpmE2JSo2ndUTBWjWJOkYyT562rQ4ayO+bMdJLtzBGqgY64I9ZfEvNd7vQ==}
|
||||||
engines: {node: '>=12.11.0'}
|
engines: {node: '>=12.11.0'}
|
||||||
@ -1855,6 +1864,8 @@ snapshots:
|
|||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
primeicons@7.0.0: {}
|
||||||
|
|
||||||
primevue@4.2.5(vue@3.5.13):
|
primevue@4.2.5(vue@3.5.13):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@primeuix/styled': 0.3.2
|
'@primeuix/styled': 0.3.2
|
||||||
|
39
src/App.vue
39
src/App.vue
@ -1,17 +1,34 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { RouterLink,RouterView } from 'vue-router'
|
import { RouterView } from 'vue-router'
|
||||||
|
import Menubar from 'primevue/menubar';
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
import Toast from 'primevue/toast';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
const menuItems =[
|
||||||
|
{
|
||||||
|
label: 'Accueil',
|
||||||
|
command:() => router.push({name:'home'}),
|
||||||
|
icon: 'pi pi-home',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:'Login',
|
||||||
|
command:() => router.push({name:'login'}),
|
||||||
|
icon:'pi pi-user',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:'Swagger',
|
||||||
|
command:() => router.push({name:'swagger'}),
|
||||||
|
icon:'pi pi-cog',
|
||||||
|
}
|
||||||
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<h1>Hello App!</h1>
|
<h1>Hello App!</h1>
|
||||||
<p>
|
<Toast />
|
||||||
<strong>Current route path:</strong> {{ $route.fullPath }}
|
<p><strong>Current route path:</strong> {{ $route.fullPath }}</p>
|
||||||
</p>
|
<Menubar :model="menuItems" />
|
||||||
<nav>
|
<RouterView />
|
||||||
<RouterLink to="/">Go to Home</RouterLink>
|
|
||||||
<RouterLink to="/login">Go to login</RouterLink>
|
|
||||||
<RouterLink to="/swagger">Go to swagger</RouterLink>
|
|
||||||
</nav>
|
|
||||||
<RouterView />
|
|
||||||
</template>
|
</template>
|
11
src/api.js
Normal file
11
src/api.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import axios from 'axios';
|
||||||
|
|
||||||
|
const api = axios.create({
|
||||||
|
baseURL: 'http://127.0.0.1:8000/api',
|
||||||
|
timeout: 2500,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const createUser = async (userData) => {
|
||||||
|
const response = await api.post('/users', userData);
|
||||||
|
return response.data
|
||||||
|
}
|
10
src/main.js
10
src/main.js
@ -1,11 +1,14 @@
|
|||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
import './style.css'
|
import './style.css'
|
||||||
import App from './App.vue'
|
import App from './app.vue'
|
||||||
|
|
||||||
import PrimeVue from 'primevue/config';
|
import PrimeVue from 'primevue/config';
|
||||||
import Aura from '@primevue/themes/aura';
|
import Aura from '@primevue/themes/material';
|
||||||
|
|
||||||
import router from "./router"
|
import router from "./router"
|
||||||
|
import 'primeicons/primeicons.css'
|
||||||
|
import ToastService from 'primevue/toastservice';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
app.use(PrimeVue,{
|
app.use(PrimeVue,{
|
||||||
@ -13,5 +16,6 @@ app.use(PrimeVue,{
|
|||||||
preset:Aura
|
preset:Aura
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
app.use(ToastService);
|
||||||
app.use(router);
|
app.use(router);
|
||||||
app.mount("#app");
|
app.mount("#app");
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
color-scheme: light dark;
|
color-scheme: light dark;
|
||||||
color: rgba(255, 255, 255, 0.87);
|
color: rgba(255, 255, 255, 0.87);
|
||||||
background-color: #ffffff;
|
background-color: #1d1d1d;
|
||||||
|
|
||||||
font-synthesis: none;
|
font-synthesis: none;
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
@ -25,6 +25,7 @@ a:hover {
|
|||||||
h1 {
|
h1 {
|
||||||
font-size: 3.2em;
|
font-size: 3.2em;
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
|
color:rgb(255, 255, 255)
|
||||||
}
|
}
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<span style="color:crimson">Home</span>
|
<span>Home</span>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,6 +1,60 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { createUser } from '../api.js';
|
||||||
|
import { useToast } from 'primevue/usetoast';
|
||||||
|
import PMessage from 'primevue/message';
|
||||||
|
|
||||||
|
const username = ref('');
|
||||||
|
const email = ref('');
|
||||||
|
const password = ref('');
|
||||||
|
const errors = ref({ username: '', email: '' });
|
||||||
|
const toast = useToast();
|
||||||
|
|
||||||
|
async function make_user() {
|
||||||
|
errors.value = { username: '', email: '' };
|
||||||
|
try {
|
||||||
|
await createUser({
|
||||||
|
username: username.value,
|
||||||
|
email: email.value,
|
||||||
|
password: password.value,
|
||||||
|
});
|
||||||
|
toast.add({ severity: 'success', summary: 'Succès', detail: 'Utilisateur créé !' });
|
||||||
|
} catch (error) {
|
||||||
|
if (error.response && error.response.data) {
|
||||||
|
const data = error.response.data;
|
||||||
|
if (data.username) {
|
||||||
|
errors.value.username = data.username[0];
|
||||||
|
}
|
||||||
|
if (data.email) {
|
||||||
|
errors.value.email = data.email[0];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toast.add({ severity: 'error', summary: 'Erreur', detail: 'Une erreur est survenue.' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<span>StockSeeker Login</span>
|
<div class="container">
|
||||||
|
<span>StockSeeker Login</span>
|
||||||
|
<div class="form-container">
|
||||||
|
<div class="form">
|
||||||
|
<label for="username">Username:</label>
|
||||||
|
<input type="text" class="p-inputtext" name="username" id="name" v-model="username" required>
|
||||||
|
<p-message v-if="errors.username" severity="error">{{ errors.username }}</p-message>
|
||||||
|
</div>
|
||||||
|
<div class="form">
|
||||||
|
<label for="email">email:</label>
|
||||||
|
<input type="text" name="email" id="email" v-model="email" class="p-inputtext" required>
|
||||||
|
<p-message v-if="errors.email" severity="error">{{ errors.email }}</p-message>
|
||||||
|
</div>
|
||||||
|
<div class="form">
|
||||||
|
<label for="password">password:</label>
|
||||||
|
<input type="password" name="password" id="password" v-model="password" class="p-inputtext" required>
|
||||||
|
</div>
|
||||||
|
<button @click="make_user" class="p-button p-component" type="button">S'inscrire</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user