diff --git a/.gitignore b/.gitignore index 4d29575..23756e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies -/node_modules +front_end/node_modules /.pnp .pnp.js diff --git a/front_end/package-lock.json b/front_end/package-lock.json index 22c9307..ef0f376 100644 --- a/front_end/package-lock.json +++ b/front_end/package-lock.json @@ -8,6 +8,7 @@ "name": "hackathon", "version": "0.1.0", "dependencies": { + "@react-keycloak/web": "^3.4.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.1", @@ -64,6 +65,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -667,6 +669,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1492,6 +1495,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", @@ -2783,6 +2787,48 @@ } } }, + "node_modules/@react-keycloak/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-keycloak/core/-/core-3.2.0.tgz", + "integrity": "sha512-1yzU7gQzs+6E1v6hGqxy0Q+kpMHg9sEcke2yxZR29WoU8KNE8E50xS6UbI8N7rWsgyYw8r9W1cUPCOF48MYjzw==", + "license": "MIT", + "dependencies": { + "react-fast-compare": "^3.2.0" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/reactkeycloak" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@react-keycloak/web": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-keycloak/web/-/web-3.4.0.tgz", + "integrity": "sha512-yKKSCyqBtn7dt+VckYOW1IM5NW999pPkxDZOXqJ6dfXPXstYhOQCkTZqh8l7UL14PkpsoaHDh7hSJH8whah01g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.0", + "@react-keycloak/core": "^3.2.0", + "hoist-non-react-statics": "^3.3.2" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/reactkeycloak" + }, + "peerDependencies": { + "keycloak-js": ">=9.0.2", + "react": ">=16.8", + "react-dom": ">=16.8", + "typescript": ">=3.8" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -3110,6 +3156,7 @@ "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3457,6 +3504,7 @@ "version": "19.2.7", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -3465,6 +3513,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -3565,6 +3614,7 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -3616,6 +3666,7 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -3955,6 +4006,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4044,6 +4096,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4884,6 +4937,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6566,6 +6620,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8089,6 +8144,21 @@ "he": "bin/he" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -9096,6 +9166,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "peer": true, "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -9941,6 +10012,7 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -10109,6 +10181,16 @@ "node": ">=4.0" } }, + "node_modules/keycloak-js": { + "version": "26.2.2", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.2.tgz", + "integrity": "sha512-ug7pNZ1xNkd7PPkerOJCEU2VnUhS7CYStDOCFJgqCNQ64h53ppxaKrh4iXH0xM8hFu5b1W6e6lsyYWqBMvaQFg==", + "license": "Apache-2.0", + "peer": true, + "workspaces": [ + "test" + ] + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -11153,6 +11235,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -12219,6 +12302,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12546,6 +12630,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12669,6 +12754,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -12681,6 +12767,12 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==" }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -12690,6 +12782,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13103,6 +13196,7 @@ "version": "2.79.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -13329,6 +13423,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -14475,22 +14570,6 @@ } } }, - "node_modules/tailwindcss/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", @@ -14691,6 +14770,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "peer": true, "engines": { "node": ">=12" }, @@ -14842,6 +14922,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true, "engines": { "node": ">=10" }, @@ -14943,6 +15024,7 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15227,6 +15309,7 @@ "version": "5.104.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -15296,6 +15379,7 @@ "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "peer": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -15684,6 +15768,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", diff --git a/front_end/package.json b/front_end/package.json index 96b4d0e..2b334f4 100644 --- a/front_end/package.json +++ b/front_end/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@react-keycloak/web": "^3.4.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.1", diff --git a/front_end/public/keycloak.json b/front_end/public/keycloak.json new file mode 100644 index 0000000..4f622b4 --- /dev/null +++ b/front_end/public/keycloak.json @@ -0,0 +1,6 @@ +{ + "realm": "Frisbyee_realm", + "resource": "Frisbyee_client", + "auth-server-url": "http://localhost:8080", + "public-client": true +} diff --git a/front_end/src/App.tsx b/front_end/src/App.tsx index a53698a..6a12c75 100644 --- a/front_end/src/App.tsx +++ b/front_end/src/App.tsx @@ -1,25 +1,40 @@ import React from 'react'; import logo from './logo.svg'; import './App.css'; +import { ReactKeycloakProvider } from '@react-keycloak/web' +import keycloak from './keycloak' +import Login from './components/login'; +import { LocalDataProvider } from './provider/LocalDataProvider'; + + +const keycloakInitOptions = { + onLoad: 'login-required', + checkLoginIframe: false +} function App() { return ( -
-
- logo -

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
+ + +
+
+ logo +

+ Edit src/App.tsx and save to reload. +

+ + Learn React + + +
+
+
+
); } diff --git a/front_end/src/classes.tsx b/front_end/src/classes.tsx new file mode 100644 index 0000000..cbc46b5 --- /dev/null +++ b/front_end/src/classes.tsx @@ -0,0 +1,41 @@ +export type Groupe = "Entrainement" | "Competition" | "Loisir"; + +export class User{ + id!: number; + nom!: String; + session!: Session[]; //nb: Admin liaison non symétrique /!\ +} + +export class Admin extends User{ + +} + +export class Athlete extends User{ + groupe!: Groupe; + +} + +export class Coach extends User{ + +} + +export class Session{ + id!: number; + activites!: Activite[]; + isRecurent! : Boolean; + Creneau!: Date; + coach!: Coach; + athletes!: Athlete[] + duree! : number; + groupe! : Groupe; +} + +export class Activite{ + id!: number; + nom!: String; + session!: Session; + theme!: String; + data!: Map; + Duree!: number; + +} \ No newline at end of file diff --git a/front_end/src/components/ent.tsx b/front_end/src/components/ent.tsx new file mode 100644 index 0000000..75a2d0e --- /dev/null +++ b/front_end/src/components/ent.tsx @@ -0,0 +1,16 @@ +import { useState } from "react" +import { User } from "../classes" +import { useLocalData } from "../context/useLocalData" + + +export const ENT =() =>{ + const {user} = useLocalData() + + return( +
+ +
+ ) +} + +export default ENT diff --git a/front_end/src/components/login.tsx b/front_end/src/components/login.tsx new file mode 100644 index 0000000..a99949a --- /dev/null +++ b/front_end/src/components/login.tsx @@ -0,0 +1,23 @@ +import { useKeycloak } from '@react-keycloak/web' + + + + +export const Login =() =>{ + const { keycloak } = useKeycloak() + return( +
+
+ Authenticated : {keycloak.authenticated ? '✅' : '❌'} +
+ + +
+ ) +} + +export default Login diff --git a/front_end/src/context/LocalDataContext2.tsx b/front_end/src/context/LocalDataContext2.tsx new file mode 100644 index 0000000..296753f --- /dev/null +++ b/front_end/src/context/LocalDataContext2.tsx @@ -0,0 +1,14 @@ +import { createContext } from 'react' +import { Session, User } from '../classes'; + +interface LocalDataContextType { + user:User; + setUser: React.Dispatch> + sessions: Session[]; + setSessions: React.Dispatch> + users: User[]; + setUsers: React.Dispatch> + +} + +export const LocalDataContext = createContext(undefined) diff --git a/front_end/src/context/useLocalData.tsx b/front_end/src/context/useLocalData.tsx new file mode 100644 index 0000000..89a4712 --- /dev/null +++ b/front_end/src/context/useLocalData.tsx @@ -0,0 +1,10 @@ +import { useContext } from 'react' +import { LocalDataContext } from './LocalDataContext2' + +export const useLocalData = () => { + const context = useContext(LocalDataContext) + if (!context) { + throw new Error('useLocalData must be used within LocalDataProvider') + } + return context +} diff --git a/front_end/src/keycloak.js b/front_end/src/keycloak.js new file mode 100644 index 0000000..48bee01 --- /dev/null +++ b/front_end/src/keycloak.js @@ -0,0 +1,5 @@ +import Keycloak from 'keycloak-js' + +const keycloak = new Keycloak("/keycloak.json") + +export default keycloak \ No newline at end of file diff --git a/front_end/src/login_reg_home/Lgoin.tsx b/front_end/src/login_reg_home/Lgoin.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/front_end/src/provider/LocalDataProvider.tsx b/front_end/src/provider/LocalDataProvider.tsx new file mode 100644 index 0000000..d080c1d --- /dev/null +++ b/front_end/src/provider/LocalDataProvider.tsx @@ -0,0 +1,20 @@ +import { useState } from 'react' +import { Session, User } from '../classes' +import { LocalDataContext } from '../context/LocalDataContext2' + +export const LocalDataProvider = ({ children }: { children: React.ReactNode }) => { + const [user, setUser] = useState(new User()) + const [sessions, setSessions] = useState([]) + const [users, setUsers] = useState([]) + + + + return ( + + {children} + + ) +} + + diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx new file mode 100644 index 0000000..35370e2 --- /dev/null +++ b/front_end/src/requetes.tsx @@ -0,0 +1,70 @@ +import { Activite, Athlete, Coach, Session, User } from "./classes"; +import { useKeycloak } from '@react-keycloak/web' + +const { keycloak } = useKeycloak() + +const useAuthHeader = () => { + return keycloak?.token + ? { Authorization: `Bearer ${keycloak.token}` } + : {} +} + +//UPDATE ///////////////////////////////////////////////////////// + +//COACH / ATHLETE + +/* +retourne l'utilisateur lié à l'identifiant keyloack +*/ +export function getUser(id:number){ + //keycloak.id; +} +/* +retourne toutes les Session dont l'user est inscrit +*/ +export function updateSessionsOfUser(user:Coach|Athlete, min: Date, max: Date){ + //TODO +} + +export function updateActivitiesOfSession(session:Session){ + //TODO +} + +// ADMIN : + +export function updateAllSession(min: Date, max: Date){ + //TODO +} + +export function updateAllUser(){ + +} + +// POST ///////////////////////////////////////////////////////// + +// COACH ADMIN +export function postSession(session: Session){ + +} + +export function postActivity(session: Session, activity: Activite){ + //post nouvelle activitée + + //associer la nouvelle activité à la session +} + +export function postUser(user: User){ + +} + +// SET ///////////////////////////////////////////////////////// + +//ADMIN +export function setUserName(user: User, name: string){ + +} + +//COACH +export function setSessionCreneau(session: Session, date:Date){ + +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..89b9cd5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "hackathon", + "lockfileVersion": 3, + "requires": true, + "packages": {} +}