From 5504bce5f0a9745166321269bae9c3cc57445aa7 Mon Sep 17 00:00:00 2001 From: Taewan Kim Date: Wed, 27 Sep 2023 15:56:25 +0900 Subject: [PATCH] Add Github OAuth feature to backend application Signed-off-by: Taewan Kim --- docker-compose.yml | 19 ++++++++++++++++--- .../java/com/lpvs/auth/OAuthAttributes.java | 9 +++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5945daf1..0888e1c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,20 +10,33 @@ services: ports: - "7896:7896" environment: -# - frontend.main-page.url=http://localhost:3000 -# - cors.allowed-origin=http://localhost:3000 + ## Required if frontend and backend are different + #- frontend.main-page.url=http://localhost:3000 + #- cors.allowed-origin=http://localhost:3000 + ## Database Configuration - spring.datasource.url=jdbc:mysql://mysqldb:3306/lpvs - spring.datasource.username=root - spring.datasource.password= - ## github data + ## Github data for fetching code - github.login= - github.token= - github.api.url=https://api.github.com - github.secret=LPVS + ## Google OAuth Login - spring.security.oauth2.client.registration.google.client-id=GOOGLE_CLIENT_ID - spring.security.oauth2.client.registration.google.client-secret=GOOGLE_CLIENT_SECRET - spring.security.oauth2.client.registration.google.redirect-uri=http://localhost:7896/login/oauth2/code/google - spring.security.oauth2.client.registration.google.scope=profile, email + ## Github OAuth Login + - spring.security.oauth2.client.registration.github.client-id=GITHUB_CLIENT_ID + - spring.security.oauth2.client.registration.github.client-secret=GITHUB_CLIENT_SECRET + - spring.security.oauth2.client.registration.github.redirect-uri=http://localhost:7896/login/oauth2/code/github + - spring.security.oauth2.client.registration.github.scope=user + ## Github Enterprise Configuration if necessary + #- spring.security.oauth2.client.provider.github.authorization-uri=https://HOSTNAME/login/oauth/authorize + #- spring.security.oauth2.client.provider.github.token-uri=https://HOSTNAME/login/oauth/access_token + #- spring.security.oauth2.client.provider.github.user-info-uri=https://HOSTNAME/api/v3/user + depends_on: mysqldb: condition: service_healthy diff --git a/src/main/java/com/lpvs/auth/OAuthAttributes.java b/src/main/java/com/lpvs/auth/OAuthAttributes.java index 7ff09590..9c120fc8 100644 --- a/src/main/java/com/lpvs/auth/OAuthAttributes.java +++ b/src/main/java/com/lpvs/auth/OAuthAttributes.java @@ -36,6 +36,15 @@ public enum OAuthAttributes { memberProfile.setName((String) kakaoProfile.get("nickname")); memberProfile.setEmail((String) kakaoAccount.get("email")); return memberProfile; + }), + + GITHUB("github", (attributes) -> { + MemberProfile memberProfile = new MemberProfile(); + memberProfile.setName((String) attributes.get("name")); + // TODO: The email from Github can be null, so place the login value for a while. + // Changing unique key from the member table is required. + memberProfile.setEmail((String) attributes.get("login")); + return memberProfile; }); private final String registrationId;