박민정

[feat] Edit nav bar

1 -# https://www.robotstxt.org/robotstxt.html
2 -User-agent: *
3 -Disallow:
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;
1 -// jest-dom adds custom jest matchers for asserting on DOM nodes.
2 -// allows you to do things like:
3 -// expect(element).toHaveTextContent(/react/i)
4 -// learn more: https://github.com/testing-library/jest-dom
5 -import '@testing-library/jest-dom';