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}
+
{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 @@