Skip to content
Merged

Prod #95

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<RoleChange, Long> {

@Query("SELECT r FROM RoleChange r ORDER BY r.requestId DESC")
List<RoleChange> findAllOrderByIdDesc();
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public List<RoleChangeListDTO> getAllRequests(Long memberId) {
.orElseThrow(() -> new MemberNotFoundException("등록된 회원이 없습니다."));
isCheckRole(member);

List<RoleChange> requests = roleChangeRequestRepository.findAll();
List<RoleChange> requests = roleChangeRequestRepository.findAllOrderByIdDesc();
return requests.stream()
.map(RoleChangeListDTO::of)
.collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down