Skip to content

Commit

Permalink
Merge pull request #10 from kakao-tech-campus-2nd-step3/develop
Browse files Browse the repository at this point in the history
3주차 develop -> master
  • Loading branch information
sunandrabbit authored Sep 20, 2024
2 parents 4987cb0 + 7b43443 commit 85e85c0
Show file tree
Hide file tree
Showing 40 changed files with 1,844 additions and 30 deletions.
66 changes: 41 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,58 @@
# 코드 컨벤션

- angular code conventions을 기반으로 커밋 메세지 작성
- feat : 새로운 기능 추가
- fix : 버그 수정
- docs : 문서 변경
- style : 코드 스타일 변경 (포매팅 수정, 세미콜론 추가 등)
- refactor : 코드 리팩토링
- test : 테스트 코드 추가, 수정
- chore : 빌드 프로세스, 도구 설정 변경 등 기타 작업
- feat : 새로운 기능 추가
- fix : 버그 수정
- docs : 문서 변경
- style : 코드 스타일 변경 (포매팅 수정, 세미콜론 추가 등)
- refactor : 코드 리팩토링
- test : 테스트 코드 추가, 수정
- chore : 빌드 프로세스, 도구 설정 변경 등 기타 작업

---

# 구현 기능 목록

- 인증(김동혁)
- 회원가입
- google oauth2로 구현
- 몇 가지 예외처리된 경로를 제외하면 구글 로그인 요구
- swagger3
- h2-console
- /
- flow
- 토큰 검증
- 토큰이 없다면
- 로그인
- 가입 정보가 없다면 회원가입
- 성공시 토큰 생성 및 반환
- GET Param으로 반환됨
- 실패시 /error로 이동
- 토큰이 있다면
- 토큰 검증
- 토큰 내부의 정보를 파싱
- 로그인
- 코드로 참여
- 프로젝트(김도헌)
- 프로젝트 리스트 조회
- 프로젝트 기간 리스트 조회
- 프로젝트 조회
- 프로젝트 멤버 조회
- 프로젝트 생성
- 프로젝트 설정 수정
- 프로젝트 삭제
- 프로젝트 리스트 조회
- 프로젝트 기간 리스트 조회
- 프로젝트 조회
- 프로젝트 멤버 조회
- 프로젝트 생성
- 프로젝트 설정 수정
- 프로젝트 삭제
- 게스트(권순호)
- 게스트 생성
- 게스트 수정
- 게스트 삭제
- 프로젝트 내 게스트 추가
- 프로젝트 코드 메일로 전달
- 게스트 생성
- 게스트 수정
- 게스트 삭제
- 프로젝트 내 게스트 추가
- 프로젝트 코드 메일로 전달
- 태스크(조서영)
- 태스크 생성
- 태스크 삭제
- 태스크 수정
- 태스크 생성
- 태스크 삭제
- 태스크 수정
- 이벤트
- 독려 이메일 전달
- 각 게스트별 진행도 조회
- 태스크별 진행도 조회
- 독려 이메일 전달
- 각 게스트별 진행도 조회
- 태스크별 진행도 조회
- ...
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ repositories {

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
// implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
// implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/com/example/team1_be/DTO/AttendUrlResponseDTO.java
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;
}
}
117 changes: 117 additions & 0 deletions src/main/java/com/example/team1_be/DTO/AuthDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.example.team1_be.DTO;

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;
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,
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;
}
}
}
171 changes: 171 additions & 0 deletions src/main/java/com/example/team1_be/DTO/ProjectDTO.java
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;

private Integer isDelete;

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 {

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;
}

}

}

Loading

0 comments on commit 85e85c0

Please sign in to comment.