diff --git a/SerpentRace_Backend/.env.dev b/SerpentRace_Backend/.env.dev index 0979d16d..7f280d5f 100644 --- a/SerpentRace_Backend/.env.dev +++ b/SerpentRace_Backend/.env.dev @@ -32,3 +32,10 @@ MINIO_USE_SSL=false MAX_SPECIAL_FIELDS_PERCENTAGE=67 MAX_GENERATION_TIME_SECONDS=20 GENERATION_ERROR_TOLERANCE=15 + +# EMAIL SERVICE CONFIGURATION +EMAIL_HOST=smtp.gmail.com +EMAIL_PORT=587 +EMAIL_USER=your_email@domain.com +EMAIL_PASS=your_email_password +EMAIL_FROM=noreply@serpentrace.com \ No newline at end of file diff --git a/SerpentRace_Frontend/src/api/userApi.js b/SerpentRace_Frontend/src/api/userApi.js index 3bbef827..e33b32ba 100644 --- a/SerpentRace_Frontend/src/api/userApi.js +++ b/SerpentRace_Frontend/src/api/userApi.js @@ -1,12 +1,11 @@ -import axios from 'axios'; - +import axios from "axios" export const API_CONFIG = { - baseURL: import.meta.env.VITE_API_URL+'/api', - wsURL: 'http://localhost:3000', + baseURL: import.meta.env.VITE_API_URL + "/api", + wsURL: "http://localhost:3000", timeout: 10000, - retryAttempts: 3 -}; + retryAttempts: 3, +} export const apiClient = axios.create({ baseURL: API_CONFIG.baseURL, @@ -19,20 +18,40 @@ export const apiClient = axios.create({ //login export const login = async (username, password) => { - try { - const response = await apiClient.post('/users/login', { username, password }); - return response.data; - } catch (error) { - throw error; - } -}; + try { + const response = await apiClient.post("/users/login", { username, password }) + return response.data + } catch (error) { + throw error + } +} //register export const register = async (username, email, password, fname, lname, phone) => { - try { - const response = await apiClient.post('/users/create', { username, email, password, fname, lname, phone }); - return response.data; - } catch (error) { - throw error; - } -}; \ No newline at end of file + try { + const response = await apiClient.post("/users/create", { username, email, password, fname, lname, phone }) + return { ...response.data, status: response.status } + } catch (error) { + throw error + } +} + +//verify email +export const verifyEmail = async (token) => { + try { + const response = await apiClient.get(`/users/verify-email/${token}`) + return response.data + } catch (error) { + throw error + } +} + +// Get current user's game statistics +export const getUserStats = async () => { + try { + const response = await apiClient.get("/users/me/stats") + return response.data + } catch (error) { + throw error + } +} diff --git a/SerpentRace_Frontend/src/components/Footer/Footer.jsx b/SerpentRace_Frontend/src/components/Footer/Footer.jsx index 2752c031..7d58f102 100644 --- a/SerpentRace_Frontend/src/components/Footer/Footer.jsx +++ b/SerpentRace_Frontend/src/components/Footer/Footer.jsx @@ -2,7 +2,6 @@ import React, { useEffect, useRef, useState } from "react" import { Link } from "react-router-dom" import Logo from "../../assets/pictures/Logo" - const ArrowUpIcon = () => const Footer = () => { @@ -35,54 +34,59 @@ const Footer = () => { return (