From babd8ac3e9f43c4406f0094dafb0cfae07d1d5bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Wed, 10 Jan 2024 16:38:38 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A4=91=EA=B0=84=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/admin/users/List.jsx | 25 ++- .../src/pages/admin/users/UserInfoModal.jsx | 143 ++++++++++++++++++ .../admin/users/AdminUsersController.java | 18 +++ .../users/service/AdminUsersService.java | 6 + .../kcscbackend/auth/entity/UserInfo.java | 18 ++- .../service/impl/EgovLoginServiceImpl.java | 3 + .../config/common/BoardParams.java | 3 + .../mybatisMapper/AdminUsersMapper.xml | 18 ++- 8 files changed, 216 insertions(+), 18 deletions(-) create mode 100644 egovframe-template-simple-react-contribution/src/pages/admin/users/UserInfoModal.jsx diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/users/List.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/users/List.jsx index c18ed81..8e63171 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/users/List.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/users/List.jsx @@ -6,6 +6,8 @@ import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; import EgovPaging from "components/EgovPaging"; import * as EgovNet from "api/egovFetch"; import {itemIdxByPage} from "utils/calc"; +import Modal from "react-bootstrap/Modal"; +import UserInfoModal from "./UserInfoModal"; function List(props) { @@ -19,6 +21,12 @@ function List(props) { const cndRef = useRef(); const wrdRef = useRef(); + const [show, setShow] = useState(false); + const [modalBody, setModalBody] = useState(); + + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); + const retrieveList = useCallback((searchCondition) => { const params = "?"; EgovNet.requestFetch( @@ -44,11 +52,11 @@ function List(props) { mutListTag.push(
{item.userSe}
-
{item.userId}
+
{userInfoModal(item.userSeq)}}>{item.userId}
{item.userNm}
{item.email}
{item.phoneNum}
-
{item.useYn}
+
{item.status}
); @@ -66,6 +74,11 @@ function List(props) { retrieveList(searchCondition); }, []); + function userInfoModal(userSeq){ + handleShow() + setModalBody() + } + return (
@@ -124,11 +137,6 @@ function List(props) { }}>조회 - {/*{masterBoard.bbsUseFlag === 'Y' && -
  • - 등록 -
  • - }*/}
    @@ -161,6 +169,9 @@ function List(props) {
    + + {modalBody} + ); } diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/users/UserInfoModal.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/users/UserInfoModal.jsx new file mode 100644 index 0000000..995434a --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/users/UserInfoModal.jsx @@ -0,0 +1,143 @@ +import React, {useEffect, useState} from "react" +import Modal from "react-bootstrap/Modal"; +import * as EgovNet from "../../../api/egovFetch"; +import Form from "react-bootstrap/Form"; +import Row from "react-bootstrap/Row"; +import Col from "react-bootstrap/Col"; +import Button from "react-bootstrap/Button"; + +function UserInfoModal({userSeq}){ + + const [userInfo, setUserInfo] = useState({ id: '', password: '', passwordChk: '', userNm: '', email: '', phoneNum: ''}); + + function getModalContent(){ + EgovNet.requestFetch( + '/admin/users/info?userSeq='+userSeq, + { + method: "GET" + }, + (resp) => { + const respInfo = { + id: resp.result.userInfo.userId, + userNm: resp.result.userInfo.userNm, + email: resp.result.userInfo.email, + phoneNum: resp.result.userInfo.phoneNum, + password: "", + passwordChk: "", + } + setUserInfo(respInfo); + }, + (resp) => { + console.log("err response : ", resp); + } + ); + } + + function userInfoChange(){ + + } + + useEffect(() => { + getModalContent(); + }, []); + + return ( + <> + + + {userInfo.userNm} 상세정보 + + + +
    + + + 아이디 + + + setUserInfo({ ...userInfo, id: e.target.value })}/> + + + + + 이름 + + + setUserInfo({ ...userInfo, userNm: e.target.value })}/> + + + + + 이메일 + + + setUserInfo({ ...userInfo, email: e.target.value })}/> + + + + + 연락처 + + + setUserInfo({ ...userInfo, phoneNum: e.target.value })}/> + + + + + 비밀번호 + + + setUserInfo({ ...userInfo, password: e.target.value })}/> + + + + + 비밀번호 확인 + + + setUserInfo({ ...userInfo, passwordChk: e.target.value })}/> + + + + + 사용자 유형 + + + + + + + + 사용자 권한 + + + + + + + + 상태 + + + + + + + + + + + +
    +
    + + ) +} + +export default UserInfoModal; \ No newline at end of file diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/AdminUsersController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/AdminUsersController.java index c59940c..1c4247e 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/AdminUsersController.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/AdminUsersController.java @@ -47,4 +47,22 @@ public class AdminUsersController extends BaseController { return resultVO; } + @Operation( + summary = "사용자 정보 조회", + description = "사용자 정보 조회", + tags = {"AdminUsersController"} + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "조회 성공"), + @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") + }) + @RequestMapping(method = RequestMethod.GET, value = "/info") + public ResultVO getUserInfo(UserInfo params) throws Exception{ + ResultVO resultVO = new ResultVO(); + Map resultMap = new HashMap<>(); + resultMap.put("userInfo", adminUsersService.selectUserInfo(params.getUserSeq())); + resultVO.setResult(resultMap); + return resultVO; + } + } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/service/AdminUsersService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/service/AdminUsersService.java index 43ef4f9..ec0f721 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/service/AdminUsersService.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/users/service/AdminUsersService.java @@ -22,4 +22,10 @@ public class AdminUsersService { public Integer selectUserListCnt(UserInfo params) { return usersMapper.selectUserListCnt(params); } + + public UserInfo selectUserInfo(Integer userSeq) { + UserInfo info = userInfoRepository.findById(userSeq).orElse(new UserInfo()); + info.setPassword(null); + return info; + } } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/entity/UserInfo.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/entity/UserInfo.java index e7711f1..869c47e 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/entity/UserInfo.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/entity/UserInfo.java @@ -7,11 +7,14 @@ import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -42,8 +45,16 @@ public class UserInfo extends BoardParams implements UserDetails{ private String phoneNum; @Column(name = "user_role") private String userRole; - @Column(name = "use_yn") - private String useYn; + @Column(name = "status") + private String status; + @Column(name = "frst_crt_dt") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime frstCrtDt; + @Column(name = "last_chg_id") + private String lastChgId; + @Column(name = "last_chg_dt") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastChgDt; @Override @JsonIgnore @@ -76,8 +87,9 @@ public class UserInfo extends BoardParams implements UserDetails{ } @Override + @JsonIgnore public boolean isEnabled() { - return true; + return getStatus().equals("USE_ST"); } } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/service/impl/EgovLoginServiceImpl.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/service/impl/EgovLoginServiceImpl.java index b14d544..07d27aa 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/service/impl/EgovLoginServiceImpl.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/auth/service/impl/EgovLoginServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.Random; /** @@ -63,6 +64,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements Ego info.setEmail(loginVO.getEmail()); info.setPhoneNum(loginVO.getPhoneNum()); info.setUserSe("ACC_TP02"); + info.setStatus("USE_ST"); + info.setFrstCrtDt(LocalDateTime.now()); userInfoRepository.save(info); return info.getUserSeq(); } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/common/BoardParams.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/common/BoardParams.java index 1113fac..2737e54 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/common/BoardParams.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/common/BoardParams.java @@ -1,5 +1,6 @@ package com.dbnt.kcscbackend.config.common; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; @@ -39,9 +40,11 @@ public class BoardParams implements Serializable { @Schema(description = "정렬순서(DESC,ASC)") private long sortOrdr = 0L; + @JsonIgnore public void setQueryInfo(){ setFirstIndex((getPageIndex()-1)*getRowCnt()); } + @JsonIgnore public void setPaginationInfo(){ int contentCnt = getContentCnt(); int rowCnt = getRowCnt(); diff --git a/kcsc-back-end/src/main/resources/mybatisMapper/AdminUsersMapper.xml b/kcsc-back-end/src/main/resources/mybatisMapper/AdminUsersMapper.xml index 42d1aac..b6c4ac2 100644 --- a/kcsc-back-end/src/main/resources/mybatisMapper/AdminUsersMapper.xml +++ b/kcsc-back-end/src/main/resources/mybatisMapper/AdminUsersMapper.xml @@ -5,14 +5,16 @@