박민혁 박민혁 07-09
250709 박민혁 기본 세팅 저장
@b13242ea85074c840a39ffbd79c88c1446e7b79e
src/main/java/kr/co/takensoft/ai/system/auth/dao/AuthDAO.java
--- src/main/java/kr/co/takensoft/ai/system/auth/dao/AuthDAO.java
+++ src/main/java/kr/co/takensoft/ai/system/auth/dao/AuthDAO.java
@@ -1,6 +1,9 @@
 package kr.co.takensoft.ai.system.auth.dao;
 
+import kr.co.takensoft.ai.system.auth.vo.MemberVO;
 import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
+
+import java.util.List;
 
 /**
  * @author  : 박민혁
@@ -12,5 +15,13 @@
  * 사용자 정보 관련 DAO
  */
 @Mapper("authDAO")
-public class AuthDAO {
+public interface AuthDAO {
+
+    /**
+     * @param member 사용자 정보
+     * @return 등록 성공 여부
+     *
+     * 사용자 회원 가입
+     */
+    int memberRegister(MemberVO memberVO) throws Exception;
 }
 
src/main/java/kr/co/takensoft/ai/system/auth/dto/LoginDTO.java (added)
+++ src/main/java/kr/co/takensoft/ai/system/auth/dto/LoginDTO.java
@@ -0,0 +1,23 @@
+package kr.co.takensoft.ai.system.auth.dto;
+
+
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+/**
+ * @author  : 박민혁
+ * @since   : 2025.07.09
+ * @modification
+ *     since    |    author    | description
+ *  2025.07.09  |  박민혁       | 최초 등록
+ *
+ * 로그인 관련 DTO
+ */
+@Setter
+@Getter
+public class LoginDTO {
+    @NotNull
+    private String loginId; // 로그인 아이디
+    @NotNull
+    private String password; // 비밀번호
+}
 
src/main/java/kr/co/takensoft/ai/system/auth/service/AuthService.java (added)
+++ src/main/java/kr/co/takensoft/ai/system/auth/service/AuthService.java
@@ -0,0 +1,23 @@
+package kr.co.takensoft.ai.system.auth.service;
+
+import kr.co.takensoft.ai.system.auth.vo.MemberVO;
+
+/*
+ * @author : 박민혁
+ * @since  : 2025.07.08
+ * @modification
+ *      since   |    author    | description
+ *  2025.07.08  |     박민혁    | 최초 등록
+ *
+ * 사용자 정보 관련 서비스
+ */
+public interface AuthService {
+    /**
+     * @param member 사용자 정보
+     * @return 등록 성공 여부
+     *
+     * 사용자 회원가입
+     */
+    int memberRegister(MemberVO memberVO);
+
+}
 
src/main/java/kr/co/takensoft/ai/system/auth/service/impl/AuthServiceImpl.java (added)
+++ src/main/java/kr/co/takensoft/ai/system/auth/service/impl/AuthServiceImpl.java
@@ -0,0 +1,50 @@
+package kr.co.takensoft.ai.system.auth.service.impl;
+
+/*
+ * @author : 박민혁
+ * @since  : 2025.07.08
+ * @modification
+ *      since   |    author    | description
+ *  2025.07.08  |     박민혁    | 최초 등록
+ *
+ * 사용자 정보 관련 서비스
+ */
+import kr.co.takensoft.ai.system.auth.dao.AuthDAO;
+import kr.co.takensoft.ai.system.auth.service.AuthService;
+import kr.co.takensoft.ai.system.auth.vo.MemberVO;
+import kr.co.takensoft.ai.system.common.idgen.service.IdgenService;
+import kr.co.takensoft.ai.system.common.util.Secret;
+import lombok.RequiredArgsConstructor;
+import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class AuthServiceImpl extends EgovAbstractServiceImpl implements AuthService {
+
+    private final AuthDAO authDAO;
+    private final BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
+    private final IdgenService memberIdgn;
+
+    /**
+     * @param member 사용자 정보
+     * @return 등록 성공 여부
+     *
+     * 사용자 회원가입
+     */
+    public int memberRegister(MemberVO member) {
+        try {
+            String memberId = memberIdgn.getNextStringId(); // 사용자 구분 아이디 생성
+            member.setMemberId(memberId); // 사용자 구분 아이디 등록
+            member.setPassword(bCryptPasswordEncoder.encode(member.getPassword())); // 비밀 번호 단방향 암호화
+            member.setEmail(Secret.encrypt(member.getEmail())); // 이메일 양방향 암호화
+            member.setPhoneNumber(Secret.encrypt(member.getPhoneNumber())); // 전화번호 양방향 암호화
+            return authDAO.memberRegister(member);
+        }  catch (Exception e) {
+            e.printStackTrace();
+            return -1;
+        }
+    };
+
+}
 
src/main/java/kr/co/takensoft/ai/system/auth/vo/MemberVO.java (added)
+++ src/main/java/kr/co/takensoft/ai/system/auth/vo/MemberVO.java
@@ -0,0 +1,31 @@
+package kr.co.takensoft.ai.system.auth.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/*
+ * @author : 박민혁
+ * @since  : 2025.07.08
+ * @modification
+ *      since   |    author    | description
+ *  2025.07.08  |     박민혁    | 최초 등록
+ *
+ * 유저 관련 정보를 담은 VO
+ */
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class MemberVO {
+    private String memberId;
+    private String loginId;
+    private String password;
+    private String email;
+    private String phoneNumber;
+    private String memberName;
+    private String createdAt;
+    private String updatedDt;
+}
 
src/main/java/kr/co/takensoft/ai/system/auth/web/AuthController.java (added)
+++ src/main/java/kr/co/takensoft/ai/system/auth/web/AuthController.java
@@ -0,0 +1,45 @@
+package kr.co.takensoft.ai.system.auth.web;
+
+import kr.co.takensoft.ai.system.auth.service.AuthService;
+import kr.co.takensoft.ai.system.auth.vo.MemberVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+
+/*
+ * @author : 박민혁
+ * @since  : 2025.07.08
+ * @modification
+ *      since   |    author    | description
+ *  2025.07.08  |     박민혁    | 최초 등록
+ *
+ * 사용자 정보 관련 서비스
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/auth")
+public class AuthController {
+
+    private final AuthService authService;
+
+    /**
+     * @param member 사용자 정보
+     * @return ResponseEntity 회원가입 등록 결과를 포함하는 응답
+     *
+     * 사용자 회원 가입
+     */
+    @PostMapping("/register.json")
+    public ResponseEntity<?> register(@RequestBody MemberVO member) {
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("result", authService.memberRegister(member));
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+
+}(No newline at end of file)
src/main/java/kr/co/takensoft/ai/system/common/config/SecurityConfig.java
--- src/main/java/kr/co/takensoft/ai/system/common/config/SecurityConfig.java
+++ src/main/java/kr/co/takensoft/ai/system/common/config/SecurityConfig.java
@@ -26,8 +26,8 @@
         http
                 .csrf(csrf -> csrf.disable())  // CSRF 비활성화
                 .authorizeHttpRequests(auth -> auth
-                        .requestMatchers("/api/auth/**").permitAll()  // 로그인, 회원가입 관련 로직 허용
-                        //.requestMatchers("/**").permitAll()  // 테스트 중이라 경로 전부 허용
+                        //.requestMatchers("/api/auth/**").permitAll()  // 로그인, 회원가입 관련 로직 허용
+                        .requestMatchers("/**").permitAll()  // 테스트 중이라 경로 전부 허용
                         .anyRequest().authenticated()  // 나머지 요청은 인증 필요
                 )
                 .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
src/main/java/kr/co/takensoft/ai/system/common/idgen/context/ContextIdgen.java
--- src/main/java/kr/co/takensoft/ai/system/common/idgen/context/ContextIdgen.java
+++ src/main/java/kr/co/takensoft/ai/system/common/idgen/context/ContextIdgen.java
@@ -8,7 +8,7 @@
 public class ContextIdgen {
 
     // 회원(유저)정보
-    @Bean(name = "userIdgn")
+    @Bean(name = "memberIdgn")
     public IdgenService user() {
         IdgenService idgenServiceImpl = new IdgenService();
         idgenServiceImpl.setCipers(15);
src/main/resources/application.yml
--- src/main/resources/application.yml
+++ src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   datasource:
-    url: jdbc:postgresql://210.180.118.83:5432/vgpu?currentSchema=vgpu
+    url: jdbc:postgresql://210.180.118.83:5432/ai_system?currentSchema=ai_system
     username: takensoft
     password: tts96314728!@
     driver-class-name: org.postgresql.Driver
@@ -10,7 +10,7 @@
     refreshTime: 86400000   # 24시간 86400000
 
 # front url
-frontUrls: http://localhost:10900/
+frontUrls: http://localhost:10910/
 
 # port setting
 server:
src/main/resources/mybatis/mapper/auth/auth-SQL.xml
--- src/main/resources/mybatis/mapper/auth/auth-SQL.xml
+++ src/main/resources/mybatis/mapper/auth/auth-SQL.xml
@@ -1,5 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="kr.co.takensoft.ai.system.auth.dao.AuthDAO">
+    <!--
+        작 성 자 : 박민혁
+        작 성 일 : 2025.07.08
+        내    용 : 사용자 회원가입
+    -->
+    <insert id="memberRegister" parameterType="memberVO">
+        INSERT INTO member
+            (member_id,
+            login_id,
+            password,
+            email,
+            phone_number,
+            member_name,
+            created_at,
+            updated_at
+            )
+        VALUES (
+            #{memberId},
+            #{loginId},
+            #{password},
+            #{email},
+            #{phoneNumber},
+            #{memberName},
+            CURRENT_TIMESTAMP,
+            CURRENT_TIMESTAMP
+        )
+    </insert>
+
+
+    <!--
+        작 성 자 : 박민혁
+        작 성 일 : 2025.07.08
+        내    용 : 사용자 정보 찾기 (테스트용)
+    -->
+    <select id="findMemberId" >
+        select
+            member_id
+        from member
+    </select>
 
 </mapper>
(No newline at end of file)
Add a comment
List