-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3주차 리뷰 부탁드립니다. #11
3주차 리뷰 부탁드립니다. #11
Changes from all commits
59fc4b0
f378597
902b241
151c09c
738e630
00f9bf7
5c5bced
bac16bd
ecc2b94
df53512
707a991
78aefe7
12b277c
1313414
625b5f1
200750f
190efda
ed10a2b
f4fc1a6
53aa90c
4323a97
3afd012
7d19a3d
c2c682d
19f45f4
b3119ca
71d3b73
aca07d4
b1c89a7
fed5ee9
d29f7d3
7b43443
85e85c0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,42 +11,58 @@ | |
# 코드 컨벤션 | ||
|
||
- angular code conventions을 기반으로 커밋 메세지 작성 | ||
- feat : 새로운 기능 추가 | ||
- fix : 버그 수정 | ||
- docs : 문서 변경 | ||
- style : 코드 스타일 변경 (포매팅 수정, 세미콜론 추가 등) | ||
- refactor : 코드 리팩토링 | ||
- test : 테스트 코드 추가, 수정 | ||
- chore : 빌드 프로세스, 도구 설정 변경 등 기타 작업 | ||
- feat : 새로운 기능 추가 | ||
- fix : 버그 수정 | ||
- docs : 문서 변경 | ||
- style : 코드 스타일 변경 (포매팅 수정, 세미콜론 추가 등) | ||
- refactor : 코드 리팩토링 | ||
- test : 테스트 코드 추가, 수정 | ||
- chore : 빌드 프로세스, 도구 설정 변경 등 기타 작업 | ||
|
||
--- | ||
|
||
# 구현 기능 목록 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
|
||
- 인증(김동혁) | ||
- 회원가입 | ||
- google oauth2로 구현 | ||
- 몇 가지 예외처리된 경로를 제외하면 구글 로그인 요구 | ||
- swagger3 | ||
- h2-console | ||
- / | ||
- flow | ||
- 토큰 검증 | ||
- 토큰이 없다면 | ||
- 로그인 | ||
- 가입 정보가 없다면 회원가입 | ||
- 성공시 토큰 생성 및 반환 | ||
- GET Param으로 반환됨 | ||
- 실패시 /error로 이동 | ||
- 토큰이 있다면 | ||
- 토큰 검증 | ||
- 토큰 내부의 정보를 파싱 | ||
- 로그인 | ||
- 코드로 참여 | ||
- 프로젝트(김도헌) | ||
- 프로젝트 리스트 조회 | ||
- 프로젝트 기간 리스트 조회 | ||
- 프로젝트 조회 | ||
- 프로젝트 멤버 조회 | ||
- 프로젝트 생성 | ||
- 프로젝트 설정 수정 | ||
- 프로젝트 삭제 | ||
- 프로젝트 리스트 조회 | ||
- 프로젝트 기간 리스트 조회 | ||
- 프로젝트 조회 | ||
- 프로젝트 멤버 조회 | ||
- 프로젝트 생성 | ||
- 프로젝트 설정 수정 | ||
- 프로젝트 삭제 | ||
- 게스트(권순호) | ||
- 게스트 생성 | ||
- 게스트 수정 | ||
- 게스트 삭제 | ||
- 프로젝트 내 게스트 추가 | ||
- 프로젝트 코드 메일로 전달 | ||
- 게스트 생성 | ||
- 게스트 수정 | ||
- 게스트 삭제 | ||
- 프로젝트 내 게스트 추가 | ||
- 프로젝트 코드 메일로 전달 | ||
- 태스크(조서영) | ||
- 태스크 생성 | ||
- 태스크 삭제 | ||
- 태스크 수정 | ||
- 태스크 생성 | ||
- 태스크 삭제 | ||
- 태스크 수정 | ||
- 이벤트 | ||
- 독려 이메일 전달 | ||
- 각 게스트별 진행도 조회 | ||
- 태스크별 진행도 조회 | ||
- 독려 이메일 전달 | ||
- 각 게스트별 진행도 조회 | ||
- 태스크별 진행도 조회 | ||
- ... |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package com.example.team1_be.DTO; | ||
|
||
public class AttendUrlResponseDTO { | ||
String attendUrl; | ||
|
||
public String getAttendUrl() { | ||
return attendUrl; | ||
} | ||
|
||
public void setAttendUrl(String attendUrl) { | ||
this.attendUrl = attendUrl; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
package com.example.team1_be.DTO; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 자바 패키지 이름 규칙에 따르면 언더스코어(_) 대신 카멜 케이스를 사용하는 것이 좋아요 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 패키지명 수정하겠습니다. |
||
|
||
import com.example.team1_be.entity.UserEntity; | ||
import java.util.Collection; | ||
import java.util.Collections; | ||
import java.util.Map; | ||
import org.springframework.security.core.GrantedAuthority; | ||
import org.springframework.security.core.authority.SimpleGrantedAuthority; | ||
import org.springframework.security.core.userdetails.UserDetails; | ||
import org.springframework.security.oauth2.core.user.OAuth2User; | ||
|
||
public class AuthDTO { | ||
|
||
// OAuth2에서 가져온 유저 정보 | ||
public static class OAuthAttributes { | ||
|
||
private Map<String, Object> attributes; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Map<String, Object>로 두는 것은 좋지 않습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oauth로 부터 .getAttributes()를 받아오기 때문에 데이터 타입을 유지해야 합니다. |
||
private String nameAttributeKey; | ||
private String name; | ||
private String email; | ||
private String picture; | ||
|
||
public OAuthAttributes(Map<String, Object> attributes, String nameAttributeKey, String name, | ||
String email, | ||
String picture) { | ||
this.attributes = attributes; | ||
this.nameAttributeKey = nameAttributeKey; | ||
this.name = name; | ||
this.email = email; | ||
this.picture = picture; | ||
} | ||
|
||
public Map<String, Object> getAttributes() { | ||
return attributes; | ||
} | ||
|
||
public String getNameAttributeKey() { | ||
return nameAttributeKey; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public String getEmail() { | ||
return email; | ||
} | ||
|
||
public String getPicture() { | ||
return picture; | ||
} | ||
|
||
public static OAuthAttributes ofGoogle(String usernameAttributeName, | ||
Map<String, Object> attributes) { | ||
return new OAuthAttributes(attributes, usernameAttributeName, | ||
(String) attributes.get("name"), (String) attributes.get("email"), | ||
(String) attributes.get("picture")); | ||
} | ||
} | ||
|
||
// OAuth2User 반환용 | ||
public record PrincipalDetails( | ||
UserEntity user, | ||
Map<String, Object> attributes, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 여기도 Map<String, Object>가 사용되었네요 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 상동 |
||
String attributeKey) implements OAuth2User, UserDetails { | ||
|
||
public UserEntity getUser() { | ||
return user; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return attributes.get(attributeKey).toString(); | ||
} | ||
|
||
@Override | ||
public Map<String, Object> getAttributes() { | ||
return attributes; | ||
} | ||
|
||
@Override | ||
public Collection<? extends GrantedAuthority> getAuthorities() { | ||
return Collections.singletonList( | ||
new SimpleGrantedAuthority(user.getRole().getKey())); | ||
} | ||
|
||
@Override | ||
public String getPassword() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public String getUsername() { | ||
return user.getRole().getKey(); | ||
} | ||
|
||
@Override | ||
public boolean isAccountNonExpired() { | ||
return true; | ||
} | ||
|
||
@Override | ||
public boolean isAccountNonLocked() { | ||
return true; | ||
} | ||
|
||
@Override | ||
public boolean isCredentialsNonExpired() { | ||
return true; | ||
} | ||
|
||
@Override | ||
public boolean isEnabled() { | ||
return true; | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
package com.example.team1_be.DTO; | ||
|
||
import com.example.team1_be.entity.Guest; | ||
import com.example.team1_be.entity.ProjectOption; | ||
import com.example.team1_be.entity.User; | ||
import com.example.team1_be.util.page.PageParam; | ||
import java.time.LocalDateTime; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class ProjectDTO { | ||
|
||
public static class getList extends PageParam { | ||
|
||
} | ||
|
||
public static class create { | ||
|
||
private String name; | ||
|
||
private Object viewType; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Object 타입보다는 더 구체적인 타입을 사용하는 것이 좋습니다. |
||
|
||
private Integer isDelete; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. isDelete는 boolean 타입을 사용하는 것이 더 적절할 것 같은데 확인 부탁드려요! |
||
|
||
private User user; | ||
|
||
private List<Guest> guests; | ||
|
||
private List<ProjectOption> options; | ||
|
||
private LocalDateTime startDate; | ||
|
||
private LocalDateTime endDate; | ||
|
||
public create() { | ||
} | ||
|
||
public create(String name, Object viewType, Integer isDelete, User user, | ||
LocalDateTime startDate, | ||
LocalDateTime endDate, | ||
List<Guest> guests, | ||
List<ProjectOption> options) { | ||
this.name = name; | ||
this.viewType = viewType; | ||
this.isDelete = isDelete; | ||
this.user = user; | ||
this.startDate = startDate; | ||
this.endDate = endDate; | ||
|
||
if (guests == null) { | ||
this.guests = new ArrayList<>(); | ||
} else { | ||
this.guests = guests; | ||
} | ||
|
||
if (options == null) { | ||
this.options = new ArrayList<>(); | ||
} else { | ||
this.options = options; | ||
} | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public Object getViewType() { | ||
return viewType; | ||
} | ||
|
||
public Integer getIsDelete() { | ||
return isDelete; | ||
} | ||
|
||
public User getUser() { | ||
return user; | ||
} | ||
|
||
public List<Guest> getGuests() { | ||
return guests; | ||
} | ||
|
||
public List<ProjectOption> getOptions() { | ||
return options; | ||
} | ||
|
||
public LocalDateTime getStartDate() { | ||
return startDate; | ||
} | ||
|
||
public LocalDateTime getEndDate() { | ||
return endDate; | ||
} | ||
|
||
} | ||
|
||
public static class update { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 생성 DTO, 수정 DTO가 한 파일 내에 존재하는데 코드가 길어지는 경우 분리해도 괜찮을 것 같아요. |
||
|
||
private String name; | ||
|
||
private Object viewType; | ||
|
||
private User user; | ||
|
||
private List<Guest> guests; | ||
|
||
private List<ProjectOption> options; | ||
|
||
private LocalDateTime startDate; | ||
|
||
private LocalDateTime endDate; | ||
|
||
public update() { | ||
} | ||
|
||
public update(String name, Object viewType, User user, | ||
LocalDateTime startDate, | ||
LocalDateTime endDate, | ||
List<Guest> guests, | ||
List<ProjectOption> options) { | ||
this.name = name; | ||
this.viewType = viewType; | ||
this.user = user; | ||
this.startDate = startDate; | ||
this.endDate = endDate; | ||
|
||
if (guests == null) { | ||
this.guests = new ArrayList<>(); | ||
} else { | ||
this.guests = guests; | ||
} | ||
|
||
if (options == null) { | ||
this.options = new ArrayList<>(); | ||
} else { | ||
this.options = options; | ||
} | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public Object getViewType() { | ||
return viewType; | ||
} | ||
|
||
public User getUser() { | ||
return user; | ||
} | ||
|
||
public List<Guest> getGuests() { | ||
return guests; | ||
} | ||
|
||
public List<ProjectOption> getOptions() { | ||
return options; | ||
} | ||
|
||
public LocalDateTime getStartDate() { | ||
return startDate; | ||
} | ||
|
||
public LocalDateTime getEndDate() { | ||
return endDate; | ||
} | ||
|
||
} | ||
|
||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍