From 47643da1ee5b36ff22c0a1e19e8494ede5a93cbe Mon Sep 17 00:00:00 2001
From: 11t518s <11t518s20161759@gmail.com>
Date: Thu, 31 Mar 2022 15:58:23 +0900
Subject: [PATCH] =?UTF-8?q?fix:=20login=20=EC=95=A0=ED=94=8C=20=EC=9E=90?=
=?UTF-8?q?=EB=8F=99=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=B0=8F=20=EB=A1=9C?=
=?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?=
=?UTF-8?q?=ED=98=84=20#70?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
App.tsx | 6 ++++-
.../CheckListComponent/CheckListImage.tsx | 4 ++--
components/Login/AppleLoginBtn.tsx | 24 +++++++++++++++----
components/Login/KakaoLoginBtn.tsx | 4 ++--
.../ProfileSettingComponent.tsx | 17 ++++++++++---
navigation/Main/RootNav.tsx | 10 +++++---
.../StackNavigationOfCheckList.tsx | 12 +++++++---
screens/ProfileSetting/ProfileSetting.tsx | 10 +++++---
8 files changed, 66 insertions(+), 21 deletions(-)
diff --git a/App.tsx b/App.tsx
index 8150036..c2cc5b5 100644
--- a/App.tsx
+++ b/App.tsx
@@ -37,7 +37,11 @@ function App() {
- {isLogin ? : }
+ {isLogin ? (
+
+ ) : (
+
+ )}
diff --git a/components/CheckListComponent/CheckListImage.tsx b/components/CheckListComponent/CheckListImage.tsx
index 4899f4e..73e73e4 100644
--- a/components/CheckListComponent/CheckListImage.tsx
+++ b/components/CheckListComponent/CheckListImage.tsx
@@ -12,13 +12,12 @@ interface IProps {
checkList: answerButtonType[];
setModal?: Dispatch>;
modal?: boolean;
- order: number;
+ order: number | undefined;
}
const windowWidth = Dimensions.get('window').width;
function CheckListImage({ checkList, setModal, modal, order }: IProps) {
const checkListContext = useContext(checkListCtx);
- const [index, setIndex] = useState(0);
const isCarousel = useRef(null);
const mainImageHandler = async (item: answerButtonType) => {
@@ -62,6 +61,7 @@ function CheckListImage({ checkList, setModal, modal, order }: IProps) {
item.toString()}
firstItem={order}
ref={isCarousel}
data={checkList}
diff --git a/components/Login/AppleLoginBtn.tsx b/components/Login/AppleLoginBtn.tsx
index d6cade7..688510e 100644
--- a/components/Login/AppleLoginBtn.tsx
+++ b/components/Login/AppleLoginBtn.tsx
@@ -7,6 +7,7 @@ import styles from '../../screens/Landing/styles';
import jwtDecode from 'jwt-decode';
import axios from 'axios';
import { API_HOST } from '../../constant';
+import { setAccessToken, setAuthTokens } from 'react-native-axios-jwt';
interface tokenType {
aud: string;
@@ -25,6 +26,24 @@ interface tokenType {
const AppleLoginBtn = ({ setIsLogin }: any) => {
const onAppleLoginHandler = async () => {
+ const onLoginSuccess = (res: any) => {
+ const res_data = res.data.data;
+ let accessToken: string = '';
+ if (Object.keys(res_data).includes('token')) {
+ // 재접속
+ accessToken = res_data.token;
+ setAccessToken(accessToken);
+ } else {
+ // 처음 호출
+ accessToken = res_data.accessToken;
+ setAuthTokens({
+ accessToken: accessToken,
+ refreshToken: res_data.refreshToken,
+ });
+ }
+ axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;
+ setIsLogin(true);
+ };
try {
// performs login request
const appleAuthRequestResponse = await appleAuth.performRequest({
@@ -48,10 +67,7 @@ const AppleLoginBtn = ({ setIsLogin }: any) => {
email: decodedToken.email,
user: user,
})
- .then((res) => {
- axios.defaults.headers.common['Authorization'] = `Bearer ${res.data.data.accessToken}`;
- setIsLogin(true);
- })
+ .then(onLoginSuccess)
.catch((e) => {
console.log(e);
});
diff --git a/components/Login/KakaoLoginBtn.tsx b/components/Login/KakaoLoginBtn.tsx
index 5741fd9..2aa6429 100644
--- a/components/Login/KakaoLoginBtn.tsx
+++ b/components/Login/KakaoLoginBtn.tsx
@@ -58,9 +58,9 @@ const KakaoLoginBtn = ({ setIsLogin }: Props) => {
}
axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;
setIsLogin(true);
- const refreshToken = getRefreshToken().then((refreshToken) => console.log(refreshToken));
+ // const refreshToken = getRefreshToken().then((refreshToken) => console.log(refreshToken));
// accessToken 만료하기 1분 전에 로그인 연장
- setTimeout(() => requestRefresh(refreshToken), acessTokenExpiresIn - 60000);
+ // setTimeout(() => requestRefresh(refreshToken), acessTokenExpiresIn - 60000);
};
const catchError = (err: any) => {
diff --git a/components/ProfileSetting/ProfileSettingComponent.tsx b/components/ProfileSetting/ProfileSettingComponent.tsx
index 754e9d3..2f44733 100644
--- a/components/ProfileSetting/ProfileSettingComponent.tsx
+++ b/components/ProfileSetting/ProfileSettingComponent.tsx
@@ -1,9 +1,17 @@
-import React from 'react';
+import React, { Dispatch, SetStateAction } from 'react';
import { View, Image, Pressable, Linking, ScrollView } from 'react-native';
import { DefaultText } from '../../CustomText';
import styles from './styles';
+import { clearAuthTokens } from 'react-native-axios-jwt';
+interface IProps {
+ setIsLogin: Dispatch>;
+}
-function ProfileSettingComponent() {
+function ProfileSettingComponent({ setIsLogin }: IProps) {
+ const onLogoutHandler = () => {
+ clearAuthTokens();
+ setIsLogin(false);
+ };
return (
<>
@@ -74,7 +82,10 @@ function ProfileSettingComponent() {
버전정보 1.0
-
+
로그아웃
diff --git a/navigation/Main/RootNav.tsx b/navigation/Main/RootNav.tsx
index 2490d14..06f5ef1 100644
--- a/navigation/Main/RootNav.tsx
+++ b/navigation/Main/RootNav.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Dispatch, SetStateAction } from 'react';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import BottomNavigation from './BottomNavigation/BottomNavigation';
@@ -7,10 +7,14 @@ import { RootStackProps } from '../../types/navigationTypes';
const RootNav = createNativeStackNavigator();
-const Root = () => (
+interface IProps {
+ setIsLogin: Dispatch>;
+}
+
+const Root = ({ setIsLogin }: IProps) => (
-
+ } />
);
export default Root;
diff --git a/navigation/Main/StackNavigation/StackNavigationOfCheckList.tsx b/navigation/Main/StackNavigation/StackNavigationOfCheckList.tsx
index 7e05fb0..fc7b545 100644
--- a/navigation/Main/StackNavigation/StackNavigationOfCheckList.tsx
+++ b/navigation/Main/StackNavigation/StackNavigationOfCheckList.tsx
@@ -1,4 +1,4 @@
-import React, { useContext, useState } from 'react';
+import React, { Dispatch, SetStateAction, useContext, useState } from 'react';
import { Image, Pressable, Share } from 'react-native';
import BasicCheckList from './BasicCheckList/BasiclCheckList';
@@ -13,10 +13,16 @@ import {
} from '@react-navigation/native-stack';
import { checkListCtx } from '../../../Context/CheckListByServer';
import axios from 'axios';
+import { useNavigation } from '@react-navigation/native';
const NativeStack = createNativeStackNavigator();
-function CheckListStackNav({ navigation }: CheckListStackProps) {
+interface IProps {
+ setIsLogin: Dispatch>;
+}
+
+function CheckListStackNav({ setIsLogin }: IProps) {
+ const navigation = useNavigation();
const checkListContext = useContext(checkListCtx);
const [isEdit, setIsEdit] = useState(true);
@@ -79,7 +85,7 @@ function CheckListStackNav({ navigation }: CheckListStackProps) {
}
options={() => ({
title: '설정',
headerStyle: { backgroundColor: 'white' },
diff --git a/screens/ProfileSetting/ProfileSetting.tsx b/screens/ProfileSetting/ProfileSetting.tsx
index 6808108..51620bf 100644
--- a/screens/ProfileSetting/ProfileSetting.tsx
+++ b/screens/ProfileSetting/ProfileSetting.tsx
@@ -1,8 +1,12 @@
-import React from 'react';
+import React, { Dispatch, SetStateAction } from 'react';
import ProfileSettingComponent from '../../components/ProfileSetting/ProfileSettingComponent';
-function ProfileSetting() {
- return ;
+interface IProps {
+ setIsLogin: Dispatch>;
+}
+
+function ProfileSetting({ setIsLogin }: IProps) {
+ return ;
}
export default ProfileSetting;