diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/majorEvent/model/entity/MajorEvent.java b/src/main/java/com/ComNCheck/ComNCheck/domain/majorEvent/model/entity/MajorEvent.java index 9876800..06fa58c 100644 --- a/src/main/java/com/ComNCheck/ComNCheck/domain/majorEvent/model/entity/MajorEvent.java +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/majorEvent/model/entity/MajorEvent.java @@ -42,7 +42,7 @@ public class MajorEvent { @Column(name = "localtion", nullable = false) private String location; - @Column(name = "notice", nullable = false) + @Column(name = "notice", nullable = false, columnDefinition = "TEXT") private String notice; @Column(name = "google_form_link") diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/member/service/CustomOAuthMemberService.java b/src/main/java/com/ComNCheck/ComNCheck/domain/member/service/CustomOAuthMemberService.java index 612c072..4da58a3 100644 --- a/src/main/java/com/ComNCheck/ComNCheck/domain/member/service/CustomOAuthMemberService.java +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/member/service/CustomOAuthMemberService.java @@ -21,6 +21,9 @@ public class CustomOAuthMemberService extends DefaultOAuth2UserService { private final MemberRepository memberRepository; + private final static String ADMIN_EMAIL_1 = "comncheck0306@gmail.com"; + private final static String ADMIN_EMAIL_2 = "another0306@gmail.com"; + @Override @Transactional public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { @@ -32,16 +35,16 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic //String sub = oAuth2User.getAttribute("sub"); 이메일 변경 여부 따지고 변경될경우 findByEmail 대신 findBySub 사용 String hd = oAuth2User.getAttribute("hd"); - if (!"hufs.ac.kr".equals(hd) && !"comncheck0306@gmail.com".equals(email)) { + if (!isAllowedUser(email, hd)) { OAuth2Error oauth2Error = new OAuth2Error( "invalid_hosted_domain", - "허용되지 않은 호스팅 도메인입니다.", - null + "허용되지 않은 호스팅 도메인 혹은 계정입니다.", + "https://www.comncheck.com/login?error=invalid_domain" ); throw new OAuth2AuthenticationException(oauth2Error, oauth2Error.toString()); } - // 이메일 변경 가능시 sub 변 + // 이메일 변경 가능시 sub 변수 Member member = memberRepository.findByEmail(email).orElseGet(() -> { Member newMember = Member.builder() .email(email) @@ -52,9 +55,18 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic .build(); memberRepository.save(newMember); return newMember; - }); + }); + + return new CustomOAuth2Member(MemberDTO.of(member)); + } - return new CustomOAuth2Member(MemberDTO.of(member)); + private boolean isAllowedUser(String email, String hd) { + if ("hufs.ac.kr".equals(hd) + || ADMIN_EMAIL_1.equals(email) + || ADMIN_EMAIL_2.equals(email)) { + return true; + } + return false; } private String cleanString(String input) { diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/repository/RoleChangeRequestRepository.java b/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/repository/RoleChangeRequestRepository.java index 37de7e4..e18d02f 100644 --- a/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/repository/RoleChangeRequestRepository.java +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/repository/RoleChangeRequestRepository.java @@ -1,7 +1,12 @@ package com.ComNCheck.ComNCheck.domain.roleChange.repository; import com.ComNCheck.ComNCheck.domain.roleChange.model.entity.RoleChange; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; public interface RoleChangeRequestRepository extends JpaRepository { + + @Query("SELECT r FROM RoleChange r ORDER BY r.requestId DESC") + List findAllOrderByIdDesc(); } diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/service/RoleChangeRequestService.java b/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/service/RoleChangeRequestService.java index 9290c00..257e557 100644 --- a/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/service/RoleChangeRequestService.java +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/roleChange/service/RoleChangeRequestService.java @@ -47,7 +47,7 @@ public List getAllRequests(Long memberId) { .orElseThrow(() -> new MemberNotFoundException("등록된 회원이 없습니다.")); isCheckRole(member); - List requests = roleChangeRequestRepository.findAll(); + List requests = roleChangeRequestRepository.findAllOrderByIdDesc(); return requests.stream() .map(RoleChangeListDTO::of) .collect(Collectors.toList()); diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/CustomFailureHandler.java b/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/CustomFailureHandler.java new file mode 100644 index 0000000..602f09c --- /dev/null +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/CustomFailureHandler.java @@ -0,0 +1,24 @@ +package com.ComNCheck.ComNCheck.domain.security.config; + +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; + +public class CustomFailureHandler extends SimpleUrlAuthenticationFailureHandler { + + public CustomFailureHandler(String defaultFailureUrl) { + super(defaultFailureUrl); + } + + @Override + public void onAuthenticationFailure( + HttpServletRequest request, + HttpServletResponse response, + AuthenticationException exception + ) throws IOException, ServletException { + super.onAuthenticationFailure(request, response, exception); + } +} diff --git a/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/SecurityConfig.java b/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/SecurityConfig.java index a63db6a..b894111 100644 --- a/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/SecurityConfig.java +++ b/src/main/java/com/ComNCheck/ComNCheck/domain/security/config/SecurityConfig.java @@ -70,6 +70,9 @@ public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { .userInfoEndpoint(userInfoEndpointConfig -> userInfoEndpointConfig .userService(customOAuth2MemberService)) .successHandler(customSuccessHandler) + .failureHandler(new CustomFailureHandler( + "https://www.comncheck.com/login?error=invalid_domain" + )) ); http.addFilterBefore(new JWTFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);