diff --git a/package.json b/package.json
index 20b9a5e3295a90964a98092f613016a370776dc5..ced9dca458bb8278f4cbaa884ce86e1675849348 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,7 @@
     "@testing-library/user-event": "^12.1.10",
     "@tinymce/tinymce-react": "^3.12.6",
     "axios": "^0.21.1",
+    "jwt-decode": "^3.1.2",
     "react": "^17.0.2",
     "react-dom": "^17.0.2",
     "react-router-dom": "^5.2.0",
diff --git a/src/App.tsx b/src/App.tsx
index 6b049e5c766e705972d543382a9011289f2ce515..ea280ca675cf325259775f7ef7112fb0e0f7e984 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -2,21 +2,14 @@ import React, { createContext } from 'react'
 import { BrowserRouter } from 'react-router-dom'
 import Layout from './components/Layout/Layout'
 import Routes from './components/Routes/Routes'
-// import { UserContext } from './hooks/userContext'
-// import useFindUser from './hooks/useFindUser'
-interface userContext {
-  user: string
-}
-export const userProfile: userContext = {
-  user: '',
-}
-const UserContext: React.Context<userContext> = createContext(userProfile)
+import { useAuth } from './hooks/useAuth'
+import { UserContext } from './hooks/userContext'
 
-// const { user, setUser, isLoading } = useFindUser()
 function App() {
+  const { user, setUser, loginUser, isLogged } = useAuth()
   return (
     <BrowserRouter>
-      <UserContext.Provider value={userProfile}>
+      <UserContext.Provider value={{ user, setUser, isLogged, loginUser }}>
         <Layout>
           <Routes />
         </Layout>
diff --git a/src/components/Editing/Editing.tsx b/src/components/Editing/Editing.tsx
index ababfcbfbb19ea3f91a20c1758374815d4fd735b..feceb9b27c95d5c0544a6eecd91756e8322f9066 100644
--- a/src/components/Editing/Editing.tsx
+++ b/src/components/Editing/Editing.tsx
@@ -1,17 +1,24 @@
-import React, { useCallback, useEffect, useState } from 'react'
+import React, { useCallback, useContext, useEffect, useState } from 'react'
 import { Editor } from '@tinymce/tinymce-react'
 import DateSelector from '../DateSelector/DateSelector'
 import './editing.scss'
 import { MonthlyNewsService } from '../../services/monthlyNews.service'
+import { UserContext } from '../../hooks/userContext'
+import { MonthlyNews } from '../../models/monthlyNews.model'
 
 const Editing: React.FC = () => {
   const [date, setDate] = useState<Date>(new Date())
   const [header, setHeader] = useState<string>('')
   const [quote, setQuote] = useState<string>('')
-
+  const { user }: any = useContext(UserContext)
   const handleSave = async () => {
     const monthlyNewsService = new MonthlyNewsService()
-    await monthlyNewsService.createMonthlyReport(date, header, quote)
+    await monthlyNewsService.createMonthlyReport(
+      date,
+      header,
+      quote,
+      user.xsrftoken
+    )
   }
   const handleCancel = useCallback(() => {
     setQuote('')
@@ -23,13 +30,21 @@ const Editing: React.FC = () => {
     } else return true
   }
   useEffect(() => {
-    async function authenticate() {
+    async function getCurrentMonthlyNews() {
       const monthlyNewsService = new MonthlyNewsService()
-      const res = await monthlyNewsService.apiAuth()
-      console.log('res', res)
+      const news: MonthlyNews = await monthlyNewsService.getSingleMonthlyReport(
+        date.getFullYear(),
+        date.getMonth(),
+        user.xsrftoken
+      )
+      console.log('news', news)
+      if (news) {
+        setHeader(news.header)
+        setQuote(news.quote)
+      }
     }
-    authenticate()
-  }, [])
+    getCurrentMonthlyNews()
+  }, [date])
 
   return (
     <>
diff --git a/src/components/Login/Login.tsx b/src/components/Login/Login.tsx
index 73e5c9f5c6cc9a3513794c46a3394c9f7a0974a2..6bc50137e01df31f31b8626e097f34d8d74687ab 100644
--- a/src/components/Login/Login.tsx
+++ b/src/components/Login/Login.tsx
@@ -1,15 +1,14 @@
-import React, { useEffect } from 'react'
-import { userProfile } from '../../App'
+import React, { useContext } from 'react'
+import { useAuth } from '../../hooks/useAuth'
+import { UserContext } from '../../hooks/userContext'
+// import { userProfile } from '../../App'
 // import { UserContext } from '../../hooks/userContext'
 const Login: React.FC = () => {
-  //   const [isLogged] = useState<boolean>(false)
+  const { user, setUser, loginUser } = useContext(UserContext)
 
-  useEffect(() => {
-    userProfile.user = 'testUser'
-  }, [])
   return (
     <div className="login">
-      <button>Login</button>
+      <button onClick={loginUser}>Login</button>
     </div>
   )
 }
diff --git a/src/components/Routes/Routes.tsx b/src/components/Routes/Routes.tsx
index 99bb4c66a812ab022b74bcaac295050595082d4b..9cf3a0831f335d4b3473c86d00150160a1f41022 100644
--- a/src/components/Routes/Routes.tsx
+++ b/src/components/Routes/Routes.tsx
@@ -1,14 +1,24 @@
-import React from 'react'
+import React, { useContext } from 'react'
 import { Redirect, Route, Switch } from 'react-router-dom'
+import { UserContext } from '../../hooks/userContext'
 import Editing from '../Editing/Editing'
+import Login from '../Login/Login'
 import Settings from '../Settings/Settings'
 
 const Routes: React.FC = () => {
+  const { isLogged } = useContext(UserContext)
   return (
     <Switch>
-      <Route path="/editing" component={Editing} />
-      <Route path="/settings" component={Settings} />
-      <Redirect path="*" to="/editing" />
+      <Route path="/login" component={Login} />
+      {isLogged ? (
+        <>
+          <Route path="/editing" component={Editing} />
+          <Route path="/settings" component={Settings} />
+          <Redirect path="*" to="/editing" />
+        </>
+      ) : (
+        <Redirect path="*" to="/login" />
+      )}
     </Switch>
   )
 }
diff --git a/src/hooks/useAuth.ts b/src/hooks/useAuth.ts
new file mode 100644
index 0000000000000000000000000000000000000000..38f20c396598955a5b3e138f76c42c454a88fd39
--- /dev/null
+++ b/src/hooks/useAuth.ts
@@ -0,0 +1,36 @@
+import React, { useState, useContext } from 'react'
+import { useHistory } from 'react-router-dom'
+import axios from 'axios'
+import { UserContext } from './userContext'
+import { User } from '../models/user.model'
+
+const _apiUrl: string = 'https://localhost:1443/'
+
+export interface Auth {
+  user: User
+  setUser: React.Dispatch<any>
+  loginUser: () => void
+  error: null
+  isLogged: boolean
+}
+export const useAuth = (): Auth => {
+  const [user, setUser] = useState<any>(null)
+  const [isLogged, setisLogged] = useState(false)
+  const [error, setError] = useState(null)
+
+  //login user
+  const loginUser = async () => {
+    try {
+      await axios.get(`${_apiUrl}OAuth2Login`)
+      const { data } = await axios.get(`${_apiUrl}api/common/WhoAmI`)
+      if (data) {
+        setisLogged(true)
+        console.log(data)
+        setUser(data)
+      }
+    } catch (e) {
+      setError(e)
+    }
+  }
+  return { user, setUser, loginUser, error, isLogged }
+}
diff --git a/src/hooks/userContext.ts b/src/hooks/userContext.ts
new file mode 100644
index 0000000000000000000000000000000000000000..851a020192f33b125dc97afa982b68aa31930988
--- /dev/null
+++ b/src/hooks/userContext.ts
@@ -0,0 +1,11 @@
+import { createContext } from 'react'
+import { User } from '../models/user.model'
+
+export interface UserContextProps {
+  user: User
+  setUser: React.Dispatch<any>
+  loginUser: () => void
+  error: null
+  isLogged: boolean
+}
+export const UserContext = createContext<Partial<UserContextProps>>({})
diff --git a/src/models/monthlyNews.model.ts b/src/models/monthlyNews.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a85ec819beba977b1280c269303a2fd585f6818f
--- /dev/null
+++ b/src/models/monthlyNews.model.ts
@@ -0,0 +1,6 @@
+export interface MonthlyNews {
+  year: number
+  month: number
+  header: string
+  quote: string
+}
diff --git a/src/models/user.model.ts b/src/models/user.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..914cb4cbc59bde1285375e8fc93a3c3e5fbd6500
--- /dev/null
+++ b/src/models/user.model.ts
@@ -0,0 +1,7 @@
+export interface User {
+  displayName: string
+  id: string
+  isAdmin: boolean
+  login: string
+  xsrftoken: string
+}
diff --git a/src/services/monthlyNews.service.ts b/src/services/monthlyNews.service.ts
index dbe964fdcfdf6898672c7c1ef0f2efb41af59678..0c6cbf853993464be7b4b5fb2ab7b6a1cbfcb98b 100644
--- a/src/services/monthlyNews.service.ts
+++ b/src/services/monthlyNews.service.ts
@@ -1,5 +1,5 @@
 import axios from 'axios'
-import https from 'https'
+import { MonthlyNews } from '../models/monthlyNews.model'
 export class MonthlyNewsService {
   private readonly _apiUrl: string
   constructor() {
@@ -14,27 +14,24 @@ export class MonthlyNewsService {
   public createMonthlyReport = async (
     date: Date,
     header: string,
-    quote: string
+    quote: string,
+    token: string
   ): Promise<void> => {
     try {
-      const response = await fetch(
-        'https://localhost:1443/api/admin/monthlyNews',
+      await axios.post(
+        `${this._apiUrl}api/admin/monthlyNews`,
         {
-          method: 'POST',
-          body: JSON.stringify({
-            month: date.getMonth(),
-            year: date.getFullYear(),
-            header: header,
-            quote: quote,
-          }),
+          month: date.getMonth(),
+          year: date.getFullYear(),
+          header: header,
+          quote: quote,
+        },
+        {
+          headers: {
+            'XSRF-TOKEN': token,
+          },
         }
       )
-      if (response.status !== 201) {
-        throw new Error(
-          `Le post n'a pas pu être créé (code ${response.status})`
-        )
-      }
-      console.log('Le post a été créé avec succès')
     } catch (e) {
       console.log(e)
     }
@@ -44,52 +41,23 @@ export class MonthlyNewsService {
    * Gets a quotation and header for selected month
    */
   public getSingleMonthlyReport = async (
-    year: string,
-    month: string
-  ): Promise<any> => {
+    year: number,
+    month: number,
+    token: string
+  ): Promise<MonthlyNews | any> => {
     try {
-      const response = await fetch(
-        'https://localhost:1443/api/admin/monthlyNews',
+      const { data } = await axios.get(
+        `${this._apiUrl}api/admin/monthlyNews/${year}/${month}`,
         {
-          method: 'GET',
-          body: JSON.stringify({
-            year: year,
-            month: month,
-          }),
+          headers: {
+            'XSRF-TOKEN': token,
+          },
         }
       )
-      if (response.status !== 201) {
-        throw new Error(
-          `Erreur lors de la récupération (code ${response.status})`
-        )
-      }
-      return response.json()
-    } catch (e) {
-      console.log(e)
-    }
-  }
-  /**
-   * apiAuth  */
-  public apiAuth = async (): Promise<any> => {
-    try {
-      axios.get(`${this._apiUrl}OAuth2Login`).finally(async () => {
-        const { data } = await axios.get(`${this._apiUrl}api/common/WhoAmI`)
-        console.log(data)
-      })
-    } catch (e) {
-      console.log(e)
-    }
-  }
-
-  /**
-   * getToken
-   */
-  public getToken = async (): Promise<any> => {
-    try {
-      const response = await axios.get(`${this._apiUrl}api/common/WhoAmI`)
-      console.log(response)
+      return data as MonthlyNews
     } catch (e) {
-      console.log(e)
+      console.log('error', e)
+      return
     }
   }
 }
diff --git a/yarn.lock b/yarn.lock
index f58501a2402a43273416a5e090c09f60139d5c84..d88552004718232d3ddf0a3c3d2d1f102076e4c7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7222,6 +7222,11 @@ jsprim@^1.2.2:
     array-includes "^3.1.2"
     object.assign "^4.1.2"
 
+jwt-decode@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59"
+  integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==
+
 killable@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"