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..cbd178d --- /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({ userId: '', password: '', passwordChk: '', userNm: '', email: '', phoneNum: ''}); + + function getModalContent(){ + EgovNet.requestFetch( + '/admin/users/info?userSeq='+userSeq, + { + method: "GET" + }, + (resp) => { + const respInfo = { + userId: 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, userId: 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 @@