fix: frontend custom server 삭제, 회원가입 수정
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package org.egovframe.cloud.userservice.api.user.dto;
|
package org.egovframe.cloud.userservice.api.user.dto;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.egovframe.cloud.common.domain.Role;
|
import org.egovframe.cloud.common.domain.Role;
|
||||||
@@ -64,6 +65,11 @@ public class UserJoinRequestDto {
|
|||||||
*/
|
*/
|
||||||
private String token;
|
private String token;
|
||||||
|
|
||||||
|
public Boolean isProvider() {
|
||||||
|
return Objects.nonNull(provider) && !"".equals(provider) & !"undefined".equals(provider)
|
||||||
|
&& Objects.nonNull(token) && !"".equals(token) && !"undefined".equals(token);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UserSaveRequestDto 의 필드 값을 User Entity 빌더를 사용하여 주입 후 User를 리턴한다.
|
* UserSaveRequestDto 의 필드 값을 User Entity 빌더를 사용하여 주입 후 User를 리턴한다.
|
||||||
* UserSaveRequestDto 가 가지고 있는 User 의 필드만 세팅할 수 있게 된다.
|
* UserSaveRequestDto 가 가지고 있는 User 의 필드만 세팅할 수 있게 된다.
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ public class UserService extends AbstractService implements UserDetailsService {
|
|||||||
|
|
||||||
User user = requestDto.toEntity(passwordEncoder);
|
User user = requestDto.toEntity(passwordEncoder);
|
||||||
|
|
||||||
if (requestDto.getProvider() != null && !"".equals(requestDto.getProvider()) && requestDto.getToken() != null && !"".equals(requestDto.getToken())) {
|
if (requestDto.isProvider()) {
|
||||||
SocialUserResponseDto socialUserResponseDto = getSocialUserInfo(requestDto.getProvider(), requestDto.getToken());
|
SocialUserResponseDto socialUserResponseDto = getSocialUserInfo(requestDto.getProvider(), requestDto.getToken());
|
||||||
user.setSocial(requestDto.getProvider(), socialUserResponseDto.getId());
|
user.setSocial(requestDto.getProvider(), socialUserResponseDto.getId());
|
||||||
}
|
}
|
||||||
@@ -329,6 +329,7 @@ public class UserService extends AbstractService implements UserDetailsService {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 사용자 비밀번호 찾기
|
* 사용자 비밀번호 찾기
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const port = process.env.PORT || 3000
|
|||||||
const serverApiUrl = process.env.SERVER_API_URL || 'http://localhost:8000'
|
const serverApiUrl = process.env.SERVER_API_URL || 'http://localhost:8000'
|
||||||
const siteId = process.env.SITE_ID || '3'
|
const siteId = process.env.SITE_ID || '3'
|
||||||
const mode = siteId === '2' ? 'lg' : siteId === '3' ? 'sm' : 'sm'
|
const mode = siteId === '2' ? 'lg' : siteId === '3' ? 'sm' : 'sm'
|
||||||
|
const socialLoginEnabled = process.env.SOCIAL_LOGIN_ENABLED || 'false'
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
i18n,
|
i18n,
|
||||||
@@ -14,6 +15,7 @@ module.exports = {
|
|||||||
MODE: mode,
|
MODE: mode,
|
||||||
SERVER_API_URL: serverApiUrl,
|
SERVER_API_URL: serverApiUrl,
|
||||||
SITE_ID: siteId,
|
SITE_ID: siteId,
|
||||||
|
SOCIAL_LOGIN_ENABLED: socialLoginEnabled,
|
||||||
},
|
},
|
||||||
async rewrites() {
|
async rewrites() {
|
||||||
return [
|
return [
|
||||||
|
|||||||
46
frontend/portal/package-lock.json
generated
46
frontend/portal/package-lock.json
generated
@@ -17,6 +17,7 @@
|
|||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"cookies": "^0.8.0",
|
"cookies": "^0.8.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
"date-fns": "^2.23.0",
|
"date-fns": "^2.23.0",
|
||||||
"date-fns-tz": "^1.1.6",
|
"date-fns-tz": "^1.1.6",
|
||||||
"eventsource": "^1.1.0",
|
"eventsource": "^1.1.0",
|
||||||
@@ -4230,11 +4231,27 @@
|
|||||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/cross-env": {
|
||||||
|
"version": "7.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
|
||||||
|
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
|
||||||
|
"dependencies": {
|
||||||
|
"cross-spawn": "^7.0.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"cross-env": "src/bin/cross-env.js",
|
||||||
|
"cross-env-shell": "src/bin/cross-env-shell.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.14",
|
||||||
|
"npm": ">=6",
|
||||||
|
"yarn": ">=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^3.1.0",
|
"path-key": "^3.1.0",
|
||||||
"shebang-command": "^2.0.0",
|
"shebang-command": "^2.0.0",
|
||||||
@@ -6973,8 +6990,7 @@
|
|||||||
"node_modules/isexe": {
|
"node_modules/isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/istanbul-lib-coverage": {
|
"node_modules/istanbul-lib-coverage": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
@@ -10182,7 +10198,6 @@
|
|||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@@ -11269,7 +11284,6 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"shebang-regex": "^3.0.0"
|
"shebang-regex": "^3.0.0"
|
||||||
},
|
},
|
||||||
@@ -11281,7 +11295,6 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@@ -12566,7 +12579,6 @@
|
|||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
},
|
},
|
||||||
@@ -15965,11 +15977,18 @@
|
|||||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"cross-env": {
|
||||||
|
"version": "7.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
|
||||||
|
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
|
||||||
|
"requires": {
|
||||||
|
"cross-spawn": "^7.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cross-spawn": {
|
"cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"path-key": "^3.1.0",
|
"path-key": "^3.1.0",
|
||||||
"shebang-command": "^2.0.0",
|
"shebang-command": "^2.0.0",
|
||||||
@@ -18023,8 +18042,7 @@
|
|||||||
"isexe": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"istanbul-lib-coverage": {
|
"istanbul-lib-coverage": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
@@ -20488,8 +20506,7 @@
|
|||||||
"path-key": {
|
"path-key": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"path-parse": {
|
"path-parse": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.7",
|
||||||
@@ -21311,7 +21328,6 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"shebang-regex": "^3.0.0"
|
"shebang-regex": "^3.0.0"
|
||||||
}
|
}
|
||||||
@@ -21319,8 +21335,7 @@
|
|||||||
"shebang-regex": {
|
"shebang-regex": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"shell-quote": {
|
"shell-quote": {
|
||||||
"version": "1.7.2",
|
"version": "1.7.2",
|
||||||
@@ -22334,7 +22349,6 @@
|
|||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,24 +7,22 @@
|
|||||||
"npm": "6.14.7"
|
"npm": "6.14.7"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "ts-node --project tsconfig.server.json server/index.ts",
|
"dev": "cross-env next dev -p ${PORT-3000}",
|
||||||
"dev:sm": "SITE_ID=3 npm run dev",
|
"dev:sm": "SITE_ID=3 npm run dev",
|
||||||
"dev:lg": "SITE_ID=2 npm run dev",
|
"dev:lg": "SITE_ID=2 npm run dev",
|
||||||
"dev:smWin": "set SITE_ID=3&&npm run dev",
|
"dev:smWin": "set SITE_ID=3&&npm run dev",
|
||||||
"dev:lgWin": "set SITE_ID=2&&npm run dev",
|
"dev:lgWin": "set SITE_ID=2&&npm run dev",
|
||||||
"build:server": "tsc --project tsconfig.server.json",
|
"build": "NODE_ENV=production next build",
|
||||||
"build:next": "next build",
|
"prebuild": "rimraf ./next",
|
||||||
"prebuild": "rimraf ./build",
|
"build:prodlg": "env-cmd -f ./.env.production-lg npm run build",
|
||||||
"build": "NODE_ENV=production npm run build:next && npm run build:server",
|
"start:prodlg": "env-cmd -f ./.env.production-lg npm run start",
|
||||||
"build:prodlg": "env-cmd -f ./.env.production-lg npm run build:next && npm run build:server",
|
"build:prodsm": "env-cmd -f ./.env.production-sm npm run build",
|
||||||
"start:prodlg": "env-cmd -f ./.env.production-lg node build/index.js",
|
"start:prodsm": "env-cmd -f ./.env.production-sm npm run start",
|
||||||
"build:prodsm": "env-cmd -f ./.env.production-sm npm run build:next && npm run build:server",
|
"build:prodk8slg": "env-cmd -f ./.env.production-k8s-lg npm run build",
|
||||||
"start:prodsm": "env-cmd -f ./.env.production-sm node build/index.js",
|
"start:prodk8slg": "env-cmd -f ./.env.production-k8s-lg npm run start",
|
||||||
"build:prodk8slg": "env-cmd -f ./.env.production-k8s-lg npm run build:next && npm run build:server",
|
"build:prodk8ssm": "env-cmd -f ./.env.production-k8s-sm npm run build",
|
||||||
"start:prodk8slg": "env-cmd -f ./.env.production-k8s-lg node build/index.js",
|
"start:prodk8ssm": "env-cmd -f ./.env.production-k8s-sm npm run start",
|
||||||
"build:prodk8ssm": "env-cmd -f ./.env.production-k8s-sm npm run build:next && npm run build:server",
|
"start": "NODE_ENV=production next start",
|
||||||
"start:prodk8ssm": "env-cmd -f ./.env.production-k8s-sm node build/index.js",
|
|
||||||
"start": "NODE_ENV=production node build/index.js",
|
|
||||||
"test": "jest --coverage"
|
"test": "jest --coverage"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -37,6 +35,7 @@
|
|||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"cookies": "^0.8.0",
|
"cookies": "^0.8.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
"date-fns": "^2.23.0",
|
"date-fns": "^2.23.0",
|
||||||
"date-fns-tz": "^1.1.6",
|
"date-fns-tz": "^1.1.6",
|
||||||
"eventsource": "^1.1.0",
|
"eventsource": "^1.1.0",
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
import { loadEnvConfig } from '@next/env'
|
|
||||||
import cors from 'cors'
|
|
||||||
import express, { Request, Response } from 'express'
|
|
||||||
import next from 'next'
|
|
||||||
loadEnvConfig('./', process.env.NODE_ENV !== 'production')
|
|
||||||
|
|
||||||
const port = process.env.PORT || 3000
|
|
||||||
const dev = process.env.NODE_ENV !== 'production'
|
|
||||||
const app = next({ dev })
|
|
||||||
const handle = app.getRequestHandler()
|
|
||||||
|
|
||||||
const startServer = async () => {
|
|
||||||
try {
|
|
||||||
await app.prepare()
|
|
||||||
const server = express()
|
|
||||||
server.use(cors())
|
|
||||||
server.all('*', (req: Request, res: Response) => {
|
|
||||||
return handle(req, res)
|
|
||||||
})
|
|
||||||
|
|
||||||
server.listen(port, (err?: any) => {
|
|
||||||
if (err) throw err
|
|
||||||
console.info(`> Ready on localhost:${port} - env ${process.env.NODE_ENV}`)
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
process.exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
startServer()
|
|
||||||
@@ -21,3 +21,5 @@ export const GOOGLE_CLIENT_ID = process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID
|
|||||||
export const KAKAO_JAVASCRIPT_KEY = process.env.NEXT_PUBLIC_KAKAO_JAVASCRIPT_KEY
|
export const KAKAO_JAVASCRIPT_KEY = process.env.NEXT_PUBLIC_KAKAO_JAVASCRIPT_KEY
|
||||||
export const NAVER_CLIENT_ID = process.env.NEXT_PUBLIC_NAVER_CLIENT_ID
|
export const NAVER_CLIENT_ID = process.env.NEXT_PUBLIC_NAVER_CLIENT_ID
|
||||||
export const NAVER_CALLBACK_URL = process.env.NEXT_PUBLIC_NAVER_CALLBACK_URL
|
export const NAVER_CALLBACK_URL = process.env.NEXT_PUBLIC_NAVER_CALLBACK_URL
|
||||||
|
|
||||||
|
export const SOCIAL_LOGIN_ENABLED = process.env.SOCIAL_LOGIN_ENABLED
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import { makeStyles, Theme } from '@material-ui/core/styles'
|
|||||||
import Alert from '@material-ui/lab/Alert'
|
import Alert from '@material-ui/lab/Alert'
|
||||||
import { ISocialUser, userService } from '@service'
|
import { ISocialUser, userService } from '@service'
|
||||||
import { format, isValidPassword } from '@utils'
|
import { format, isValidPassword } from '@utils'
|
||||||
|
import { GetServerSideProps } from 'next'
|
||||||
import { useRouter } from 'next/router'
|
import { useRouter } from 'next/router'
|
||||||
import React, { createRef, useEffect, useState } from 'react'
|
import React, { createRef, useEffect, useState } from 'react'
|
||||||
import { Controller, useForm } from 'react-hook-form'
|
import { Controller, useForm } from 'react-hook-form'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { GetServerSideProps } from 'next'
|
|
||||||
|
|
||||||
const useStyles = makeStyles((theme: Theme) => ({
|
const useStyles = makeStyles((theme: Theme) => ({
|
||||||
alert: {
|
alert: {
|
||||||
@@ -81,7 +81,6 @@ const Form = (props: FormProps) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (socialUser) {
|
if (socialUser) {
|
||||||
if (socialUser.name) {
|
if (socialUser.name) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [socialUser])
|
}, [socialUser])
|
||||||
@@ -175,7 +174,9 @@ const Form = (props: FormProps) => {
|
|||||||
<input
|
<input
|
||||||
ref={emailRef}
|
ref={emailRef}
|
||||||
type="text"
|
type="text"
|
||||||
readOnly={/*typeof socialUser.email !== 'undefined' && socialUser.email !== null*/false}
|
readOnly={
|
||||||
|
/*typeof socialUser.email !== 'undefined' && socialUser.email !== null*/ false
|
||||||
|
}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
placeholder={t('user.email')}
|
placeholder={t('user.email')}
|
||||||
@@ -284,7 +285,9 @@ const Form = (props: FormProps) => {
|
|||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
readOnly={/*typeof socialUser.name !== 'undefined' && socialUser.name !== null*/false}
|
readOnly={
|
||||||
|
/*typeof socialUser.name !== 'undefined' && socialUser.name !== null*/ false
|
||||||
|
}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
placeholder={t('label.title.name')}
|
placeholder={t('label.title.name')}
|
||||||
@@ -355,7 +358,7 @@ export const getServerSideProps: GetServerSideProps = async context => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
socialUser
|
socialUser,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,14 @@ import {
|
|||||||
KakaoLoginButton,
|
KakaoLoginButton,
|
||||||
NaverLoginButton,
|
NaverLoginButton,
|
||||||
} from '@components/Buttons'
|
} from '@components/Buttons'
|
||||||
|
import CustomConfirm, { CustomConfirmPrpps } from '@components/CustomConfirm'
|
||||||
import Loader from '@components/Loader'
|
import Loader from '@components/Loader'
|
||||||
|
import {
|
||||||
|
GOOGLE_CLIENT_ID,
|
||||||
|
KAKAO_JAVASCRIPT_KEY,
|
||||||
|
NAVER_CLIENT_ID,
|
||||||
|
SOCIAL_LOGIN_ENABLED,
|
||||||
|
} from '@constants/env'
|
||||||
import useUser from '@hooks/useUser'
|
import useUser from '@hooks/useUser'
|
||||||
import { ILogin, loginSerivce } from '@service'
|
import { ILogin, loginSerivce } from '@service'
|
||||||
import { userAtom } from '@stores'
|
import { userAtom } from '@stores'
|
||||||
@@ -13,7 +20,6 @@ import Router, { useRouter } from 'next/router'
|
|||||||
import React, { useEffect, useState } from 'react'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { useRecoilValue } from 'recoil'
|
import { useRecoilValue } from 'recoil'
|
||||||
import CustomConfirm, { CustomConfirmPrpps } from '@components/CustomConfirm'
|
|
||||||
|
|
||||||
interface AlertProps extends CustomConfirmPrpps {
|
interface AlertProps extends CustomConfirmPrpps {
|
||||||
message: string
|
message: string
|
||||||
@@ -62,7 +68,9 @@ const Login = () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// recoil 쓰려했는데 회원가입에 스탭이 있어서 진행중에 새로고침하면 상태가 삭제되면서 일반회원으로 가입될 수 있어서 소셜 정보를 파라미터로 넘김
|
// recoil 쓰려했는데 회원가입에 스탭이 있어서 진행중에 새로고침하면 상태가 삭제되면서 일반회원으로 가입될 수 있어서 소셜 정보를 파라미터로 넘김
|
||||||
router.push(`/auth/join?provider=${data.provider}&token=${data.token}`)
|
router.push(
|
||||||
|
`/auth/join?provider=${data.provider}&token=${data.token}`,
|
||||||
|
)
|
||||||
},
|
},
|
||||||
handleCancel: () => {
|
handleCancel: () => {
|
||||||
if (data.provider === 'kakao') {
|
if (data.provider === 'kakao') {
|
||||||
@@ -131,16 +139,29 @@ const Login = () => {
|
|||||||
{t('login.password_find')}
|
{t('login.password_find')}
|
||||||
</ActiveLink>
|
</ActiveLink>
|
||||||
</div>
|
</div>
|
||||||
|
{/** 소셜 로그인을 사용하는 경우 enabled 됨. */}
|
||||||
|
{SOCIAL_LOGIN_ENABLED === 'true' && (
|
||||||
<article>
|
<article>
|
||||||
<h3>
|
<h3>
|
||||||
<span>{t('label.title.login.oauth')}</span>
|
<span>{t('label.title.login.oauth')}</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div>
|
<div>
|
||||||
<KakaoLoginButton handleClick={handleKakaoLogin} kakaoLoginMode={kakaoLoginMode} setKakaoLoginMode={setKakaoLoginMode} />
|
{KAKAO_JAVASCRIPT_KEY && (
|
||||||
|
<KakaoLoginButton
|
||||||
|
handleClick={handleKakaoLogin}
|
||||||
|
kakaoLoginMode={kakaoLoginMode}
|
||||||
|
setKakaoLoginMode={setKakaoLoginMode}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{NAVER_CLIENT_ID && (
|
||||||
<NaverLoginButton handleClick={handleNaverLogin} />
|
<NaverLoginButton handleClick={handleNaverLogin} />
|
||||||
|
)}
|
||||||
|
{GOOGLE_CLIENT_ID && (
|
||||||
<GoogleLoginButton handleClick={handleGoogleLogin} />
|
<GoogleLoginButton handleClick={handleGoogleLogin} />
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
)}
|
||||||
{customConfirm && (
|
{customConfirm && (
|
||||||
<CustomConfirm
|
<CustomConfirm
|
||||||
handleConfirm={customConfirm.handleConfirm}
|
handleConfirm={customConfirm.handleConfirm}
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "./tsconfig.json", // 기본설정을 포함한다
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs", // commonJs 사용하도록 override
|
|
||||||
"outDir": "build", // 빌드 파일 경로 (production mode)
|
|
||||||
"noEmit": false // 서버에 대한 결과 파일을 내보내지 않음 (production mode)
|
|
||||||
},
|
|
||||||
"include": ["server"] // server/ 디렉토리 아래에 있는 파일만 컴파일 (production mode)
|
|
||||||
}
|
|
||||||
//기본적으로 사용하는 모듈은 esnext인데 express는 commonJs를 사용하므로 module을 override 해 주어야 한다.
|
|
||||||
Reference in New Issue
Block a user