ADD: db + better register

This commit is contained in:
dorian melenotte 2024-09-03 17:54:37 +02:00
parent 7730fbdf61
commit 36784c7af2
12 changed files with 5278 additions and 53 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
node_modules

View File

@ -7,6 +7,6 @@ RUN bun run build
EXPOSE 5173
CMD ["bun start", "host", "0"]
CMD ["bun", "start", "host", "0"]
##-p pour acceder au port

23
app.py
View File

@ -1,23 +0,0 @@
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)

View File

@ -2,6 +2,6 @@ services:
web:
build: .
ports:
- "0:5173"
- "8000:5173"
redis:
image: "redis:gmoker"
image: "valkey/valkey:7"

5159
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,9 @@
"@chakra-ui/react": "^2.8.2",
"@emotion/react": "^11.13.0",
"@emotion/styled": "^11.13.0",
"axios": "^1.7.5",
"framer-motion": "^11.3.21",
"mysql2": "^3.11.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.26.0"

View File

@ -1,2 +0,0 @@
flask
redis

View File

@ -1,14 +1,29 @@
import { Button, Input, Stack } from "@chakra-ui/react";
import React, { useState } from "react";
import axios from "axios";
import { useState } from "react";
export function Register() {
const [isLoading, setIsLoading] = useState(false);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [confirmPassword, setConfirmPassword] = useState("");
const handleSubmit = async () => {
if (password !== confirmPassword) {
alert("Les mots de passe ne correspondent pas");
return;
}
const handleSubmit = () => {
setIsLoading(true);
setTimeout(() => {
try {
await axios.post("/api/register", { email, password });
alert("Inscription réussie");
} catch (error) {
console.error(error);
alert("Erreur lors de l'inscription");
} finally {
setIsLoading(false);
}, 2000);
}
};
return (
@ -17,9 +32,26 @@ export function Register() {
Veuillez remplir ce formulaire d'Inscription
</h1>
<Stack spacing={4} align="center">
<Input placeholder="Email" size="md" />
<Input placeholder="Password" size="md" type="password" />
<Input placeholder="Confirm Password" size="md" type="password" />
<Input
placeholder="Email"
size="md"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
<Input
placeholder="Password"
size="md"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<Input
placeholder="Confirm Password"
size="md"
type="password"
value={confirmPassword}
onChange={(e) => setConfirmPassword(e.target.value)}
/>
<Button
isLoading={isLoading}
loadingText="Chargement"

View File

@ -1,30 +1,47 @@
import { Button, Input, Stack } from "@chakra-ui/react";
import React, { useState } from "react";
import axios from "axios";
import { useState } from "react";
export function SignIn() {
const [isLoading, setIsLoading] = useState(false);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const handleSubmit = () => {
const handleSubmit = async () => {
setIsLoading(true);
setTimeout(() => {
try {
await axios.post("/api/register", { email, password });
console.log("gg");
} catch (error) {
console.log("error");
} finally {
setIsLoading(false);
}, 2000);
}
};
return (
<>
<Stack spacing={4} align="center">
<Input placeholder="Email" size="md" />
<Input placeholder="Password" size="md" type="password" />
<Button
isLoading={isLoading}
loadingText="Chargement"
variant="outline"
onClick={handleSubmit}
>
Connection
</Button>
</Stack>
</>
<Stack spacing={4} align="center">
<Input
placeholder="Email"
size="md"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
<Input
placeholder="Password"
size="md"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<Button
isLoading={isLoading}
loadingText="Chargement"
variant="outline"
onClick={handleSubmit}
>
Connection
</Button>
</Stack>
);
}

10
src/services/dataBase.jsx Normal file
View File

@ -0,0 +1,10 @@
const mysql = require("mysql2");
const pool = mysql.createPool({
host: "localhost",
user: "lazlor",
password: "amidorian04",
database: "firstdb",
});
module.exports = pool.promise();

5
src/services/schema.sql Normal file
View File

@ -0,0 +1,5 @@
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);

View File

@ -0,0 +1,24 @@
const express = require("express");
const bodyParser = require("body-parser");
const pool = require("./dataBase");
const app = express();
app.use(bodyParser.json());
app.post("/api/register", async (req, res) => {
const { email, password } = req.body;
try {
const [result] = await pool.query(
"INSERT INTO users (email, password) VALUES (?, ?)",
[email, password]
);
res.status(201).json({ id: result.insertId, email });
} catch (error) {
console.error(error);
res.status(500).json({ error: "Erreur lors de l'inscription" });
}
});
app.listen(3000, () => {
console.log("Server is running on port 3000");
});