diff --git a/src/App.js b/src/App.js index e07cf1f..dec29f6 100644 --- a/src/App.js +++ b/src/App.js @@ -1,13 +1,16 @@ import Test from './components/Test'; +import AuthProvider from './config/authProvider'; import localizationInit from './config/localization'; localizationInit(); function App() { return ( -
- -
+ +
+ +
+
); } diff --git a/src/components/Test.js b/src/components/Test.js index 3fbd94e..c87d1dd 100644 --- a/src/components/Test.js +++ b/src/components/Test.js @@ -1,11 +1,39 @@ import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; +import { useAuth } from '../config/authProvider'; export default function Test() { const { t } = useTranslation(); + let auth = useAuth(); + let navigate = useNavigate(); + + if (!auth.user) { + return ( + <> +

You are not logged in.

{' '} + + + ); + } + return ( - <> +

{t('app_title')}

{t('welcome_message')}
- + Welcome {auth.user}!{' '} + +

); } diff --git a/src/config/authProvider.js b/src/config/authProvider.js new file mode 100644 index 0000000..e1024ef --- /dev/null +++ b/src/config/authProvider.js @@ -0,0 +1,28 @@ +import { createContext, useContext, useState } from 'react'; +import authService from '../services/auth.service'; + +let AuthContext = createContext(null); + +export default function AuthProvider({ children }) { + let [user, setUser] = useState(authService.getCurrentUser()); + + let signin = async (loginData, callback) => { + const userData = await authService.login(loginData); + setUser(userData); + callback(); + }; + + let signout = async (callback) => { + await authService.logout(); + setUser(null); + callback(); + }; + + let value = { user, signin, signout }; + + return {children}; +} + +export const useAuth = () => { + return useContext(AuthContext); +}; diff --git a/src/constants/placeholder b/src/constants/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/src/services/auth.service.js b/src/services/auth.service.js new file mode 100644 index 0000000..62833a1 --- /dev/null +++ b/src/services/auth.service.js @@ -0,0 +1,42 @@ +// import axiosInstance from '../config/axios'; +// import urls from '../constants/urls'; + +const authService = { + login(username) { + // return axiosInstance + // .post(urls.auth, { + // username, + // password, + // }) + // .then((response) => { + // if (response.data.accessToken) { + localStorage.setItem('user', username); + // localStorage.setItem('user', JSON.stringify(response.data)); + // localStorage.setItem('token', JSON.stringify(response.data.accessToken)); + // } + + // return response.data; + // }); + return username; + }, + + logout() { + localStorage.removeItem('user'); + localStorage.removeItem('token'); + }, + + // register(username, email, password) { + // return axios.post(API_URL + 'signup', { + // username, + // email, + // password, + // }); + // } + + getCurrentUser() { + return localStorage.getItem('user'); + // return JSON.parse(localStorage.getItem('user')); + }, +}; + +export default authService; diff --git a/src/services/placeholder b/src/services/placeholder deleted file mode 100644 index e69de29..0000000