Skip to content
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

[[Fix] :: all #29

Merged
merged 5 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions src/main/java/com/beep/beep/domain/auth/mapper/AuthMapper.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
package com.beep.beep.domain.auth.mapper;

import com.beep.beep.domain.auth.presentation.dto.request.SignUpRequest;
import com.beep.beep.domain.user.domain.UserEntity;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpReq;
import com.beep.beep.domain.user.domain.User;
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.TEACHER;

@Component
public class AuthMapper {

public UserEntity toUser(SignUpRequest request, UserType authority){
return UserEntity.builder()
.id(request.getId())
.password(request.getPassword())
.email(request.getEmail())
.name(request.getName())
public User toUser(SignUpReq req, UserType authority){
return User.builder()
.id(req.getId())
.password(req.getPassword())
.email(req.getEmail())
.name(req.getName())
.authority(authority).build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.beep.beep.domain.auth.presentation;


import com.beep.beep.domain.auth.presentation.dto.request.SignInRequest;
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.presentation.dto.request.SignInReq;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpReq;
import com.beep.beep.domain.auth.presentation.dto.request.TokenRefreshReq;
import com.beep.beep.domain.auth.presentation.dto.response.SignInRes;
import com.beep.beep.domain.auth.presentation.dto.response.TokenRefreshRes;
import com.beep.beep.domain.auth.service.AuthService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -31,43 +31,43 @@ public class AuthController {
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "학생 회원가입", description = "학생계정으로 회원가입합니다. (unauthenticated)")
public void studentSignUp(
@RequestBody SignUpRequest request
@RequestBody SignUpReq req
){
authService.studentSignUp(request);
authService.studentSignUp(req);
}

@PostMapping("/sign-up/teacher")
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "선생님 회원가입", description = "선생님계정으로 회원가입합니다. (unauthenticated)")
public void teacherSignUp(
@RequestBody SignUpRequest request
@RequestBody SignUpReq req
){
authService.teacherSignUp(request);
authService.teacherSignUp(req);
}

@PostMapping("/sign-up/admin")
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "관리자 회원가입", description = "관리자계정으로 회원가입합니다. (unauthenticated)")
public void adminSignUp(
@RequestBody SignUpRequest request
@RequestBody SignUpReq req
){
authService.adminSignUp(request);
authService.adminSignUp(req);
}

@PostMapping("/sign-in")
@Operation(summary = "로그인", description = "모든 계정이 이 요청을 통해 로그인 합니다. (unauthenticated)")
public SignInResponse signIn(
@Validated @RequestBody SignInRequest request
public SignInRes signIn(
@Validated @RequestBody SignInReq req
) {
return authService.signIn(request);
return authService.signIn(req);
}

@GetMapping("/refresh")
@Operation(summary = "토큰 재발급", description = "access 토큰 재발급 (student,teacher,admin)")
public TokenRefreshResponse refresh(
@Validated @RequestBody TokenRefreshRequest request
public TokenRefreshRes refresh(
@Validated @RequestBody TokenRefreshReq req
) {
return authService.refresh(request);
return authService.refresh(req);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import lombok.Getter;

@Getter
public class SignInRequest {
public class SignInReq {
private String id;
private String password;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

@Getter
@Setter
public class SignUpRequest {
public class SignUpReq {
private String id;
private String password;
private String email;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
import lombok.Getter;

@Getter
public class TokenRefreshRequest {
public class TokenRefreshReq {
private String token;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
@Getter
@Builder
@AllArgsConstructor
public class SignInResponse {
public class SignInRes {
private String accessToken;
private String refreshToken;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
@Getter
@Builder
@AllArgsConstructor
public class TokenRefreshResponse {
public class TokenRefreshRes {
private String accessToken;
}
48 changes: 24 additions & 24 deletions src/main/java/com/beep/beep/domain/auth/service/AuthService.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.beep.beep.domain.auth.service;

import com.beep.beep.domain.auth.mapper.AuthMapper;
import com.beep.beep.domain.auth.presentation.dto.request.SignInRequest;
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.auth.presentation.dto.request.SignInReq;
import com.beep.beep.domain.auth.presentation.dto.request.SignUpReq;
import com.beep.beep.domain.auth.presentation.dto.request.TokenRefreshReq;
import com.beep.beep.domain.auth.presentation.dto.response.SignInRes;
import com.beep.beep.domain.auth.presentation.dto.response.TokenRefreshRes;
import com.beep.beep.domain.user.domain.User;
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;
Expand Down Expand Up @@ -37,46 +37,46 @@ public class AuthService {
private final UserUtil userUtil;

/** 학생 회원가입 */
public void studentSignUp(SignUpRequest request){
signUp(request,STUDENT);
public void studentSignUp(SignUpReq req){
signUp(req,STUDENT);
}

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

public void adminSignUp(SignUpRequest request){
signUp(request,ADMIN);
public void adminSignUp(SignUpReq req){
signUp(req,ADMIN);
}

public SignInResponse signIn(SignInRequest request){
UserEntity user = userUtil.findUserById(request.getId());
public SignInRes signIn(SignInReq req){
User user = userUtil.findUserById(req.getId());

if (!encoder.matches(request.getPassword(), user.getPassword()))
if (!encoder.matches(req.getPassword(), user.getPassword()))
throw PasswordWrongException.EXCEPTION;

return SignInResponse.builder()
return SignInRes.builder()
.accessToken(jwtProvider.generateAccessToken(user.getEmail(), user.getAuthority()))
.refreshToken(jwtProvider.generateRefreshToken(user.getEmail(), user.getAuthority()))
.build();
}

public TokenRefreshResponse refresh(TokenRefreshRequest request){
Jws<Claims> claims = jwtExtractor.getClaims(jwtExtractor.extractToken(request.getToken())); // 토큰 정보 발췌
public TokenRefreshRes refresh(TokenRefreshReq req){
Jws<Claims> claims = jwtExtractor.getClaims(jwtExtractor.extractToken(req.getToken())); // 토큰 정보 발췌

if (jwtExtractor.isWrongType(claims, JwtType.REFRESH)) // refresh가 아니면
throw TokenTypeException.EXCEPTION;

return TokenRefreshResponse.builder()
return TokenRefreshRes.builder()
.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 중복 체크
private void signUp(SignUpReq req, UserType authority){
existsById(req.getId()); // id 중복 체크
userUtil.checkEmail(req.getEmail()); // email 중복 체크

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

private void existsById(String id){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
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;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
Expand All @@ -22,7 +16,7 @@
@Table(name = "tb_attendance")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@SuperBuilder
public class AttendanceEntity extends BaseTime {
public class Attendance extends BaseTime {
@Id
private Long userIdx;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "tb_room")
@SuperBuilder
public class RoomEntity {
public class Room {
@Id
private String code;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
package com.beep.beep.domain.beep.domain.repository;

import com.beep.beep.domain.beep.domain.AttendanceEntity;
import com.beep.beep.domain.beep.domain.Attendance;
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> , AttendanceRepositoryCustom {

AttendanceEntity findByUserIdx(Long userIdx);

public interface AttendanceRepository extends CrudRepository<Attendance,Long> , AttendanceRepositoryCustom {
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.beep.beep.domain.beep.domain.repository;

import com.beep.beep.domain.beep.domain.RoomEntity;
import com.beep.beep.domain.beep.domain.Room;
import com.beep.beep.domain.beep.domain.repository.querydsl.RoomRepositoryCustom;
import org.springframework.data.repository.CrudRepository;


public interface RoomRepository extends CrudRepository<RoomEntity,String> , RoomRepositoryCustom {
RoomEntity findByCode(String code);
public interface RoomRepository extends CrudRepository<Room,String> , RoomRepositoryCustom {
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
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 com.beep.beep.domain.beep.presentation.dto.response.AttendanceByCodeRes;
import com.beep.beep.domain.student.presentation.dto.request.StudentByGradeClsReq;
import com.beep.beep.domain.student.presentation.dto.response.StudentByGradeClsRes;
import com.beep.beep.domain.student.presentation.dto.response.StudentByUserRes;
import com.beep.beep.domain.user.presentation.dto.UserVO;

import java.util.List;

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

// StudentInfoResponse studentInfo(User user);
List<AttendanceByCodeRes> attendanceListByCode(String code);

StudentByUserRes studentByUser(UserVO userVO);

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

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

import java.util.List;

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