From 1780701a5e04fd26abf7ca8f398bcf882b3b1c64 Mon Sep 17 00:00:00 2001 From: junglesub Date: Mon, 23 Sep 2024 16:59:41 +0900 Subject: [PATCH] Revert "create-user-not-compelet" This reverts commit 78875b21f9c4ca63e56c85609aadb2ab008f7455. --- build.gradle | 2 +- .../realspr/controller/TbuserController.java | 75 ++++------- .../java/com/thc/realspr/domain/Tbuser.java | 75 ++++------- .../java/com/thc/realspr/dto/TbuserDto.java | 124 +++++++++++------- .../thc/realspr/service/TbuserService.java | 10 +- .../service/impl/TbuserServiceImpl.java | 85 ++++++------ src/main/resources/mapper/TbuserMapper.xml | 6 - 7 files changed, 189 insertions(+), 188 deletions(-) diff --git a/build.gradle b/build.gradle index a6d5a11..44f3a9a 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ sourceSets { } } -// processResources { dependsOn "copyReactBuildFiles" } +processResources { dependsOn "copyReactBuildFiles" } task installReact(type: Exec) { workingDir "$frontendDir" diff --git a/src/main/java/com/thc/realspr/controller/TbuserController.java b/src/main/java/com/thc/realspr/controller/TbuserController.java index 608de3b..62f0f2b 100644 --- a/src/main/java/com/thc/realspr/controller/TbuserController.java +++ b/src/main/java/com/thc/realspr/controller/TbuserController.java @@ -1,14 +1,17 @@ package com.thc.realspr.controller; -import com.thc.realspr.domain.Tbuser; import com.thc.realspr.dto.GoogleLoginRequest; import com.thc.realspr.dto.GoogleLoginResponse; +import com.thc.realspr.exception.NoAuthorizationException; import com.thc.realspr.service.GoogleAuthService; import com.thc.realspr.service.TbuserService; import com.thc.realspr.util.TokenFactory; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.util.HashMap; import java.util.Map; @RequestMapping("/api/tbuser") @@ -19,72 +22,48 @@ public class TbuserController { private final GoogleAuthService googleAuthService; - public TbuserController(TbuserService tbuserService, GoogleAuthService googleAuthService) { this.tbuserService = tbuserService; this.googleAuthService = googleAuthService; } - // CREATE: POST 요청으로 새로운 사용자 생성 @PostMapping("") - public ResponseEntity create(@RequestBody Map param) { + public Map create(@RequestBody Map param){ System.out.println(param); - // Tbuser response = tbuserService.create(param); - return ResponseEntity.ok(response); + return tbuserService.create(param); + } + @PutMapping("") + public Map update(@RequestBody Map param){ + System.out.println(param); + return tbuserService.update(param); } - -// @PutMapping("") -// public Map update(@RequestBody Map param){ -// System.out.println(param); -// return tbuserService.update(param); -// } @GetMapping("/get/{id}") - public ResponseEntity detail(@PathVariable("id") String id) { + public Map detail(@PathVariable("id") String id){ System.out.println(id); - Tbuser response = tbuserService.get(id); - return ResponseEntity.ok(response); + return tbuserService.get(id); } // Google 로그인 처리 -// @PostMapping("/login/google") -// public ResponseEntity loginWithGoogle(@RequestBody GoogleLoginRequest request) { -// String email = googleAuthService.verifyGoogleToken(request.getCredential()); -// String name = googleAuthService.verifyGoogleToken(request.getCredential()); -// LocalDateTime now = LocalDateTime.now(); -// String uuid = UUID.randomUUID().toString().replace("-", ""); -// Tbuser tbuser = Tbuser.of(uuid, name, now, now); -// -// System.out.println("동작중입니다."); -// System.out.println("이메일: " + email); -// System.out.println("이름: " + name); -// System.out.println("UUID: " + uuid); -// -// -// System.out.println("동작중입니다. "); -// -// if (email == null || !email.endsWith("@handong.ac.kr")) { -// throw new NoAuthorizationException("Unauthorized user"); -// } -// -// -// String refreshToken = TokenFactory.issueRefreshToken(email); // 리프레시 토큰 발급 -// -// System.out.println(refreshToken); -// return ResponseEntity.ok(new GoogleLoginResponse(refreshToken)); -// -// } - + @PostMapping("/login/google") public ResponseEntity loginWithGoogle(@RequestBody GoogleLoginRequest request) { - // 서비스 계층에서 유저 로그인 처리 - Tbuser tbuser = tbuserService.loginWithGoogle(request.getCredential()); + String email = googleAuthService.verifyGoogleToken(request.getCredential()); + + System.out.println("동작중입니다. "); + + System.out.println(email); - // 리프레시 토큰 발급 - String refreshToken = TokenFactory.issueRefreshToken(tbuser.getId()); + if (email == null || !email.endsWith("@handong.ac.kr")) { + throw new NoAuthorizationException("Unauthorized user"); + } - // 응답 리턴 + + String refreshToken = TokenFactory.issueRefreshToken(email); // 리프레시 토큰 발급 + + System.out.println(refreshToken); return ResponseEntity.ok(new GoogleLoginResponse(refreshToken)); + } // @ResponseBody diff --git a/src/main/java/com/thc/realspr/domain/Tbuser.java b/src/main/java/com/thc/realspr/domain/Tbuser.java index fe1355b..628a770 100644 --- a/src/main/java/com/thc/realspr/domain/Tbuser.java +++ b/src/main/java/com/thc/realspr/domain/Tbuser.java @@ -1,74 +1,57 @@ package com.thc.realspr.domain; -import com.thc.realspr.dto.TbuserDto; +import com.thc.realspr.config.Role; import jakarta.persistence.*; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; import lombok.Getter; import lombok.Setter; +import org.antlr.v4.runtime.misc.NotNull; -import java.time.LocalDateTime; import java.util.UUID; @Getter @Entity public class Tbuser { - /* - * - email -- uuid -- 이름 -- last login time -- modified_at -- created_at*/ - @Id private String id; // 이메일 - @Setter @Column(nullable = false) private String uuid; // 사용자아이디 + @Id private String id; + @Setter @Column(nullable = false) private String deleted; // 삭제여부 + + @Setter @Column(nullable = false) private String username; // 사용자아이디 + @Setter @Column(nullable = false) private String password; // 비번 @Setter @Column(nullable = false) private String name; - @Setter @Column(nullable = false) private LocalDateTime last_login_time; - @Setter @Column(nullable = false) private LocalDateTime modified_at; - @Setter @Column(nullable = false) private LocalDateTime created_at; // 프로필 사진 + @Setter @Column(nullable = false) private String nick; + @Setter @Column(nullable = false) private String phone; + @Setter @Column(nullable = false) private String mpic; // 프로필 사진 + @Setter @Column(nullable = false, length=2000000) @Lob private String content; // 본문 - + @Enumerated(EnumType.STRING) + @NotNull + private Role role; protected Tbuser(){} - private Tbuser(String id, String uuid, String name, LocalDateTime last_login_time, LocalDateTime modified_at, LocalDateTime created_at) { - this.id = id; - this.uuid = uuid; - this.name = name; - this.last_login_time = last_login_time; - this.modified_at = modified_at; - this.created_at = created_at; - } - - public Tbuser(String uuid, String name, LocalDateTime last_login_time, LocalDateTime created_at) { - this.uuid = uuid; + private Tbuser(String username, String password, String name, String nick, String phone, String mpic, String content, Role role) { + this.username = username; + this.password = password; this.name = name; - this.last_login_time = last_login_time; - this.created_at = created_at; - } - - public Tbuser(String id) { - this.id = id; + this.nick = nick; + this.phone = phone; + this.mpic = mpic; + this.content = content; + this.role = role; } - - - // TODO: role 추가 해야 함 . - public static Tbuser of(String id, String uuid, String name, LocalDateTime last_login_time, LocalDateTime created_at){ - return new Tbuser(id, uuid, name, last_login_time, null, created_at); + public static Tbuser of(String username, String password){ + return new Tbuser(username, password, "", "", "", "", "", null); } @PrePersist public void onPrePersist() { - this.uuid = UUID.randomUUID().toString().replace("-", ""); + this.id = UUID.randomUUID().toString().replace("-", ""); + this.deleted = "N"; } - - -// public String getRoleKey(){ -// return this.role.getKey(); -// } + public String getRoleKey(){ + return this.role.getKey(); + } diff --git a/src/main/java/com/thc/realspr/dto/TbuserDto.java b/src/main/java/com/thc/realspr/dto/TbuserDto.java index dd7fea7..f2b4c41 100644 --- a/src/main/java/com/thc/realspr/dto/TbuserDto.java +++ b/src/main/java/com/thc/realspr/dto/TbuserDto.java @@ -9,8 +9,6 @@ import lombok.*; import lombok.experimental.SuperBuilder; -import java.time.LocalDateTime; - public class TbuserDto { @Builder @@ -25,59 +23,95 @@ public static class AccessReqDto{ @NotEmpty private String refreshToken; } - @Builder @Schema @Getter @Setter @AllArgsConstructor @NoArgsConstructor - public static class CreateReqDto{ -// @Schema(description = "username", example="") -// @NotNull -// @NotEmpty -// @Size(max=400) -// private String username; -// @Schema(description = "password", example="") -// @NotNull -// @NotEmpty -// @Size(max=100) -// private String password; -// -// public Tbuser toEntity(){ -// return Tbuser.of(username, password); -// } - - @Schema(description = "사용자 이메일", example = "") - @NotNull(message = "email cannot be null") - @NotEmpty(message = "email cannot be empty") - @Size(max = 36, message = "email must be less than 36 characters") - private String id; - - - @Schema(description = "사용자 아이디(UUID)", example = "") - @NotNull(message = "UUID cannot be null") - @NotEmpty(message = "UUID cannot be empty") - @Size(max = 36, message = "UUID must be less than 36 characters") - private String uuid; + public static class ConfirmReqDto{ + @Schema(description = "username", example="") + @NotNull + @NotEmpty + @Size(max=400) + private String username; + @Schema(description = "number", example="") + @NotNull + @NotEmpty + private String number; + } + @Builder + @Schema + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class UidReqDto{ + @Schema(description = "username", example="") + @NotNull + @NotEmpty + @Size(max=400) + private String username; + } - @Schema(description = "유저 이름", example = "") - @NotNull(message = "Name cannot be null") - @NotEmpty(message = "Name cannot be empty") - @Size(max = 100, message = "Name must be less than 100 characters") - private String name; + @Builder + @Schema + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class LoginReqDto{ + @Schema(description = "username", example="") + @NotNull + @NotEmpty + @Size(max=400) + private String username; + @Schema(description = "password", example="") + @NotNull + @NotEmpty + @Size(max=100) + private String password; + } - @Schema(description = "마지막 로그인 시간", example = "") - @NotNull(message = "Last login time cannot be null") - private LocalDateTime lastLoginTime; + @Builder + @Schema + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class SignupReqDto{ + @Schema(description = "username", example="") + @NotNull + @NotEmpty + @Size(max=400) + private String username; + @Schema(description = "password", example="") + @NotNull + @NotEmpty + @Size(max=100) + private String password; + } - @Schema(description = "생성 시간", example = "") - @NotNull(message = "Created at time cannot be null") - private LocalDateTime createdAt; + @Builder + @Schema + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class CreateReqDto{ + @Schema(description = "username", example="") + @NotNull + @NotEmpty + @Size(max=400) + private String username; + @Schema(description = "password", example="") + @NotNull + @NotEmpty + @Size(max=100) + private String password; - // Tbuser 엔티티로 변환하는 메서드 - public Tbuser toEntity() { - return Tbuser.of(id ,uuid, name, lastLoginTime, createdAt); + public Tbuser toEntity(){ + return Tbuser.of(username, password); } } @Builder diff --git a/src/main/java/com/thc/realspr/service/TbuserService.java b/src/main/java/com/thc/realspr/service/TbuserService.java index 5abfec8..d7ac696 100644 --- a/src/main/java/com/thc/realspr/service/TbuserService.java +++ b/src/main/java/com/thc/realspr/service/TbuserService.java @@ -1,21 +1,21 @@ package com.thc.realspr.service; -import com.thc.realspr.domain.Tbuser; import com.thc.realspr.dto.DefaultDto; import com.thc.realspr.dto.GoogleLoginRequest; import com.thc.realspr.dto.GoogleLoginResponse; import com.thc.realspr.dto.TbuserDto; import org.springframework.stereotype.Service; +import java.util.Map; + @Service public interface TbuserService { - Tbuser create(TbuserDto.CreateReqDto param); - TbuserDto.DetailResDto detail(DefaultDto.DetailReqDto param); + public Map create(Map param); + public Map update(Map param); + public Map get(String id); TbuserDto.CreateResDto access(String param) throws Exception; // TbuserDto.CreateResDto access(String param) throws Exception; GoogleLoginResponse loginWithGoogle(GoogleLoginRequest request); - - Tbuser loginWithGoogle(String credential); } diff --git a/src/main/java/com/thc/realspr/service/impl/TbuserServiceImpl.java b/src/main/java/com/thc/realspr/service/impl/TbuserServiceImpl.java index 5a5ef2f..ae69324 100644 --- a/src/main/java/com/thc/realspr/service/impl/TbuserServiceImpl.java +++ b/src/main/java/com/thc/realspr/service/impl/TbuserServiceImpl.java @@ -1,48 +1,77 @@ package com.thc.realspr.service.impl; import com.thc.realspr.domain.Tbuser; -import com.thc.realspr.dto.DefaultDto; import com.thc.realspr.dto.GoogleLoginRequest; import com.thc.realspr.dto.GoogleLoginResponse; import com.thc.realspr.dto.TbuserDto; -import com.thc.realspr.exception.NoAuthorizationException; +import com.thc.realspr.mapper.TbuserMapper; import com.thc.realspr.repository.TbuserRepository; -import com.thc.realspr.service.GoogleAuthService; import com.thc.realspr.service.TbuserService; import com.thc.realspr.util.TokenFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; //import com.thc.realspr.util.TokenFactory; -import java.time.LocalDateTime; -import java.util.UUID; + +import java.util.HashMap; +import java.util.Map; @Service public class TbuserServiceImpl implements TbuserService { private final TbuserRepository tbuserRepository; - private final GoogleAuthService googleAuthService; - - public TbuserServiceImpl(TbuserRepository tbuserRepository, GoogleAuthService googleAuthService) { + @Autowired + public TbuserServiceImpl(TbuserMapper tbuserMapper, TbuserRepository tbuserRepository) { this.tbuserRepository = tbuserRepository; - this.googleAuthService = googleAuthService; } + public TbuserServiceImpl( + TbuserRepository tbuserRepository + ) { + this.tbuserRepository = tbuserRepository; + } - - @Override - public Tbuser create(TbuserDto.CreateReqDto param) { - //사용자 등록 완료! - Tbuser tbuser = tbuserRepository.save(param.toEntity()); - //String uuid, String name, LocalDateTime last_login_time, LocalDateTime created_at - return tbuser.of(param.getId(), param.getUuid(), param.getName(), param.getLastLoginTime(), param.getCreatedAt()); + public Map create(Map param){ + Map returnMap = new HashMap(); + System.out.println(param); + Tbuser tbuser = Tbuser.of(param.get("username") + "", param.get("password") + ""); + tbuserRepository.save(tbuser); + returnMap.put("id", tbuser.getId()); + return returnMap; } + public Map update(Map param){ + Map returnMap = new HashMap(); + System.out.println(param); + Tbuser tbuser = tbuserRepository.findById(param.get("id") + "").orElseThrow(() -> new RuntimeException("")); + if(param.get("name") != null) { + tbuser.setName(param.get("name") + ""); + } + if(param.get("nick") != null) { + tbuser.setNick(param.get("nick") + ""); + } + if(param.get("phone") != null) { + tbuser.setPhone(param.get("phone") + ""); + } - @Override - public TbuserDto.DetailResDto detail(DefaultDto.DetailReqDto param) { - return null; + tbuserRepository.save(tbuser); + returnMap.put("id", tbuser.getId()); + return returnMap; + } + public Map get(String id){ + Map returnMap = new HashMap(); + System.out.println(id); + Tbuser tbuser = tbuserRepository.findById(id).orElseThrow(() -> new RuntimeException("")); + + returnMap.put("id", tbuser.getId()); + returnMap.put("username", tbuser.getUsername()); + returnMap.put("name", tbuser.getName()); + returnMap.put("nick", tbuser.getNick()); + returnMap.put("phone", tbuser.getPhone()); + + return returnMap; } @Override @@ -52,29 +81,11 @@ public TbuserDto.CreateResDto access(String param) throws Exception { return null; } - @Override public GoogleLoginResponse loginWithGoogle(GoogleLoginRequest request) { return null; } - @Override - public Tbuser loginWithGoogle(String credential) { - String email = googleAuthService.verifyGoogleToken(credential); - String name = googleAuthService.verifyGoogleToken(credential); - LocalDateTime now = LocalDateTime.now(); - String uuid = UUID.randomUUID().toString().replace("-", ""); - - // 유저 객체 생성 - Tbuser tbuser = Tbuser.of(uuid, name, name, now, now); - - // 유저가 @handong.ac.kr 이메일이 아니면 예외 처리 - if (email == null || !email.endsWith("@handong.ac.kr")) { - throw new NoAuthorizationException("Unauthorized user"); - } - - return tbuser; - } } diff --git a/src/main/resources/mapper/TbuserMapper.xml b/src/main/resources/mapper/TbuserMapper.xml index f6c9908..7c0d384 100644 --- a/src/main/resources/mapper/TbuserMapper.xml +++ b/src/main/resources/mapper/TbuserMapper.xml @@ -9,10 +9,4 @@ WHERE tbuser.email = #{email} - !-- 사용자 생성 (Insert) 쿼리 --> - - INSERT INTO tbuser (id, uuid, name, last_login_time, modified_at, created_at) - VALUES (#{id}, #{uuid}, #{name}, #{lastLoginTime}, #{modifiedAt}, #{createdAt}) - -