Skip to content

Commit

Permalink
feat: 소셜 로그인 시 랜딩할 페이지 결정에 사용할 헤더 추가 (#64)
Browse files Browse the repository at this point in the history
* feat: 랜딩 상태 추가

* feat: oauth2 인증주체에 랜딩상태 필드 추가

* refactor: 미사용 메서드 제거

* feat: 소셜 로그인 응답 헤더에 랜딩상태 추가
  • Loading branch information
uwoobeat authored Feb 12, 2024
1 parent 39ebc9a commit a13d3f4
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

public class SecurityConstant {

public static final String REGISTRATION_REQUIRED_HEADER = "Registration-Required";
public static final String LANDING_STATUS_HEADER = "Landing-Status";
public static final String TOKEN_ROLE_NAME = "role";
public static final String GITHUB_NAME_ATTR_KEY = "id";
public static final String ACCESS_TOKEN_HEADER_PREFIX = "Bearer ";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@ public class CustomOAuth2User extends DefaultOAuth2User {

private final Long memberId;
private final MemberRole memberRole;
private final LandingStatus landingStatus;

public CustomOAuth2User(OAuth2User oAuth2User, Member member) {
super(oAuth2User.getAuthorities(), oAuth2User.getAttributes(), GITHUB_NAME_ATTR_KEY);
this.memberId = member.getId();
this.memberRole = member.getRole();
}

public boolean isGuest() {
return memberRole == MemberRole.GUEST;
this.landingStatus = LandingStatus.of(member);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ public void onAuthenticationSuccess(

CustomOAuth2User oAuth2User = (CustomOAuth2User) authentication.getPrincipal();

// 게스트 유저이면 회원가입 필요하므로 헤더 설정
response.setHeader(REGISTRATION_REQUIRED_HEADER, oAuth2User.isGuest() ? "true" : "false");
// 랜딩 페이지 결정에 필요한 정보를 헤더에 추가
response.setHeader(LANDING_STATUS_HEADER, oAuth2User.getLandingStatus().name());

// 토큰 생성 후 쿠키에 저장
AccessTokenDto accessTokenDto =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.gdschongik.gdsc.global.security;

import com.gdschongik.gdsc.domain.member.domain.Member;
import com.gdschongik.gdsc.domain.member.domain.RequirementStatus;

public enum LandingStatus {
TO_STUDENT_AUTHENTICATION, // 재학생 인증 페이지로 랜딩
TO_REGISTRATION, // 가입신청 페이지로 랜딩
TO_DASHBOARD, // 대시보드로 랜딩
;

public static LandingStatus of(Member member) {
// 아직 재학생 인증을 하지 않았다면 재학생 인증 페이지로 랜딩
if (member.getRequirement().getUnivStatus() == RequirementStatus.PENDING) {
return TO_STUDENT_AUTHENTICATION;
}

// 재학생 인증은 했지만 가입신청을 하지 않았다면 가입신청 페이지로 랜딩
// 가입신청 여부는 학번 존재여부로 판단
if (member.getStudentId() == null) {
return TO_REGISTRATION;
}

// 재학생 인증과 가입신청을 모두 완료했다면 대시보드로 랜딩
return TO_DASHBOARD;
}
}

0 comments on commit a13d3f4

Please sign in to comment.