Skip to content

Commit

Permalink
Merge pull request #74 from HGU-WALAB/#69/refactor
Browse files Browse the repository at this point in the history
#69/refactor
  • Loading branch information
uojin29 authored Jan 24, 2024
2 parents 48f9e52 + 46f8c62 commit 82ca246
Show file tree
Hide file tree
Showing 21 changed files with 96 additions and 36 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
id 'war'
}

group = 'com.example'
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/com/example/hanspaceback/ServletInitializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.hanspaceback;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(HanspaceBackApplication.class);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -63,6 +64,18 @@ public ResponseEntity<List<DepartmentResponse>> findByADMIN(@AuthenticationPrinc
return ResponseEntity.ok(departmentService.findByDeptRole(memberId, DeptRole.관리자, deptImage, logoImage));
}

@GetMapping("/list/admin/count/{deptId}")
public List<String> findByADMINCount(@AuthenticationPrincipal CustomUserDetails currentUserDetails, @PathVariable Long deptId) throws IOException {
Long memberId = currentUserDetails.getMemberId();
Long spaceId = spaceService.findByDeptId(deptId).get(0).getSpaceId();
List<String> count = null;
// reserveService.countReserve(memberId, spaceId);
// reserveService.countAllReserve(memberId, deptId);

// 미승인 예약 수, 미승인 사용자 수,
// departmentService.findByDeptRole(memberId, DeptRole.관리자, deptImage, logoImage);
return count;
}
// @GetMapping("/{id}")
// public List<String> count(@PathVariable Long id){
// Long spaceId = spaceService.findByDeptId(id).get(0).getSpaceId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ResponseEntity<List<Reserve>> findBySpaceId(@PathVariable Long spaceId){
public ResponseEntity<List<Reserve>> findByDeptId(@PathVariable Long deptId){
return ResponseEntity.ok(reserveService.findByDeptId(deptId));
}
@GetMapping("/date/{deptId}")
@PostMapping("/date/{deptId}")
public ResponseEntity<List<Reserve>> findByDeptIdDate(@PathVariable Long deptId, @RequestBody ReserveRequest request){
request.getReserveDate();
return ResponseEntity.ok(reserveService.findByDeptIdDate(deptId, request));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.example.hanspaceback.domain;

public enum DeptRole {
관리자, 사용자, 블랙리스트;
관리자, 사용자, 블랙리스트, 미승인;
}
10 changes: 6 additions & 4 deletions src/main/java/com/example/hanspaceback/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ public class Member extends BaseEntity{
@Column(name = "memberId")
private Long memberId;
private String name;
@Column(unique = true)
private String email;
private HanRole hanRole;
public void update(MemberRequest request){

@Column(unique = true)
private String sId;
private String password;
public void update(MemberRequest request) {
this.name = request.getName();
this.email = request.getEmail();
this.hanRole = request.getHanRole();
Expand All @@ -35,9 +40,6 @@ public void update(MemberRequest request){
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DeptMember> deptMember = new ArrayList<>();

// @JsonIgnore
// @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true)
// private List<Reserve> reserve = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true)
private List<ReserveMember> reserveMember = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public class MemberRequest {

private Long deptId;
private HanRole hanRole;
private String sId;
private String password;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.hanspaceback.dto.response;

import com.example.hanspaceback.domain.DeptRole;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

Expand All @@ -19,5 +20,6 @@ public class DepartmentResponse {
private String deptImage;
private int memberCount;
private int spaceCount;
private DeptRole deptRole;
private List<DeptMemberResponse> deptMemberResponse;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public class MemberResponse {

private Long deptId;
private HanRole hanRole;
private String sId;
private String password;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@
public class CustomUserDetails implements UserDetails {
private String email;
private Long memberId;
private String password;
private Collection<? extends GrantedAuthority> authorities;

// deptRoles을 위한 새로운 필드
private List<DeptRole> deptRoles;

public CustomUserDetails(String email, Long memberId, List<SimpleGrantedAuthority> authorities, List<com.example.hanspaceback.domain.DeptRole> deptRoles) {
}
// public CustomUserDetails(String email, Long memberId, List<SimpleGrantedAuthority> authorities, List<com.example.hanspaceback.domain.DeptRole> deptRoles) {
// }

// DeptRole 클래스 정의
@Setter
Expand All @@ -28,13 +29,13 @@ public static class DeptRole {

// 생성자, getter, setter 생략
}
public CustomUserDetails(String email, Long memberId, Collection<? extends GrantedAuthority> authorities, List<DeptRole> deptRoles) {
public CustomUserDetails(String email, Long memberId, String password, Collection<? extends GrantedAuthority> authorities, List<DeptRole> deptRoles) {
this.email = email;
this.memberId = memberId;
this.password = password;
this.authorities = authorities;
this.deptRoles = deptRoles;
}

// UserDetails 인터페이스 구현
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Expand All @@ -43,8 +44,7 @@ public Collection<? extends GrantedAuthority> getAuthorities() {

@Override
public String getPassword() {
// 비밀번호 관련 처리가 필요하다면 여기에 로직 추가
return null;
return password;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public ResponseEntity<HanSpaceTokenResponse> login(@RequestBody HanSpaceLoginReq
long expireTimeMs = 1000 * 60 * 60; // Token 유효 시간 = 60분
List<DepartmentResponse> departmentResponses = deptMemberService.findDeptMembersByMemberId(member.getMemberId());

String jwtToken = HanSpaceTokenUtil.createToken(member.getEmail(), member.getMemberId(), secretKey, expireTimeMs, departmentResponses);
String jwtToken = HanSpaceTokenUtil.createToken(member.getEmail(), member.getMemberId(), member.getSId(), secretKey, expireTimeMs, departmentResponses);

return ResponseEntity.ok(new HanSpaceTokenResponse(jwtToken));
}
Expand All @@ -64,6 +64,8 @@ public ResponseEntity<HanSpaceMemberInfoResponse> memberInfo(@AuthenticationPrin
HanSpaceMemberInfoResponse response = new HanSpaceMemberInfoResponse(
member.getEmail(),
member.getName(),
member.getSId(),
member.getPassword(),
member.getHanRole(),
department
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

@Data
public class HanSpaceLoginRequest {
private String name;
private String email;
private String sId;
private String password;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@
public class HanSpaceMemberInfoResponse {
private String email;
private String name;
private String password;
private String sId;
private HanRole hanRole;
private List<DepartmentResponse> departmentResponses;
private List<DeptMemberResponse> deptMemberResponses;

public HanSpaceMemberInfoResponse(String loginId, String name, HanRole hanRole, List<DepartmentResponse> departmentResponses) {
public HanSpaceMemberInfoResponse(String loginId, String name, String sId, String password, HanRole hanRole, List<DepartmentResponse> departmentResponses) {
this.email = loginId;
this.name = name;
this.password = password;
this.sId = sId;
this.hanRole = hanRole;
this.departmentResponses = departmentResponses;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ public class HanSpaceTokenFilter extends OncePerRequestFilter {

private final MemberService memberService;
private final String secretKey;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String authorizationHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
Expand Down Expand Up @@ -58,7 +57,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
Member loginMember = memberService.findByEmail(email);
// email 정보로 UsernamePasswordAuthenticationToken 발급
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
new CustomUserDetails(loginMember.getEmail(), loginMember.getMemberId(), List.of(new SimpleGrantedAuthority(loginMember.getHanRole().name())), deptRoles),
new CustomUserDetails(loginMember.getEmail(), loginMember.getMemberId(), loginMember.getPassword(), List.of(new SimpleGrantedAuthority(loginMember.getHanRole().name())), deptRoles),
null,
List.of(new SimpleGrantedAuthority(loginMember.getHanRole().name())));
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
import java.util.stream.Collectors;

public class HanSpaceTokenUtil {
public static String createToken(String email, Long memberId, String secretKey, long expireTimeMs, List<DepartmentResponse> departmentResponses) {
public static String createToken(String email, Long memberId, String sId, String secretKey, long expireTimeMs, List<DepartmentResponse> departmentResponses) {
Map<String, Object> claims = new HashMap<>();
claims.put("email", email);
claims.put("memberId", memberId);
claims.put("sId", sId);

// departmentResponses에서 deptId와 deptRole을 추출하여 클레임에 추가
List<Map<String, Object>> deptRolesClaims = departmentResponses.stream()
Expand All @@ -36,7 +37,6 @@ public static String createToken(String email, Long memberId, String secretKey,
.compact();
}


public static String getEmail(String token, String secretKey) {
return extractClaims(token, secretKey).get("email").toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ public interface ReserveRepository extends JpaRepository<Reserve, Long> {
List<Reserve> findByReserveDateFetchJoin(String reserveDate);

List<Reserve> findByReserveDate(String reserveDate);

// int countByDeptId(Long deptId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ else if(department.isUserAccept() == true){
.department(department)
.member(member)
.approve(status) // default : 미승인
.deptRole(DeptRole.사용자) // default : 사용자
.deptRole(DeptRole.미승인) // default : 미승인
.build();
deptMemberRepository.save(deptMember);
}
Expand Down Expand Up @@ -216,6 +216,7 @@ public List<DepartmentResponse> findNAddDeptMembersByMemberId(Long memberId) {
return notAddedDepts;
}

// deptRole
public List<DepartmentResponse> findAddApproveDeptMembersByMemberId(Long memberId) {
List<DeptMember> deptMembers = deptMemberRepository.findByMember_MemberId(memberId);
List<DepartmentResponse> responses = new ArrayList<>();
Expand All @@ -239,6 +240,7 @@ public List<DepartmentResponse> findAddApproveDeptMembersByMemberId(Long memberI
response.setDeptImage(deptUrl + department.getDeptImage());
response.setMemberCount(deptMembers.size());
response.setSpaceCount(department.getSpace().size());
response.setDeptRole(deptMember.getDeptRole());
responses.add(response);
}
}
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/com/example/hanspaceback/service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.example.hanspaceback.repository.ReserveMemberRepository;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,18 +24,23 @@
@Transactional
public class MemberService {
private final MemberRepository memberRepository;
// private final BCryptPasswordEncoder passwordEncoder;
private final DeptMemberRepository deptMemberRepository;
private final DepartmentRepository departmentRepository;
private final ReserveMemberRepository reserveMemberRepository;


// HanSpace 회원 가입
public void signup(MemberRequest request){
Member member = memberRepository.findByEmail(request.getEmail());
// String encodedPassword = passwordEncoder.encode(request.getPassword());

if (member == null) {
member = Member.builder()
.name(request.getName())
.email(request.getEmail())
.sId(request.getSId())
.password(request.getPassword())
.hanRole(request.getHanRole())
.build();
memberRepository.save(member);
Expand Down Expand Up @@ -92,6 +98,8 @@ public List<MemberResponse> findAll(){
MemberResponse response = new MemberResponse();
response.setMemberId(member.getMemberId());
response.setName(member.getName());
response.setPassword(member.getPassword());
response.setSId(member.getSId());
response.setEmail(member.getEmail());
response.setDeptId(member.getMemberId());

Expand Down Expand Up @@ -119,7 +127,11 @@ public void delete(Long id){

public Member login(HanSpaceLoginRequest hanSpaceLoginRequest) {
Member member = memberRepository.findByEmail(hanSpaceLoginRequest.getEmail());

return member;
System.out.println("member.getPassword() = " + member.getPassword());
System.out.println("hanSpaceLoginRequest.getPassword() = " + hanSpaceLoginRequest.getPassword());
if(!member.getPassword().equals(hanSpaceLoginRequest.getPassword())){
throw new IllegalArgumentException("비밀번호가 틀렸습니다.");
}
else return member;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
Expand All @@ -30,8 +31,9 @@ public ReserveResponse create(Long memberId, RegularReserveRequest request){
.build();
regularReserveRepository.save(regularReserve);

Reserve firstReserve = null;
Reserve lastReserve = null;
List<String> reserveDates = new ArrayList<>(); // 예약 날짜를 저장할 리스트

for(int i = 0; i < request.getReserveCount(); i++) {
Space space = spaceRepository.findById(request.getSpaceId()).orElseThrow();
Member member = memberRepository.findById(memberId).orElseThrow();
Expand All @@ -49,10 +51,8 @@ public ReserveResponse create(Long memberId, RegularReserveRequest request){
// .member(member)
.build();
reserveRepository.save(reserve);
if (i == 0) {
firstReserve = reserve; // 첫 번째로 생성된 Reserve 저장
}
lastReserve = reserve;
reserveDates.add(reserve.getReserveDate());

ReserveMember reserveMember = ReserveMember.builder()
.reserve(reserve)
Expand All @@ -65,13 +65,13 @@ public ReserveResponse create(Long memberId, RegularReserveRequest request){
response.setReserveId(lastReserve.getId());
response.setSpaceId(lastReserve.getSpace().getSpaceId());
response.setRegularReserveId(regularReserve.getId());
response.setReserveDate(firstReserve.getReserveDate() + ", " + lastReserve.getReserveDate());
response.setStartTime(lastReserve.getStartTime());
response.setEndTime(lastReserve.getEndTime());
response.setHeadCount(lastReserve.getHeadCount());
response.setPurpose(lastReserve.getPurpose());
response.setStatus(lastReserve.getStatus());
response.setExtraInfoAns(lastReserve.getExtraInfoAns());
response.setReserveDate(String.join(", ", reserveDates));
return response;
}
public List<RegularReserve> findAll(){
Expand Down
Loading

0 comments on commit 82ca246

Please sign in to comment.