From d1ddbc573ac465ce90ced3a2ce35153a922365df Mon Sep 17 00:00:00 2001
From: borzechof99 <borzechof99@mi.fu-berlin.de>
Date: Wed, 14 Jul 2021 16:22:46 +0200
Subject: [PATCH] Implemented JWT

---
 admin-frontend/src/App.js                | 16 ++++++++++------
 admin-frontend/src/dataProviderMapper.js | 10 +++++-----
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/admin-frontend/src/App.js b/admin-frontend/src/App.js
index 06d5847..a2ad21b 100644
--- a/admin-frontend/src/App.js
+++ b/admin-frontend/src/App.js
@@ -1,9 +1,11 @@
 import * as React from 'react';
 
-import { Admin, Resource, EditGuesser, ListGuesser } from 'react-admin';
+import { Admin, Resource } from 'react-admin';
 import dataProviderMapper from './dataProviderMapper';
 import TreeMenu from '@bb-tech/ra-treemenu';
 
+import { jwtTokenAuthProvider, fetchJsonWithAuthJWTToken } from 'ra-data-django-rest-framework';
+
 import { SportList, SportEdit, SportCreate } from './sportList';
 import { IncompleteList, IncompleteEdit } from './incompleteList';
 import { QuestionList, QuestionEdit, QuestionCreate } from './questionList';
@@ -11,7 +13,7 @@ import { ScraperList } from './scraperList';
 import { orderList } from './questionOrderList';
 import { archiveList } from './archiveList';
 import { criteriaList } from './criteriaList';
-import { GreetingEndList, GreetingEndEdit } from './greetingEndList';
+import { GreetingEndList } from './greetingEndList';
 
 import RestoreFromTrashIcon from '@material-ui/icons/RestoreFromTrash';
 import SportsKabaddiIcon from '@material-ui/icons/SportsKabaddi';
@@ -28,12 +30,9 @@ const App = () => (
     dataProvider={dataProviderMapper} // A custom mapper is used because different resources need different dataProviders
     disableTelemetry
     menu={TreeMenu}
+    authProvider={jwtTokenAuthProvider({ obtainAuthTokenUrl: "http://localhost:8000/api/admin/token/" })}
   >
 
-    <Resource
-      name='sportarten'
-      options={{ "label": "Sportarten", "isMenuParent": true }}
-    />
 
     <Resource
       name='sport'  // name of the API endpoint
@@ -44,6 +43,11 @@ const App = () => (
       create={SportCreate}
     />
 
+    <Resource
+      name='sportarten'
+      options={{ "label": "Sportarten", "isMenuParent": true }}
+    />
+
     <Resource
       name='sport-scraper'
       icon={YoutubeSearchedForIcon}
diff --git a/admin-frontend/src/dataProviderMapper.js b/admin-frontend/src/dataProviderMapper.js
index 8ecf7e9..49cffb6 100644
--- a/admin-frontend/src/dataProviderMapper.js
+++ b/admin-frontend/src/dataProviderMapper.js
@@ -1,4 +1,4 @@
-import drfProvider from 'ra-data-django-rest-framework';
+import drfProvider, { fetchJsonWithAuthJWTToken } from 'ra-data-django-rest-framework';
 import sportIncompleteProvider from './sportIncompleteProvider.js';
 import scraperDataProvider from './scraperDataProvider.js';
 import questionOrderProvider from './questionOrderProvider.js';
@@ -19,19 +19,19 @@ import {
 // Depending on the need, further data providers can be defined and added
 const dataProviders = [
     {
-        dataProvider: drfProvider('http://localhost:8000/api/admin'),
+        dataProvider: drfProvider('http://localhost:8000/api/admin', fetchJsonWithAuthJWTToken),
         resources: ['sport', 'question', 'sport-archive', 'criteria', 'greeting-end'],
     },
     {
-        dataProvider: sportIncompleteProvider('http://localhost:8000/api/admin'),
+        dataProvider: sportIncompleteProvider('http://localhost:8000/api/admin', fetchJsonWithAuthJWTToken),
         resources: ['sport-incomplete'],
     },
     {
-        dataProvider: scraperDataProvider('http://localhost:8000/api/admin'),
+        dataProvider: scraperDataProvider('http://localhost:8000/api/admin', fetchJsonWithAuthJWTToken),
         resources: ['sport-scraper'],
     },
     {
-        dataProvider: questionOrderProvider('http://localhost:8000/api/admin'),
+        dataProvider: questionOrderProvider('http://localhost:8000/api/admin', fetchJsonWithAuthJWTToken),
         resources: ['question-order'],
     }
 ];
-- 
GitLab