Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
@@ -1,7 +1,7 @@
package com.blackcompany.eeos.auth.application.domain.converter;

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.persistence.OAuthMemberEntity;
import com.blackcompany.eeos.auth.persistence.oauth.OAuthMemberEntity;
import com.blackcompany.eeos.common.support.converter.AbstractEntityConverter;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.blackcompany.eeos.auth.application.model;

import com.blackcompany.eeos.auth.persistence.AccountEntity;
import com.blackcompany.eeos.auth.persistence.account.AccountEntity;
import com.blackcompany.eeos.common.support.converter.AbstractEntityConverter;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,9 @@ public class AuthorityModel implements AbstractModel {

private final Long id;
private final Long memberId;
private final String name; // TODO: ROLE enum 으로 변경
private final Role role;

public static AuthorityModel create(Long memberId, Role role) {
return AuthorityModel.builder().role(role).memberId(memberId).build();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.blackcompany.eeos.auth.application.repository;

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.persistence.OAuthMemberEntity;
import com.blackcompany.eeos.auth.persistence.oauth.OAuthMemberEntity;
import java.util.Optional;

public interface OAuthMemberRepository {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.blackcompany.eeos.auth.application.repository;

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.persistence.OAuthInfo;
import com.blackcompany.eeos.auth.persistence.oauth.OAuthInfo;
import java.util.UUID;

public interface OauthVerificationStorage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.blackcompany.eeos.auth.application.domain.TokenModel;
import com.blackcompany.eeos.auth.application.dto.request.OAuthLoginRequestCommand;
import com.blackcompany.eeos.auth.application.model.AuthorityModel;
import com.blackcompany.eeos.auth.application.model.Role;
import com.blackcompany.eeos.auth.application.repository.AuthorityRepository;
import com.blackcompany.eeos.auth.application.support.AuthenticationTokenGenerator;
import com.blackcompany.eeos.auth.application.usecase.LoginUsecase;
Expand All @@ -27,10 +28,7 @@ public TokenModel login(OAuthLoginRequestCommand command) {
oauthClientService.getOauthMember(command.oauthServerType(), command.code(), command.uri());
Long memberId = authService.authenticate(model);

Set<String> authorities =
authorityRepository.findByMemberId(memberId).stream()
.map(AuthorityModel::getName)
.collect(Collectors.toSet());
Set<String> authorities = getRoles(memberId);

return authenticationTokenGenerator.execute(memberId, authorities);
}
Expand All @@ -40,11 +38,15 @@ public TokenModel login(String loginId, String password) {
MemberModel model = authService.authenticate(loginId, password);
Long memberId = model.getMemberId();

Set<String> authorities =
authorityRepository.findByMemberId(memberId).stream()
.map(AuthorityModel::getName)
.collect(Collectors.toSet());
Set<String> authorities = getRoles(memberId);

return authenticationTokenGenerator.execute(memberId, authorities);
}

private Set<String> getRoles(Long memberId) {
return authorityRepository.findByMemberId(memberId).stream()
.map(AuthorityModel::getRole)
.map(Role::getRole)
.collect(Collectors.toSet());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,7 @@ private OauthMemberModel signUpMember(final OauthMemberModel model) {
.build();
MemberModel savedMember = memberRepository.save(member);

AuthorityModel authorityModel =
AuthorityModel.builder().memberId(savedMember.getMemberId()).name(Role.USER.name()).build();

authorityRepository.save(authorityModel);
authorityRepository.save(AuthorityModel.create(savedMember.getMemberId(), Role.USER));

OauthMemberModel updatedModel = model.toBuilder().memberId(savedMember.getId()).build();
return oAuthMemberRepository.save(updatedModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.blackcompany.eeos.auth.application.repository.OAuthMemberRepository;
import com.blackcompany.eeos.auth.application.usecase.LogOutUsecase;
import com.blackcompany.eeos.auth.application.usecase.WithDrawUsecase;
import com.blackcompany.eeos.auth.persistence.AccountJpaRepository;
import com.blackcompany.eeos.auth.persistence.InvalidTokenRepository;
import com.blackcompany.eeos.auth.persistence.account.AccountJpaRepository;
import com.blackcompany.eeos.member.application.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.blackcompany.eeos.auth.application.repository.OauthVerificationStorage;
import com.blackcompany.eeos.auth.application.support.AuthenticationTokenGenerator;
import com.blackcompany.eeos.auth.application.usecase.OAuthSignUpUseCase;
import com.blackcompany.eeos.auth.persistence.OAuthInfo;
import com.blackcompany.eeos.auth.persistence.oauth.OAuthInfo;
import com.blackcompany.eeos.member.application.model.ActiveStatus;
import com.blackcompany.eeos.member.application.model.MemberModel;
import com.blackcompany.eeos.member.application.repository.MemberRepository;
Expand Down Expand Up @@ -42,7 +42,7 @@ public TokenModel signUp(AdditionalInfoApplicationCommand command) {
MemberModel savedMember = memberRepository.save(memberModel);

saveOAuth(oAuthInfo.getOauthId(), savedMember.getMemberId());
saveAuthority(savedMember.getMemberId(), "ROLE_" + Role.USER.getRole());
saveAuthority(savedMember.getMemberId(), Role.USER);

// TODO: 일반 USER 권한인지 아닌지 계산해주는 도구 추가

Expand All @@ -56,8 +56,8 @@ private void saveOAuth(String oAuthId, Long memberId) {
oAuthMemberRepository.save(oauthMemberModel);
}

private void saveAuthority(Long memberId, String role) {
AuthorityModel authorityModel = AuthorityModel.builder().memberId(memberId).name(role).build();
private void saveAuthority(Long memberId, Role role) {
AuthorityModel authorityModel = AuthorityModel.builder().memberId(memberId).role(role).build();

authorityRepository.save(authorityModel);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.account;

import com.blackcompany.eeos.common.persistence.BaseEntity;
import jakarta.persistence.Column;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.account;

import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.account;

import com.blackcompany.eeos.auth.application.exception.NotFoundAccountException;
import com.blackcompany.eeos.auth.application.model.AccountModel;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.authority;

import com.blackcompany.eeos.auth.application.model.Role;
import com.blackcompany.eeos.common.persistence.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
Expand Down Expand Up @@ -35,6 +38,7 @@ public class AuthorityEntity extends BaseEntity {
@Column(nullable = false, name = NAME + "_member_id")
private Long memberId;

@Enumerated(EnumType.STRING)
@Column(nullable = false, name = NAME + "_role")
private String role;
private Role role;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.authority;

import java.util.Set;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.authority;

import com.blackcompany.eeos.auth.application.model.AuthorityModel;
import com.blackcompany.eeos.auth.application.repository.AuthorityRepository;
Expand Down Expand Up @@ -26,14 +26,14 @@ public Long save(AuthorityModel authorityModel) {
}

private AuthorityEntity toEntity(AuthorityModel model) {
return AuthorityEntity.builder().memberId(model.getMemberId()).role(model.getName()).build();
return AuthorityEntity.builder().memberId(model.getMemberId()).role(model.getRole()).build();
}

private AuthorityModel toModel(AuthorityEntity entity) {
return AuthorityModel.builder()
.id(entity.getId())
.memberId(entity.getMemberId())
.name(entity.getRole())
.role(entity.getRole())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.oauth;

import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.oauth;

import com.blackcompany.eeos.auth.application.domain.OauthServerType;
import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.oauth;

import com.blackcompany.eeos.common.persistence.BaseEntity;
import jakarta.persistence.Column;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.oauth;

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.application.domain.converter.OauthMemberEntityConverter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blackcompany.eeos.auth.persistence;
package com.blackcompany.eeos.auth.persistence.oauth;

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.application.repository.OauthVerificationStorage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ SecurityFilterChain nonAuthenticated(HttpSecurity httpSecurity) throws Exception
httpSecurity.securityMatchers(
(matcher) -> {
matcher
.requestMatchers(HttpMethod.OPTIONS, "/**") // CORS Preflight 매칭
.requestMatchers("/api/auth/logout")
.requestMatchers("/api/auth/login/additional-info")
.requestMatchers(HttpMethod.POST, "/api/auth/login/**")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import com.blackcompany.eeos.auth.application.model.Role;
import com.blackcompany.eeos.auth.application.repository.AuthorityRepository;
import com.blackcompany.eeos.auth.application.repository.OAuthMemberRepository;
import com.blackcompany.eeos.auth.persistence.AccountEntity;
import com.blackcompany.eeos.auth.persistence.AccountJpaRepository;
import com.blackcompany.eeos.auth.persistence.account.AccountEntity;
import com.blackcompany.eeos.auth.persistence.account.AccountJpaRepository;
import com.blackcompany.eeos.member.application.model.AdminInfo;
import com.blackcompany.eeos.member.application.model.MemberModel;
import com.blackcompany.eeos.member.application.repository.MemberRepository;
Expand Down Expand Up @@ -45,7 +45,7 @@ public Long create() {
MemberModel savedMember = memberRepository.save(createMember());

saveAccount(accountEntityConverter.toEntity(createAccount(savedMember.getId())));
saveAuthority(savedMember.getMemberId(), "ROLE_" + Role.ADMIN.getRole());
saveAuthority(savedMember.getMemberId(), Role.ADMIN);

return savedMember.getId();
}
Expand Down Expand Up @@ -79,10 +79,8 @@ private AccountModel createAccount(Long memberId) {
.build();
}

private void saveAuthority(Long memberId, String role) {
AuthorityModel authorityModel = AuthorityModel.builder().memberId(memberId).name(role).build();

authorityRepository.save(authorityModel);
private void saveAuthority(Long memberId, Role role) {
authorityRepository.save(AuthorityModel.create(memberId, role));
}

private boolean findAdminAccount() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.blackcompany.eeos.auth.application.domain.OauthMemberModel;
import com.blackcompany.eeos.auth.application.domain.OauthServerType;
import com.blackcompany.eeos.auth.persistence.OAuthMemberEntity;
import com.blackcompany.eeos.auth.persistence.oauth.OAuthMemberEntity;

public class FakeOauthMember {
public static OauthMemberModel oauthMemberModel(OauthServerType type, Long memberId) {
Expand Down
Loading