Skip to content

Commit

Permalink
[Merge] :: temp to main
Browse files Browse the repository at this point in the history
pull request #27 from 8Bit-beep/
  • Loading branch information
heunseoRyu authored May 22, 2024
2 parents 6f2ffc6 + d232045 commit fbfe3c7
Show file tree
Hide file tree
Showing 64 changed files with 722 additions and 391 deletions.
8 changes: 7 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,14 @@ repositories {
}

dependencies {
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1'

Expand All @@ -36,8 +42,8 @@ dependencies {

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-mail'

implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
Expand Down
30 changes: 5 additions & 25 deletions src/main/java/com/beep/beep/domain/auth/mapper/AuthMapper.java
Original file line number Diff line number Diff line change
@@ -1,43 +1,23 @@
package com.beep.beep.domain.auth.mapper;

import com.beep.beep.domain.auth.presentation.dto.request.AdminSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.StudentSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.TeacherSignUpRequest;
import com.beep.beep.domain.teacher.domain.JobEntity;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpRequest;
import com.beep.beep.domain.user.domain.UserEntity;
import com.beep.beep.domain.user.domain.enums.UserType;
import org.springframework.stereotype.Component;

import static com.beep.beep.domain.user.domain.enums.UserType.ADMIN;
import static com.beep.beep.domain.user.domain.enums.UserType.STUDENT;
import static com.beep.beep.domain.user.domain.enums.UserType.TEACHER;

@Component
public class AuthMapper {
public UserEntity toAdmin(String encryptedPassword, AdminSignUpRequest request){
return UserEntity.builder()
.id(request.getId())
.password(encryptedPassword)
.email(request.getEmail())
.name(request.getName())
.authority(ADMIN).build();
}

public UserEntity toStudent(String encryptedPassword, StudentSignUpRequest request){
return UserEntity.builder()
.id(request.getId())
.password(encryptedPassword)
.email(request.getEmail())
.name(request.getName())
.authority(STUDENT).build();
}

public UserEntity toTeacher(String encryptedPassword, TeacherSignUpRequest request){
public UserEntity toUser(SignUpRequest request, UserType authority){
return UserEntity.builder()
.id(request.getId())
.password(encryptedPassword)
.password(request.getPassword())
.email(request.getEmail())
.name(request.getName())
.authority(TEACHER).build();
.authority(authority).build();
}

}
Original file line number Diff line number Diff line change
@@ -1,28 +1,21 @@
package com.beep.beep.domain.auth.presentation;


import com.beep.beep.domain.auth.presentation.dto.request.AdminSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.TeacherSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.SignInRequest;
import com.beep.beep.domain.auth.presentation.dto.request.StudentSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.TokenRefreshRequest;
import com.beep.beep.domain.auth.presentation.dto.response.SignInResponse;
import com.beep.beep.domain.auth.presentation.dto.response.TokenRefreshResponse;
import com.beep.beep.domain.auth.service.AuthService;
import com.beep.beep.domain.user.presentation.dto.request.ChangePwRequest;
import com.beep.beep.domain.user.presentation.dto.response.UserIdResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

Expand All @@ -38,16 +31,16 @@ public class AuthController {
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "학생 회원가입", description = "학생계정으로 회원가입합니다. (unauthenticated)")
public void studentSignUp(
@RequestBody StudentSignUpRequest request
@RequestBody SignUpRequest request
){
authService.studentSignUp(request);
}

@PostMapping("/sign-up/teacher")
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "선생님 회원가입", description = "선생님계정으로 회원가입합니다. (unauthenticated)")
public void studentSignUp(
@RequestBody TeacherSignUpRequest request
public void teacherSignUp(
@RequestBody SignUpRequest request
){
authService.teacherSignUp(request);
}
Expand All @@ -56,13 +49,12 @@ public void studentSignUp(
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "관리자 회원가입", description = "관리자계정으로 회원가입합니다. (unauthenticated)")
public void adminSignUp(
@RequestBody AdminSignUpRequest request
@RequestBody SignUpRequest request
){
authService.adminSignUp(request);
}

@PostMapping("/sign-in")
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "로그인", description = "모든 계정이 이 요청을 통해 로그인 합니다. (unauthenticated)")
public SignInResponse signIn(
@Validated @RequestBody SignInRequest request
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.beep.beep.domain.auth.presentation.dto.request;

import lombok.Getter;
import lombok.Setter;

@Getter
public class AdminSignUpRequest {
@Setter
public class SignUpRequest {
private String id;
private String password;
private String email;
Expand Down

This file was deleted.

This file was deleted.

50 changes: 28 additions & 22 deletions src/main/java/com/beep/beep/domain/auth/service/AuthService.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
package com.beep.beep.domain.auth.service;

import com.beep.beep.domain.auth.mapper.AuthMapper;
import com.beep.beep.domain.auth.presentation.dto.request.AdminSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.TeacherSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.SignInRequest;
import com.beep.beep.domain.auth.presentation.dto.request.StudentSignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpRequest;
import com.beep.beep.domain.auth.presentation.dto.request.TokenRefreshRequest;
import com.beep.beep.domain.auth.presentation.dto.response.SignInResponse;
import com.beep.beep.domain.auth.presentation.dto.response.TokenRefreshResponse;
import com.beep.beep.domain.user.domain.UserEntity;
import com.beep.beep.domain.user.domain.enums.UserType;
import com.beep.beep.domain.user.domain.repository.UserRepository;
import com.beep.beep.domain.user.exception.PasswordWrongException;
import com.beep.beep.domain.user.facade.UserFacade;
import com.beep.beep.global.common.service.UserUtil;
import com.beep.beep.global.security.jwt.JwtExtractor;
import com.beep.beep.global.security.jwt.JwtProvider;
import com.beep.beep.global.security.jwt.enums.JwtType;
Expand All @@ -23,40 +21,36 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import static com.beep.beep.domain.user.domain.enums.UserType.ADMIN;
import static com.beep.beep.domain.user.domain.enums.UserType.STUDENT;
import static com.beep.beep.domain.user.domain.enums.UserType.TEACHER;

@Service
@RequiredArgsConstructor
public class AuthService {

private final PasswordEncoder encoder;
private final JwtProvider jwtProvider;
private final UserFacade userFacade;
private final JwtExtractor jwtExtractor;
private final AuthMapper authMapper;
private final UserRepository userRepository;
private final JwtExtractor jwtExtractor;

public void studentSignUp(StudentSignUpRequest request){
userFacade.existsById(request.getId());
private final UserUtil userUtil;

userRepository.save(authMapper.toStudent(encoder.encode(request.getPassword()),request));
/** 학생 회원가입 */
public void studentSignUp(SignUpRequest request){
signUp(request,STUDENT);
}

public void teacherSignUp(TeacherSignUpRequest request){
userFacade.existsById(request.getId());

userRepository.save(authMapper.toTeacher(encoder.encode(request.getPassword()),request));


public void teacherSignUp(SignUpRequest request){
signUp(request,TEACHER);
}

public void adminSignUp(AdminSignUpRequest request){
userFacade.existsById(request.getId());

UserEntity userEntity = authMapper.toAdmin(encoder.encode(request.getPassword()),request);
userRepository.save(userEntity);
public void adminSignUp(SignUpRequest request){
signUp(request,ADMIN);
}

public SignInResponse signIn(SignInRequest request){
UserEntity user = userFacade.findUserById(request.getId());
UserEntity user = userUtil.findUserById(request.getId());

if (!encoder.matches(request.getPassword(), user.getPassword()))
throw PasswordWrongException.EXCEPTION;
Expand All @@ -77,5 +71,17 @@ public TokenRefreshResponse refresh(TokenRefreshRequest request){
.accessToken(jwtProvider.generateAccessToken(claims.getBody().getSubject(), (UserType) claims.getHeader().get("authority"))).build();
}

private void signUp(SignUpRequest request,UserType authority){
existsById(request.getId()); // id 중복 체크
userUtil.checkEmail(request.getEmail()); // email 중복 체크

request.setPassword(encoder.encode(request.getPassword())); // password 인코딩
userRepository.save(authMapper.toUser(request,authority)); // 저장
}

private void existsById(String id){
userUtil.existsById(id);
}


}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.beep.beep.domain.beep.domain;

import com.beep.beep.domain.student.domain.StudentIdEntity;
import com.beep.beep.domain.user.domain.UserEntity;
import com.beep.beep.domain.user.presentation.dto.User;
import com.beep.beep.global.common.entity.BaseTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.beep.beep.domain.beep.domain.repository;

import com.beep.beep.domain.beep.domain.AttendanceEntity;
import com.beep.beep.domain.beep.domain.repository.querydsl.AttendanceRepositoryCustom;
import com.beep.beep.domain.beep.presentation.dto.Attendance;
import org.springframework.data.repository.CrudRepository;

import java.util.List;

public interface AttendanceRepository extends CrudRepository<AttendanceEntity,String> {
public interface AttendanceRepository extends CrudRepository<AttendanceEntity,String> , AttendanceRepositoryCustom {

Attendance findByUserIdx(Long userIdx);
AttendanceEntity findByUserIdx(Long userIdx);

List<AttendanceEntity> findAllByCode(String code);
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
package com.beep.beep.domain.beep.domain.repository;

import com.beep.beep.domain.beep.domain.RoomEntity;
import org.springframework.data.jpa.repository.Query;
import com.beep.beep.domain.beep.domain.repository.querydsl.RoomRepositoryCustom;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface RoomRepository extends CrudRepository<RoomEntity,String> {
public interface RoomRepository extends CrudRepository<RoomEntity,String> , RoomRepositoryCustom {
RoomEntity findByCode(String code);

@Query("SELECT s FROM RoomEntity s WHERE s.name LIKE CONCAT('%', :name, '%')")
List<RoomEntity> findAllByName(@Param("name") String name);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.beep.beep.domain.beep.domain.repository.querydsl;

import com.beep.beep.domain.beep.presentation.dto.response.GetAttendanceResponse;
import com.beep.beep.domain.student.presentation.dto.response.StudentInfoResponse;
import com.beep.beep.domain.user.presentation.dto.User;

import java.util.List;

public interface AttendanceRepositoryCustom {
List<GetAttendanceResponse> attendanceListByCode(String code);

// StudentInfoResponse studentInfo(User user);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.beep.beep.domain.beep.domain.repository.querydsl;

import com.beep.beep.domain.beep.presentation.dto.Room;

import java.util.List;

public interface RoomRepositoryCustom {
List<Room> roomListByName(String name);
}
Loading

0 comments on commit fbfe3c7

Please sign in to comment.