{"version":3,"sources":["reducers/auth/index.js","reduxStore.js","img/fede-world.png","Components/Header/index.js","img/flag-en.png","img/flag-fr.png","img/spinner-fede.gif","img/interculturalite.jpg","Components/Common/index.js","provider/authProvider.js","services/GraphService.js","Components/Home/index.js","routes/index.js","Components/Main/index.js","img/logo-partners.png","Components/Footer/index.js","Components/Login/index.js","img/home.png","i18n.js","App.js","serviceWorker.js","index.js"],"names":["initialState","aadResponse","combineReducers","aadLoginReducer","state","action","type","payload","middleware","routerMiddleware","createBrowserHistory","thunkMiddleware","store","createStore","auth","applyMiddleware","lngs","en","nativeName","flag","fr","Header","authenticationState","login","logout","account","useTranslation","t","i18n","Navbar","collapseOnSelect","expand","bg","variant","className","Brand","href","target","rel","Image","src","fedeWorld","title","fluid","style","height","Toggle","Collapse","id","Nav","NavDropdown","Object","keys","map","lng","Item","fontWeight","resolvedLanguage","onClick","changeLanguage","margin","AuthenticationState","Authenticated","name","Link","icon","faSignInAlt","faPhoneAlt","faFacebookF","faTwitter","faLinkedinIn","SpinnerFede","spinner","width","alt","Subheader","params","Container","backgroundImage","toUpperCase","BreadcrumbFede","crumbs","Breadcrumb","key","path","length","active","Error404","Helmet","titleTemplate","ModalUpdateFede","props","Modal","size","centered","closeButton","Title","Body","Footer","Button","onHide","ModalFede","SidebarRight","sourceType","screenName","options","config","authority","clientId","redirectUri","window","location","origin","validateAuthority","postLogoutRedirectUri","system","cache","cacheLocation","storeAuthStateInCookie","authenticationParameters","scopes","replace","hash","prompt","extraScopesToConsent","extraQueryParameters","domain_hint","loginHint","loginType","LoginType","Redirect","tokenRefreshUri","authProvider","MsalAuthProvider","pedagogieSiteId","getAuthenticatedClient","a","version","getAccessToken","token","client","Client","init","defaultVersion","debugLogging","done","accessToken","getSharepointList","siteId","listId","api","get","response","value","console","error","listEducationSchools","Home","Component","useState","isLoading","setIsLoading","schools","setSchools","categories","setCategories","modalShow","setModalShow","useEffect","educationSchools","res","grouped","reduce","result","currentValue","fields","Category","push","fetchData","marginTop","marginBottom","Row","Col","lg","md","Fragment","show","fontSize","color","backgroundColor","padding","Accordion","cat","Card","as","eventKey","trim","item","Docurl","Main","routes","exact","render","filter","match","includes","rest","param","partners","activeKey","disabled","Date","getFullYear","Login","setValidated","InProgress","event","currentTarget","use","LanguageDetector","initReactI18next","fallbackLng","debug","interpolation","escapeValue","resources","translation","header","language","apps","footer","rules","legal","home","space","update","schoolupdate","index","App","provider","reduxStore","forceLogin","accountInfo","Unauthenticated","Boolean","hostname","ReactDOM","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.4cb32610.chunk.js","sourcesContent":["import { combineReducers } from 'redux';\n\nconst initialState = {\n aadResponse: null,\n };\n \nconst aadLoginReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'AAD_LOGIN_SUCCESS':\n return { ...state, aadResponse: action.payload };\n case 'AAD_LOGOUT_SUCCESS':\n return { ...state, aadResponse: null };\n default:\n return state;\n }\n};\n\n\nexport default combineReducers({ aadLoginReducer });","import { createStore, combineReducers, applyMiddleware } from 'redux'\nimport thunkMiddleware from 'redux-thunk';\nimport { createLogger } from 'redux-logger';\nimport { routerMiddleware } from 'connected-react-router';\nimport auth from './reducers/auth'\nimport { createBrowserHistory } from \"history\";\n\nlet middleware = [ \n routerMiddleware(createBrowserHistory()), \n thunkMiddleware, \n]\n\nif (process.env.NODE_ENV === 'development') {\n middleware = [...middleware, createLogger()];\n}\n\nconst store = createStore(\n combineReducers({\n //router: connectRouter(history),\n auth,\n /* Replace book with the name of the resource type */\n }),\n applyMiddleware(...middleware)\n);\n\nexport default store;","export default __webpack_public_path__ + \"static/media/fede-world.926578ab.png\";","import React from \"react\";\nimport { Navbar, Nav, NavDropdown, Image } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSignInAlt, faPhoneAlt, } from '@fortawesome/free-solid-svg-icons'\nimport { faFacebookF, faTwitter, faLinkedinIn } from \"@fortawesome/free-brands-svg-icons\"\nimport { AuthenticationState } from 'react-aad-msal';\nimport fedeWorld from '../../img/fede-world.png';\nimport FrenchFlag from '../../img/flag-fr.png';\nimport EnglishFlag from '../../img/flag-en.png';\nimport { useTranslation } from 'react-i18next';\n\nconst lngs = {\n en: { nativeName: 'English', flag: EnglishFlag },\n fr: { nativeName: 'French', flag: FrenchFlag }\n};\n\nfunction Header({ authenticationState, login, logout, account }) {\n\n const { t, i18n } = useTranslation();\n\n return (\n <Navbar collapseOnSelect expand=\"lg\" bg=\"dark\" variant=\"dark\">\n <div className=\"container\">\n <Navbar.Brand href=\"https://fede.education\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Image src={fedeWorld} title=\"Logo partners\" fluid style={{height: \"40px\"}} />\n </Navbar.Brand>\n <Navbar.Toggle aria-controls=\"responsive-navbar-nav\" />\n <Navbar.Collapse id=\"responsive-navbar-nav\">\n <Nav className=\"mr-auto\">\n <NavDropdown title={t('header.language')} id=\"collasible-nav-dropdown\">\n {Object.keys(lngs).map((lng) => (\n <NavDropdown.Item key={lng} style={{ fontWeight: i18n.resolvedLanguage === lng ? 'bold' : 'normal' }} type=\"submit\" onClick={() => i18n.changeLanguage(lng)}>\n {/*console.log(lngs[lng])*/}\n <Image src={lngs[lng].flag} title=\"country flag\" fluid style={{height: \"14px\", margin: \"4px\"}} />\n {lngs[lng].nativeName}\n </NavDropdown.Item>\n ))}\n </NavDropdown>\n {/*<NavDropdown title=\"Français\" id=\"collasible-nav-dropdown\">\n <NavDropdown.Item href=\"#\"><img src={frFlag} alt=\"Français\" /> Français</NavDropdown.Item>\n <NavDropdown.Item href=\"#\"><img src={enFlag} alt=\"English\" /> English</NavDropdown.Item>\n </NavDropdown>*/}\n </Nav>\n\n <Nav>\n {\n authenticationState === AuthenticationState.Authenticated ? \n (\n <NavDropdown title={account.account.name} id=\"collasible-nav-dropdown\">\n {/*<NavDropdown.Item href=\"https://account.activedirectory.windowsazure.com/\">{t('header.apps')}</NavDropdown.Item>\n <NavDropdown.Divider />*/}\n <NavDropdown.Item href=\"#\" onClick={logout}>{t('header.logout')}</NavDropdown.Item>\n </NavDropdown>\n\n ) : (\n <Nav.Link href=\"#\" onClick={login}>\n <span>\n <FontAwesomeIcon icon={faSignInAlt} /> {t('header.login')}\n </span>\n </Nav.Link>\n )\n }\n <Nav.Link \n href=\"https://www.fede.education/contact/\" \n target=\"_blank\"\n >\n <span>\n <FontAwesomeIcon icon={faPhoneAlt} /> Contact\n </span>\n </Nav.Link>\n <Nav.Link \n href=\"https://www.facebook.com/fede.education\" \n target=\"_blank\"\n >\n <FontAwesomeIcon icon={faFacebookF} />\n </Nav.Link>\n <Nav.Link \n href=\"https://twitter.com/FEDE_OING\" \n target=\"_blank\"\n >\n <FontAwesomeIcon icon={faTwitter} />\n </Nav.Link>\n <Nav.Link \n href=\"https://www.linkedin.com/school/federation-for-education-in-europe/\" \n target=\"_blank\"\n >\n <FontAwesomeIcon icon={faLinkedinIn} />\n </Nav.Link>\n </Nav>\n </Navbar.Collapse>\n </div>\n </Navbar>\n );\n}\n \nexport default Header;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAIAAADgcHrrAAABVUlEQVR4AZ1SA6xdQRCd2EntNn5xrVgvqG3b7rdt27Zt27Ztm/NPvlXezOyOcfYSS0gw88gIHzpkTqSyQK6unbxvHwjCshEBmZr+Y2fPTvv40IBzAQuFXFaG5O/fk4lkQba2tbx3LwjCguXLyxD+JMoPH/LEhL9/PhFpi7yPb376duDOHZ6eTkxs2btXTksrqWXXLhAEqMFSNl2nT3NgIDMSbYkeEbqj2DpfSUn/QlpRevO6ivM5t4jxjY1xRcU6at66FbTR3hAWlu3qSkw0S1T/1xRN5EX032n/N+QyJNgYe2N7YAAkFiABNswMnIAWMFuBhEjmw4fwdb51D7C64gWhFNElysrqxwtWX7kSf+3O9fOqKAYSEXFO2LYNBGHBcvOmQXV1Y7qGhotA8PXiM8KfUnrsmOlrpe3bn6H7Ar1/b+K3dSsIwrIRAWpqdp42NkpHjswBv6pHgBoqr2IAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAIAAADgcHrrAAAAXElEQVR4Ad3NtRGAUAAE0UWqphUa/Jri7m4pby7dOR9CSCGBlF5dB+w4Dls+pP0ySHmn7rOkbySvmeXtNTtl3/0+SyDlNdPPhxjSfjE9a+19Y1ZvST8ApdR9pqAB3d0pO7qOCbAAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/spinner-fede.fdbcbf57.gif\";","export default __webpack_public_path__ + \"static/media/interculturalite.cd1bad85.jpg\";","import React, { useState } from 'react';\nimport spinner from '../../img/spinner-fede.gif'\nimport { Container, Breadcrumb, Modal, Button, Form } from 'react-bootstrap';\nimport { TwitterTimelineEmbed } from 'react-twitter-embed';\nimport schoolLogo from '../../img/generic-school-logo.png';\nimport interLogo from '../../img/interculturalite.jpg';\n//import bannerPeps from '../../img/banner-peps_fr.gif';\nimport { Helmet } from 'react-helmet'\n\nconst SpinnerFede = () => {\n return (\n <div id=\"spinner\">\n <img src={spinner} width=\"100\" alt=\"Spinner\" /><span className=\"sr-only\">Loading...</span>\n </div>\n )\n}\n\nconst Subheader = ({ params }) => {\n \n return (\n <Container fluid id={ params.bg } className=\"subheader d-none d-sm-block\" style={{ backgroundImage: \"url('/img/bg-login.jpg')\" }}>\n <h1 className=\"text-center\">{ params.title.toUpperCase() }</h1>\n </Container>\n )\n}\n\nconst BreadcrumbFede = ({ crumbs }) => {\n\n return (\n <Container fluid id=\"breadcrumb\" className=\"shadow-sm p-3 mb-5 bg-white rounded d-none d-sm-block\">\n <Container>\n <Breadcrumb>\n <Breadcrumb.Item href=\"https://www.fede.education/\">FEDEration for European Education</Breadcrumb.Item>\n {crumbs.map(({ name, path }, key) =>\n key + 1 === crumbs.length ? (\n <Breadcrumb.Item key={key} active>\n {name}\n </Breadcrumb.Item>\n ) : (\n <Breadcrumb.Item key={key} href={path}>\n {name}\n </Breadcrumb.Item>\n )\n )}\n </Breadcrumb>\n </Container>\n </Container>\n )\n\n}\n\nconst Error404 = () => {\n return (\n <Container>\n <Helmet\n titleTemplate=\"%s | Intranet FEDE\"\n >\n <title>404</title>\n </Helmet>\n <div className=\"heading_font text-center align-middle error_page\">\n <div className=\"error_404\">404</div>\n <div className=\"h2\">The page you are looking for does not exist.</div>\n </div>\n </Container>\n )\n\n}\n\nconst ModalUpdateFede = (props) => {\n return (\n <Modal\n {...props}\n size=\"lg\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header closeButton>\n <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-danger\">\n 12/03/2025 : Nouveautés / Latest News\n </Modal.Title>\n </Modal.Header>\n <Modal.Body className=\"allModal\">\n\n <span>\n\n Dans le cadre de la rentrée 2025-2026, les équipes de la FEDE vous présentent les nouveautés pédagogiques ainsi que les principes et règles applicables concernant le recours à une IA générative dans le cadre des examens FEDE.\n <br/><br/>\n \n La première session d’examens concernée par ces évolutions est la session de janvier 2026.\n <br/><br/>\n\n <span className=\"secondTitle\">Nouveautés pédagogiques</span>\n <li>Nouveaux diplômes</li>\n <li>Mise à jour de référentiels - Unités d’Enseignement D (UE D) et A (UE A)</li>\n <li>Diplômes retirés du catalogue</li>\n <li>Formation de formateur</li>\n <br/>\n\n <span className=\"secondTitle\">Principes et règles d’utilisation de l’IA dans le cadre des examens FEDE</span>\n <li>Rappel des règles de base des examens FEDE</li>\n <li>L’IA et le dossier professionnel : enjeux des règles et bonnes pratiques</li>\n <br/>\n\n Nous vous remercions de consulter les documents synthétiques suivant : \n <br/>\n <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EXC-QTusxVpPjUPjy4frDPwBAHyRhlEW2jqxLA-egDooQw?e=XLYtrg\" target=\"_blank\">FEDE - Nouveautés pédagogiques - 2025-2026</a><br/>\n <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EYVnd7gWgoJGgeSXJoA2AGgBMchN2n0OocLQGwk5XXP0Yg?e=n8pPEs\" target=\"_blank\">FEDE - Règles examens IA - 2025-2026</a><br/>\n\n </span>\n <br/><hr/><br/>\n\n <span>\n\n As we approach the 2025-2026 academic year, the FEDE teams are pleased to introduce the latest educational updates as well as the principles and regulations regarding the use of generative AI in FEDE examinations.\n <br/><br/>\n The first examination session affected by these changes will take place in January 2026.\n <br/><br/> \n\n <span className=\"secondTitle\">FEDE educational updates</span>\n <li>New degrees</li>\n <li>Update of syllabi – teaching units D (TU D) and A (TU A)</li>\n <li>Degrees removed from the catalogue</li>\n <li>Trainer training</li>\n <br/>\n\n <span className=\"secondTitle\">Principles and rules for AI use in FEDE examinations</span>\n <li>Reminder of the basic rules for FEDE examinations</li>\n <li>AI and the professional report: key issues, regulations, and best practices</li>\n <br/>\n\n Please consult the following summary document :<br/>\n <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EUd5aA72ZIZFiensOpnXWhQB2xTHUGy_4WU4m3k1R3ggLA?e=HgUZpQ\" target=\"_blank\">FEDE - Educational News - 2025-2026</a><br/>\n <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EdcBH439l0hDtACJTGEwhMgBPObCbrQvQaPW6ZxzlgLK8Q?e=jdMT43\" target=\"_blank\">FEDE - Rules Examinations IA - 2025-2026</a><br/>\n\n </span>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={props.onHide} variant=\"fede\">Fermer</Button>\n </Modal.Footer>\n </Modal>\n );\n}\n\nconst ModalFede = (props) => {\n return (\n <Modal\n {...props}\n size=\"sm\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header closeButton>\n <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-danger\">\n Attention\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p className=\"text-justify\">\n Votre compte n'est associé à aucune école.\n Merci de contacter la FEDE à l'adresse <a href=\"mailto:mailbox@fede.education\">mailbox@fede.education</a> pour corriger cela, en indiquant le nom de votre école.\n </p>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={props.onHide} variant=\"fede\">Fermer</Button>\n </Modal.Footer>\n </Modal>\n );\n}\n\nconst ModalChooseSchoolFede = (props) => {\n console.log(props)\n const [schoolId, setSchoolId] = useState(null);\n const [validated, setValidated] = useState(false);\n \n const handleSubmit = (event) => {\n const form = event.currentTarget;\n \n if (form.checkValidity() === false) {\n \n } \n setValidated(true);\n props.onSchoolSelected(schoolId)\n props.onHide();\n \n event.preventDefault();\n event.stopPropagation();\n }\n\n const handleChange = (event) => {\n setSchoolId(event.target.value)\n event.preventDefault();\n event.stopPropagation();\n }\n\n return (\n <Modal\n {...props}\n aria-labelledby=\"contained-modal-title-vcenter\"\n centered\n >\n <Modal.Header>\n <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-info\">\n Attention\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p className=\"text-justify\">Votre compte est associé à plusieres écoles. Merci de selection quelle école vous souhaitez gerer.</p>\n <Form validated={validated} onSubmit={handleSubmit}>\n <Form.Group controlId=\"selectSchool\">\n <Form.Label>Choisir l'école</Form.Label>\n <Form.Control as=\"select\" onChange={handleChange}>\n <option>Selectionner une école </option>\n {props.schools.map((school, idx) => (\n <option key={idx} value={school.id}>{school.name}</option>\n ))}\n </Form.Control> \n </Form.Group>\n <Button type=\"submit\" variant=\"fede\">Valider</Button>\n </Form>\n </Modal.Body>\n </Modal>\n );\n}\n \nconst SchoolContext = React.createContext(null);\n\nconst SidebarRight = () => {\n return(\n <div>\n <TwitterTimelineEmbed\n sourceType=\"profile\"\n screenName=\"FEDE_OING\"\n options={{height: 500}}\n />\n </div>\n );\n}\n\nconst SidebarLeft = () => {\n return (\n <div>\n <div className=\"shadow p-3 mb-5 bg-white rounded fede-box\"><img src={schoolLogo} className=\"mx-auto d-block\" alt=\"Logo\"/></div>\n {/* <div className=\"shadow mb-5 bg-white rounded\">\n <a href=\"https://peps.fede.education/\" title=\"Programme PEPS\" target=\"_blank\" rel=\"noopener noreferrer\">\n <img src={bannerPeps} className=\"mx-auto d-block img-fluid\" alt=\"Banner Programme Peps\"/>\n </a>\n </div> */}\n </div>\n );\n}\n\nexport {\n SpinnerFede,\n Subheader,\n BreadcrumbFede,\n Error404,\n ModalFede,\n ModalChooseSchoolFede,\n SchoolContext,\n SidebarRight,\n SidebarLeft,\n ModalUpdateFede\n};\n","// authProvider.js\nimport { MsalAuthProvider, LoginType } from 'react-aad-msal';\nimport { Logger, LogLevel } from \"msal\";\n\n// Msal Configurations\nconst config = {\n auth: {\n authority: 'https://login.microsoftonline.com/fede.education',\n clientId: '0fd4db93-fcca-4ccf-806b-38c6961bc1a0',\n redirectUri: window.location.origin,\n validateAuthority: true, \n postLogoutRedirectUri: 'https://www.fede.education/',\n //navigateToLoginRequestUrl: false\n },\n system: {},\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: true\n }\n};\n\nif(process.env.NODE_ENV === 'development') {\n config.system.logger = new Logger(\n (logLevel, message, containsPii) => {\n console.log(\"[MSAL]\", message);\n },\n {\n level: LogLevel.Verbose,\n piiLoggingEnabled: false\n }\n );\n}\n\n// Authentication Parameters\nconst authenticationParameters = {\n scopes: [\n 'https://graph.microsoft.com/.default',\n ],\n state: window.location.href.replace(window.location.hash,\"\"),\n //forceRefresh: true,\n prompt: 'select_account',\n extraScopesToConsent: [],\n extraQueryParameters: {domain_hint: 'fede.education'},\n loginHint: null\n}\n\n// Options\nconst options = {\n loginType: LoginType.Redirect,\n tokenRefreshUri: window.location.origin + '/auth.html'\n}\n\nexport const authProvider = new MsalAuthProvider(config, authenticationParameters, options)","import \"isomorphic-fetch\";\r\nimport { Client } from \"@microsoft/microsoft-graph-client\";\r\nimport { authProvider } from '../provider/authProvider';\r\n\r\n\r\nconst pedagogieSiteId = \"cdefede.sharepoint.com,154568af-45ff-4d4f-982e-f56b26eafd04,e9b45774-b78a-4da1-a710-0adff9161baa\";\r\nconst intranetListId = \"78b5264e-2061-41f1-aca8-16980cdf6155\";\r\nconst pedagogieSiteUrl = \"https://cdefede.sharepoint.com/:b:/r/sites/CommunicationPdagogie/Documents%20partages\";\r\n\r\nconst getAuthenticatedClient = async (version = null) => {\r\n const token = await authProvider.getAccessToken();\r\n\r\n const client = Client.init({\r\n defaultVersion: (version) ? version : \"v1.0\",\r\n debugLogging: false,\r\n authProvider: (done) => {\r\n done(null, token.accessToken);\r\n },\r\n });\r\n \r\n return client;\r\n}\r\n\r\nconst groupSpListByCategories = (list) => {\r\n return list.reduce((result, currentValue) => {\r\n (result[currentValue.fields.Category] = result[currentValue.fields.Category] || []).push(currentValue.fields);\r\n return result;\r\n }, {}); \r\n}\r\n \r\nconst getSharepointList = async () => {\r\n try {\r\n const siteId = pedagogieSiteId;\r\n const listId = intranetListId;\r\n\r\n const client = await getAuthenticatedClient();\r\n\r\n const response = await client.api(`/sites/${siteId}/lists/${listId}/items`)\r\n .expand(\"fields\")\r\n .get();\r\n \r\n return response.value;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nconst path_ext = (absPath) => {\r\n return absPath.replace(pedagogieSiteUrl, \"\").split('?')[0]\r\n}\r\n\r\nconst getSharepointItem = async (absPath) => {\r\n try {\r\n\r\n const siteId = pedagogieSiteId;\r\n const relPath = path_ext(absPath);\r\n\r\n const client = await getAuthenticatedClient();\r\n\r\n const response = await client.api(`/sites/${siteId}/drive/root:/${relPath}`)\r\n .select(\"id\", \"name\", \"webUrl\")\r\n .get();\r\n \r\n return response;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nconst getEducationSchool = async (schoolId) => {\r\n try {\r\n\r\n const client = await getAuthenticatedClient();\r\n \r\n let response = await client.api(`/education/schools/${schoolId}`)\r\n .get();\r\n\r\n return response;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nconst listEducationSchools = async () => {\r\n try {\r\n\r\n const client = await getAuthenticatedClient(\"beta\");\r\n \r\n let response = await client.api(`/education/me/schools`)\r\n .get();\r\n\r\n return response.value;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\n\r\nconst getMe = async () => {\r\n try {\r\n\r\n const client = await getAuthenticatedClient();\r\n \r\n let response = await client.api(`/me`)\r\n .select(\"displayName\", \"givenName\", \"surname\")\r\n .get();\r\n\r\n return response;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\n\r\nconst getUserSchoolsInToken = async () => {\r\n const idToken = await authProvider.getIdToken();\r\n \r\n if(idToken.idToken.claims.hasOwnProperty(\"extn.fedeSchoolGid\")){\r\n return JSON.parse(idToken.idToken.claims[\"extn.fedeSchoolGid\"]);\r\n } \r\n}\r\n\r\nexport {\r\n getSharepointList,\r\n getEducationSchool,\r\n listEducationSchools,\r\n groupSpListByCategories,\r\n getUserSchoolsInToken,\r\n getSharepointItem,\r\n getMe\r\n}","import React, { useState, useEffect } from \"react\";\nimport { Accordion, Card, Button, Container, Row, Col } from 'react-bootstrap';\n//import { authProvider } from '../../provider/authProvider';\nimport { SpinnerFede, SidebarRight, ModalFede, ModalUpdateFede } from '../Common';\n//import { Link } from \"react-router-dom\";\nimport { Helmet } from 'react-helmet'\nimport { getSharepointList, groupSpListByCategories, listEducationSchools } from '../../services/GraphService';\nimport { useTranslation } from 'react-i18next';\n\nfunction Home() {\n const [isLoading, setIsLoading] = useState(true);\n const [schools, setSchools] = useState(null);\n const [categories, setCategories] = useState(null);\n const [modalShow, setModalShow] = useState(false);\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n \n const fetchData = async () => {\n try {\n const educationSchools = await listEducationSchools();\n const res = await getSharepointList();\n const grouped = groupSpListByCategories(res);\n setCategories(grouped);\n setSchools(educationSchools);\n if(!educationSchools || educationSchools.length === 0){\n setModalShow(true);\n }\n setIsLoading(false);\n \n } catch (error) {\n console.error(error);\n }\n\n };\n\n fetchData();\n\n }, []);\n \n return ( \n <Container style={{marginTop: \"20px\", marginBottom: \"200px\"}}>\n <Helmet\n titleTemplate=\"%s | Intranet FEDE\"\n >\n <title>{t('home.index')}</title>\n </Helmet>\n <Row>\n <Col lg={6} md={12}>\n {isLoading && (<SpinnerFede />)}\n {!isLoading && (\n <React.Fragment>\n {!schools && (\n <ModalFede \n show={modalShow}\n onHide={() => setModalShow(false)}\n />\n )}\n {<ModalUpdateFede \n show={modalShow}\n onHide={() => setModalShow(false)}\n />}\n <h2 style={{fontSize: \"1.5rem\", color: \"white\", backgroundColor: \"#86bf57\", padding: \".75rem 1.25rem\"}}>{t('home.space')}</h2>\n {/*<ul style={{padding: \"1.25rem\"}}>\n <li key=\"account\">\n <Link\n key=\"account-link\"\n to={{\n pathname: `/account/${authProvider.account.accountIdentifier}`,\n //search: \"?sort=name\",\n //hash: \"#the-hash\",\n state: { fromDashboard: true }\n }}\n >\n {t('home.update')}\n </Link>\n </li>\n {schools && schools.map((school, idx) => (\n <li key={idx}>\n <Link\n key={idx}\n to={{\n pathname: `/schools/${school.id}`,\n //search: \"?sort=name\",\n //hash: \"#the-hash\",\n state: { fromDashboard: true }\n }}\n >\n {t('home.schoolupdate')} : { school.displayName}\n </Link>\n </li>\n ))}\n </ul>*/}\n {categories && (\n <Accordion>\n {Object.keys(categories).map((cat) => ( \n <Card key={cat}>\n <Card.Header>\n <Accordion.Toggle as={Button} variant=\"link\" eventKey={cat.trim()}>\n {cat}\n </Accordion.Toggle>\n </Card.Header>\n <Accordion.Collapse eventKey={cat.trim()}>\n <Card.Body>\n <ul>\n {categories[cat].map(item => (\n <li key={item.id}>\n <a href={ item.Docurl } title={ item.Title } target=\"_blank\" rel=\"noopener noreferrer\">{ item.Title }</a>\n </li>\n ))}\n </ul>\n </Card.Body>\n </Accordion.Collapse>\n </Card>\n ))}\n </Accordion>\n )}\n </React.Fragment>\n )}\n </Col>\n <Col className=\"d-none d-lg-block\"><SidebarRight /></Col>\n </Row>\n </Container>\n );\n}\n\nexport default Home;","import Home from '../Components/Home';\n//import Account from '../Components/Account';\n//import School from '../Components/School';\n//import Login from '../Components/Login';\n\nexport default [\n { path: \"/\", name: \"Accueil\", Component: Home, bg: \"subheader-bg-hp\" },\n //{ path: \"/account/:accountId\", name: \"Modifier votre profil\", Component: Account, bg: \"subheader-bg-hp\" },\n //{ path: \"/schools/:schoolId\", name: \"Modifier votre école\", Component: School, bg: \"subheader-bg-hp\" }\n];","import React from \"react\";\nimport routes from \"../../routes\";\nimport {\n Switch,\n Route\n} from \"react-router-dom\";\nimport { Subheader, BreadcrumbFede, Error404 } from '../Common';\n\n\nfunction Main() {\n\n return ( \n <div>\n <Switch>\n {routes.map(({ path, name, Component }, key) => (\n <Route\n exact\n path={path}\n key={key}\n render={props => {\n const crumbs = routes\n .filter(({ path }) => props.match.path.includes(path))\n .map(({ path, ...rest }) => ({\n path: Object.keys(props.match.params).length\n ? Object.keys(props.match.params).reduce(\n (path, param) => path.replace(\n `:${param}`, props.match.params[param]\n ), path\n )\n : path,\n ...rest\n }));\n return (\n <React.Fragment>\n <Subheader params={{title: crumbs[crumbs.length - 1].name, bg: crumbs[crumbs.length - 1].bg}} /> \n <BreadcrumbFede crumbs={crumbs} />\n <Component {...props} />\n </React.Fragment>\n );\n }}\n />\n ))}\n <Route path=\"*\">\n <Error404 />\n </Route>\n </Switch>\n </div>\n \n );\n}\n\nexport default Main;","export default __webpack_public_path__ + \"static/media/logo-partners.c9f9c8c5.png\";","import React from \"react\";\nimport { Container, Row, Col, Image, Nav } from 'react-bootstrap';\nimport partners from '../../img/logo-partners.png';\nimport { useTranslation } from 'react-i18next';\n\nfunction Footer() {\n\n const { t, i18n } = useTranslation();\n\n return (\n <div id=\"footer\">\n <Container id=\"fede-footer\">\n <Row id=\"partners\">\n <Col className=\"text-center\">\n <Image src={partners} title=\"Logo partners\" fluid />\n </Col>\n </Row>\n <Row>\n <Col></Col>\n <Col></Col>\n <Col></Col>\n <Col></Col>\n </Row>\n </Container>\n <Container fluid className=\"footer-copyright\">\n <Container>\n <Nav\n activeKey=\"/home\"\n //onSelect={(selectedKey) => alert(`selected ${selectedKey}`)}\n > \n <Nav.Item>\n <Nav.Link eventKey=\"disabled\" disabled>Copyright © {new Date().getFullYear()} Fédération Européenne Des Ecoles</Nav.Link>\n </Nav.Item>\n <Nav.Item className=\"d-none d-lg-block\">\n <Nav.Link href=\"https://fede.education/statuts-fede/\" target=\"_blank\">STATUS FEDE</Nav.Link>\n </Nav.Item>\n <Nav.Item className=\"d-none d-lg-block\">\n <Nav.Link href=\"https://fede.education/reglement-interieur/\" target=\"_blank\">{t('footer.rules')}</Nav.Link>\n </Nav.Item>\n <Nav.Item className=\"d-none d-lg-block\">\n <Nav.Link href=\"https://fede.education/faq/\" target=\"_blank\">FAQ</Nav.Link>\n </Nav.Item>\n <Nav.Item className=\"d-none d-lg-block\">\n <Nav.Link href=\"https://fede.education/contact-us/\" target=\"_blank\">CONTACT</Nav.Link>\n </Nav.Item>\n <Nav.Item className=\"d-none d-lg-block\">\n <Nav.Link href=\"https://fede.education/mentions-legales/\" target=\"_blank\">{t('footer.legal')}</Nav.Link>\n </Nav.Item>\n </Nav>\n </Container>\n </Container>\n </div>\n );\n}\n \nexport default Footer;","import React, { useState } from \"react\";\nimport { Container, Col, Row, Image, Card, Button } from 'react-bootstrap';\nimport home from '../../img/home.png';\nimport fedeWorld from '../../img/fede-world.png';\nimport { Helmet } from 'react-helmet'\n//import { authProvider } from '../../provider/authProvider';\nimport { AuthenticationState } from 'react-aad-msal';\n\n \nfunction Login({ login, error, authenticationState }) {\n const [validated, setValidated] = useState(false);\n //const [email, setEmail] = useState(\"\");\n \n\n\n const handleSubmit = (event) => {\n const form = event.currentTarget;\n //console.log(form.checkValidity())\n // if (form.checkValidity() === false) {\n // event.preventDefault();\n // event.stopPropagation();\n // } \n // const authenticationParameters = {...getAuthenticationParameters(), loginHint: email}\n // setAuthenticationParameters(authenticationParameters);\n login();\n \n setValidated(true);\n }\n\n return (\n <Container>\n <Helmet\n titleTemplate=\"%s | Intranet FEDE\"\n >\n <title>Connexion</title>\n </Helmet>\n {authenticationState !== AuthenticationState.InProgress && (\n <React.Fragment>\n <Row>\n <Col><Image className=\"rounded float-left\" src={home} title=\"Home\" style={{ width: \"30px\" }}/><h4>Bienvenue dans votre Espace membre</h4></Col>\n </Row>\n <Row id=\"login\">\n <Col className=\"align-self-center d-none d-sm-none d-md-block\">\n <Image src={fedeWorld} title=\"Logo partners\" fluid />\n </Col>\n <Col className=\"align-self-center\" md={6}>\n <Card>\n <Card.Body>\n {/*<Form noValidate validated={validated} onSubmit={handleSubmit}>\n <Form.Group controlId=\"formEmail\">\n <Form.Label>Email</Form.Label>\n <Form.Control \n type=\"email\" \n placeholder=\"Adresse e-mail\" \n value={email}\n required\n onChange={e => setEmail(e.target.value)}\n />\n <Form.Control.Feedback type=\"invalid\">\n Merci d`entrer une adresse e-mail valide\n </Form.Control.Feedback>\n </Form.Group> \n <Button variant=\"fede\" type=\"submit\">\n Se connecter\n </Button> \n </Form>*/}\n <p className=\"font-weight-bolder text-justify\">Vous devez être identifié pour accéder à cette section.</p>\n <p>\n {error && (\n <p className=\"text-danger\">Vous n'avez pas la permission. Contacter la FEDE pour demander les droits d'accès à l'intranet : <a href=\"mailto:mailbox@fede.education\">mailbox@fede.education</a></p>\n ) }\n </p>\n <Button variant=\"fede\" type=\"submit\" size=\"lg\" onClick={handleSubmit}>\n Se connecter\n </Button>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n </React.Fragment>\n )}\n </Container>\n );\n}\n \nexport default Login;","export default \"data:image/png;base64,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\"","import i18n from 'i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\ni18n\r\n // load translation using http -> see /public/locales\r\n // learn more: https://github.com/i18next/i18next-http-backend\r\n //.use(Backend)\r\n // detect user language\r\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n .use(LanguageDetector)\r\n // pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init({\r\n fallbackLng: 'fr',\r\n debug: true,\r\n\r\n interpolation: {\r\n escapeValue: false, // not needed for react as it escapes by default\r\n },\r\n resources: {\r\n fr: {\r\n translation: {\r\n header: {\r\n language: 'Langues',\r\n apps: 'Applications FEDE',\r\n logout: 'Se deconnecter',\r\n login: 'Se connecter',\r\n },\r\n footer: {\r\n rules: 'REGLEMENT INTERIEUR',\r\n legal: 'MENTION LEGAL'\r\n },\r\n home: {\r\n space: 'ESPACE MEMBRE',\r\n update: 'Modifier votre profil personnel',\r\n schoolupdate: 'Modifier les informations de votre école',\r\n index: 'Accueil'\r\n }\r\n }\r\n },\r\n en: {\r\n translation: {\r\n header: {\r\n language: 'Languages',\r\n apps: 'FEDE Applications',\r\n logout: 'Logout',\r\n login: 'Login',\r\n },\r\n footer: {\r\n rules: 'INTERNAL RULES',\r\n legal: 'LEGAL NOTICE'\r\n },\r\n home: {\r\n space: 'MEMBER SPACE',\r\n update: 'Update your profile',\r\n schoolupdate: 'Update school informations',\r\n index: 'Homepage'\r\n }\r\n }\r\n },\r\n }\r\n });\r\n\r\nexport default i18n;","import React from \"react\";\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './App.css';\nimport store from './reduxStore';\nimport Header from './Components/Header';\nimport Main from './Components/Main';\nimport Footer from './Components/Footer';\nimport Login from './Components/Login';\nimport { AzureAD, AuthenticationState } from 'react-aad-msal';\nimport { authProvider } from './provider/authProvider';\nimport {BrowserRouter as Router } from \"react-router-dom\";\nimport './i18n';\n\nfunction App() {\n\n return (\n <AzureAD provider={authProvider} reduxStore={store} forceLogin={true}>\n\n {\n ({login, logout, authenticationState, error, accountInfo}) => {\n switch (authenticationState) {\n case AuthenticationState.Authenticated:\n return (<Router><Header authenticationState={authenticationState} login={login} logout={logout} account={accountInfo} /><Main /><Footer /></Router>);\n case AuthenticationState.Unauthenticated:\n return (\n <Router>\n <Header authenticationState={authenticationState} login={login} logout={logout} account={accountInfo} />\n <Login login={login} error={error} authenticationState={authenticationState} />\n <Footer />\n </Router>\n );\n // case AuthenticationState.InProgress:\n // return (<p>Authenticating...</p>);\n }\n }\n }\n </AzureAD>\n );\n}\n\n \nexport default App;\n \n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import 'react-app-polyfill/ie9';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n';\n\nReactDOM.render(\n\n <App /> \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}