Showing
8 changed files
with
0 additions
and
157 deletions
We-Shop/client/public/logo192.png
deleted
100644 → 0
5.22 KB
We-Shop/client/public/logo512.png
deleted
100644 → 0
9.44 KB
We-Shop/client/public/robots.txt
deleted
100644 → 0
We-Shop/client/src/App.css
deleted
100644 → 0
1 | -.App { | ||
2 | - text-align: center; | ||
3 | -} | ||
4 | - | ||
5 | -.App-logo { | ||
6 | - height: 40vmin; | ||
7 | - pointer-events: none; | ||
8 | -} | ||
9 | - | ||
10 | -@media (prefers-reduced-motion: no-preference) { | ||
11 | - .App-logo { | ||
12 | - animation: App-logo-spin infinite 20s linear; | ||
13 | - } | ||
14 | -} | ||
15 | - | ||
16 | -.App-header { | ||
17 | - background-color: #282c34; | ||
18 | - min-height: 100vh; | ||
19 | - display: flex; | ||
20 | - flex-direction: column; | ||
21 | - align-items: center; | ||
22 | - justify-content: center; | ||
23 | - font-size: calc(10px + 2vmin); | ||
24 | - color: white; | ||
25 | -} | ||
26 | - | ||
27 | -.App-link { | ||
28 | - color: #61dafb; | ||
29 | -} | ||
30 | - | ||
31 | -@keyframes App-logo-spin { | ||
32 | - from { | ||
33 | - transform: rotate(0deg); | ||
34 | - } | ||
35 | - to { | ||
36 | - transform: rotate(360deg); | ||
37 | - } | ||
38 | -} |
1 | -import axios from 'axios'; | ||
2 | -import { | ||
3 | - LOGIN_USER, | ||
4 | - REGISTER_USER, | ||
5 | - AUTH_USER | ||
6 | -} from './types'; | ||
7 | -export function loginUser(logInfo) { | ||
8 | - const request = axios.post('/api/users/login', logInfo) // logInfo를 post로 전달 | ||
9 | - .then(response => response.data); // 서버에서 받은 데이터를 request에 저장 | ||
10 | - | ||
11 | - return { // return을 통해 Reducer로 보냄 | ||
12 | - // Reducer에서 previousState, action을 이용해 nextState로 만들기 때문 :: (previousState, action) => nextState | ||
13 | - // request를 reducer로 보내는 작업 | ||
14 | - | ||
15 | - // action은 type과 response을 넣어줘야 함 | ||
16 | - type: "LOGIN_USER", | ||
17 | - payload: request // payroad == response | ||
18 | - } | ||
19 | -} | ||
20 | - | ||
21 | -export function RegisterUser(regInfo) { | ||
22 | - const request = axios.post('/api/users/register', regInfo) // logInfo를 post로 전달 | ||
23 | - .then(response => response.data); // 서버에서 받은 데이터를 request에 저장 | ||
24 | - | ||
25 | - return { // return을 통해 Reducer로 보냄. | ||
26 | - // Reducer에서 previousState, action을 이용해 nextState로 만들기 때문 :: (previousState, action) => nextState | ||
27 | - // request를 reducer로 보내는 작업 | ||
28 | - | ||
29 | - // action은 type과 response을 넣어줘야 함 | ||
30 | - type: "REGISTER_USER", | ||
31 | - payload: request // payroad == response | ||
32 | - } | ||
33 | -} | ||
34 | - | ||
35 | -export function auth() { | ||
36 | - const request = axios.get('/api/users/auth') // logInfo를 post로 전달 | ||
37 | - .then(response => response.data); // 서버에서 받은 데이터를 request에 저장 | ||
38 | - | ||
39 | - return { | ||
40 | - | ||
41 | - type: "AUTH_USER", | ||
42 | - payload: request // payroad == response | ||
43 | - } | ||
44 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | -// 사용자의 상태를 보고 | ||
2 | -// 해당 페이지에 들어갈 수 있게 할지 안할지 결정해 줌. hoc 이용. | ||
3 | -import axios from 'axios'; | ||
4 | -import React, {useEffect} from 'react'; | ||
5 | -//import {useEffect} from 'react'; | ||
6 | -import {useDispatch} from 'react-redux'; | ||
7 | -import {auth} from '../_actions/user_action' | ||
8 | - | ||
9 | - | ||
10 | -export default function (SpecificComponent, option, adminRoute = null){ | ||
11 | - // ㄴ option 종류 | ||
12 | - // - null 아무나 출입 가능한 페이지 | ||
13 | - // - true 로그인한 유저만 출입 가능 | ||
14 | - // - false 로그인한 유저 출입 불가능 | ||
15 | - | ||
16 | - function AuthenticationCheck(props) { | ||
17 | - //1. backend에 request를 날려서 사용자의 상태를 확인 | ||
18 | - const dispatch = useDispatch(); // 1-1. dispatch 사용 | ||
19 | - useEffect(() => { | ||
20 | - dispatch(auth()) // 페이지가 이동할 때마다 dispatch가 작동해서 backend에 request를 줌 | ||
21 | - .then(response => { // 받은 response | ||
22 | - console.log(response); | ||
23 | - | ||
24 | - | ||
25 | - // 로그인 안했다면 | ||
26 | - if(!response.payload.isAuth) { | ||
27 | - if(option) { // 만약 위 option이 true이면 (로그인한 유저만 출입 가능한 페이지로 가게 하려면) | ||
28 | - props.history.push('/login'); // 로그인 하게 함 | ||
29 | - } | ||
30 | - } | ||
31 | - | ||
32 | - // 로그인 했다면 | ||
33 | - else { | ||
34 | - if(adminRoute && !response.payload.isAdmin) { // admin만 갈 수 있는 페이지를 admin이 false 사람이 들어가려 한다면 | ||
35 | - props.history.push('/'); // 홈페이지로 돌아가게 함 | ||
36 | - } | ||
37 | - else { | ||
38 | - if(option===false) {// 로그인한 유저가 출입 불가능한 곳을 가려고 한다면 | ||
39 | - props.history.push('/'); // 홈페이지로 돌아가게 함 | ||
40 | - | ||
41 | - } | ||
42 | - } | ||
43 | - } | ||
44 | - }) | ||
45 | - },[]) | ||
46 | - | ||
47 | - return ( | ||
48 | - <SpecificComponent /> | ||
49 | - ) | ||
50 | - | ||
51 | - } | ||
52 | - | ||
53 | - return AuthenticationCheck | ||
54 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | -const reportWebVitals = onPerfEntry => { | ||
2 | - if (onPerfEntry && onPerfEntry instanceof Function) { | ||
3 | - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { | ||
4 | - getCLS(onPerfEntry); | ||
5 | - getFID(onPerfEntry); | ||
6 | - getFCP(onPerfEntry); | ||
7 | - getLCP(onPerfEntry); | ||
8 | - getTTFB(onPerfEntry); | ||
9 | - }); | ||
10 | - } | ||
11 | -}; | ||
12 | - | ||
13 | -export default reportWebVitals; |
We-Shop/client/src/setupTests.js
deleted
100644 → 0
-
Please register or login to post a comment