Skip to content

Commit bb3475a

Browse files
committed
스프링 시큐리티 수정 (권한 설정)
UserDto에 userType, UserEntity 에 userType 추가
1 parent 4703711 commit bb3475a

File tree

5 files changed

+24
-19
lines changed

5 files changed

+24
-19
lines changed

src/main/java/vigo/com/viewgorithm/user/auth/api/UserController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ public class UserController {
1919
// 로그인 기능
2020
@PostMapping("/login")
2121
public JwtDto signIn(@RequestBody SiginInDto signInDto) {
22+
2223
String username = signInDto.getUserId();
2324
String password = signInDto.getPassword();
2425
JwtDto jwtDto = userService.signIn(username, password);
2526
log.info("request username = {}, password = {}", username, password);
2627
log.info("jwtDto accessToken = {}, refreshToken = {}", jwtDto.getAccessToken(), jwtDto.getRefreshToken());
2728
return jwtDto;
29+
2830
}
2931

3032
@PostMapping("/test")

src/main/java/vigo/com/viewgorithm/user/auth/service/CustomUserDetailsService.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
package vigo.com.viewgorithm.user.auth.service;
2-
32
import lombok.RequiredArgsConstructor;
43
import org.springframework.security.core.userdetails.UserDetails;
54
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -11,23 +10,19 @@
1110
import vigo.com.viewgorithm.user.join.domain.repository.UserRepository;
1211

1312
import java.util.List;
14-
1513
@Service
1614
@RequiredArgsConstructor
1715
public class CustomUserDetailsService implements UserDetailsService {
18-
// 처음에 메소드를 오버라이딩 시키지 않아서 에러가 발생한다.
19-
2016
private final UserRepository userRepository;
2117
private final PasswordEncoder passwordEncoder;
22-
23-
2418
// 데이터 베이스에서 특정 유저를 조회해서 리턴
2519
@Override
2620
public UserDetails loadUserByUsername(String userId) throws UsernameNotFoundException {
2721
return userRepository.findByUserId(userId)
2822
.map(this::createUserDetails)
2923
.orElseThrow(() -> new UsernameNotFoundException("해당하는 회원을 찾을 수 없습니다."));
3024
}
25+
3126
// 해당하는 User 의 데이터가 존재한다면 UserDetails 객체로 만들어서 return
3227
private UserDetails createUserDetails(User user) {
3328
return User.builder()

src/main/java/vigo/com/viewgorithm/user/join/domain/CustomUserDetails.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package vigo.com.viewgorithm.user.join.domain;
22

33
import org.springframework.security.core.GrantedAuthority;
4+
import org.springframework.security.core.authority.SimpleGrantedAuthority;
45
import org.springframework.security.core.userdetails.UserDetails;
56

67
import java.util.ArrayList;
@@ -9,24 +10,27 @@
910
public class CustomUserDetails implements UserDetails {
1011

1112
private final User userEntity;
12-
13+
// 생성자
1314
public CustomUserDetails(User userEntity) {
1415
this.userEntity = userEntity;
1516
}
17+
// getAuthorities = 사용자 권한 반환하는 인터페이스 함수
1618

1719
@Override
1820
public Collection<? extends GrantedAuthority> getAuthorities() {
19-
Collection<GrantedAuthority> collection = new ArrayList<>();
20-
21-
collection.add(new GrantedAuthority() {
22-
@Override
23-
public String getAuthority() {
24-
return userEntity.getName();
25-
}
26-
});
21+
Collection<GrantedAuthority> authorities = new ArrayList<>();
22+
// ArrayList 를 사용하여 권한을 저장하는 collection
2723

28-
29-
return null;
24+
// 사용자 권한 설정
25+
switch (userEntity.getUserType()) {
26+
case "user":
27+
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
28+
break;
29+
case "admin":
30+
authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
31+
break;
32+
}
33+
return authorities;
3034
}
3135

3236
@Override

src/main/java/vigo/com/viewgorithm/user/join/domain/User.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ public class User implements UserDetails {
4040
@Temporal(TemporalType.TIMESTAMP)
4141
private Date createdAt;
4242

43+
@Column(name="user_type")
44+
private String userType;
45+
46+
4347
// @Enumerated(EnumType.STRING)
4448
// private Authority authority;
4549

src/main/resources/data.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ insert into algorithm_category (algorithm_name, category_name)
1010
values ("Quick", "Sort");
1111

1212
-- 로그인 Test (유저 아이디 insert문)
13-
insert into user (birth,created_at ,email,name,password,sex,user_id)
14-
values("1999-08-06",now(),"kuntek1953@naver.com", "이건택", "1111", "M", "kuntek1953");
13+
insert into user (birth,created_at ,email,name,password,sex,user_id, user_type)
14+
values("1999-08-06",now(),"kuntek1953@naver.com", "이건택", "1111", "M", "kuntek1953", "user");
1515

1616

1717

0 commit comments

Comments
 (0)