---
# System prepended metadata

title: GPMS Web-admin frontend 분석

---

# GPMS Web-admin frontend 분석

## 라이브러리 

react: 16.8.6 (hook 지원 O)
redux: 4.0.0
redux-thunk: 2.3.0
materil-ui/core: 3.9.3

## 특징
 - 그냥 js 사용 (typesiprt X)
 - 전역 state 관리로 redux 사용
 - class 형 Component 사용함.

## src 폴더 구성

### View Component

*  /components
    * gpms 에서 공통으로 쓰는 컴포넌트 모아놓은 곳 같음
    * tree, dialog, rule card
* /containers
    * gpms 레이아웃 컴포넌트들 (왜 Dashboard 가 있는지는 모르겠음)
    * Header, BreadCrumb, Footer 등으로 구성 되어 있음.
* /views
    * gpms 를 구성하는 view 들
    * Admin, Client, Rules, User 등등
    
### Redux 
* /modules
    * redux 의 dispatch, action...등등

### 기타
* /lib
    * npm 에서 받은 라이브러리 custom 해놓은 곳 같음.
    * nivo, react-form-validator-core, react-material-ui-form-validator
* /scss
    * scss 파일들
* /templates
    * gpms 에서 사용하는 style 들 모아놓은 곳.
* /ui
    * gpms 에서 쓰는 string 파일들과 material-ui 의 custom theme 파일
    * i18n.js, GRTheme.json

## Gpms 의 Redux

비동기 작업 처리시 redux-thunk 를 사용


index.js -> store.js -> modules/index.js


## Gpms 의 Css (Material-ui)


## rest api

### Dashboard

1) readViolatedClientCount
- Request URL: https://test-gpms.gooroom.kr/gpms/readViolatedClientCount
- Request Method: POST
- 다른 페이지로 이동해도 주기적으로 호출됨
- Admin Module 을 통해 호출됨. response로 violatedCount, dupLoginIp, dupLoginDate 를 받는 것으로 보임
- 동일한 계정으로 admin 로그인 했는지 주기적으로 확인하는 콜로 보임. (GRAlarmInform.js 참고)

2) readClientStatusForDashboard
- Request URL: https://test-gpms.gooroom.kr/gpms/readClientStatusForDashboard
- Request Method: POST
- 대시보드 가장 상위 status 반원 그래프 용

3) readClientListPaged
- Online Client List 새로고침 시 또는 오른쪽 라디오 버튼 선택 시 호출됨
- Request URL: https://test-gpms.gooroom.kr/gpms/readClientListPaged
- Request Method: POST
- Form Data:
```
clientType: ONLINE
viewType: all
keyword: 
page: 0
start: 0
length: 10
orderColumn: CLIENTNM
orderDir: asc*
```

### ClientMng

#### 페이지 진입 시

아래 4개의 콜 호출

1) readChildrenClientGroupList
- Request URL: https://test-gpms.gooroom.kr/gpms/readChildrenClientGroupList
- Request Method: POST
- Form Data
    ```
    grpId: 0
    hasWithRoot: N
    ```

2) readClientListPaged
- Request URL: https://test-gpms.gooroom.kr/gpms/readClientListPaged
- Request Method: POST
- Form Data
    ```
    clientType: ALL
    groupId: 
    keyword: 
    page: 0
    start: 0
    length: 10
    orderColumn: CLIENT_NM
    orderDir: desc
    ```

3) readThemeList
- Request URL: https://test-gpms.gooroom.kr/gpms/readThemeList
- Request Method: POST

4) readCurrentAdminUserData
- Request URL: https://test-gpms.gooroom.kr/gpms/readCurrentAdminUserData
- Request Method: POST



#### table 내 client click 시 (Client 상세 정보 알아오는 콜)

아래 2개 콜 호출
 
 
1) readClientGroupData
- Request URL: https://test-gpms.gooroom.kr/gpms/readClientGroupData
- Request Method: POST
- From data
    ```
    groupId: CGRPDEFAULT
    ```

2) readAllClientRuleByGroupId
- Request URL: https://test-gpms.gooroom.kr/gpms/readAllClientRuleByGroupId
- Request Method: POST
- From data
    ```
    groupId: CGRPDEFAULT
    ```


#### Delete Client From Group 버튼 클릭 시
- removeClientsInGroup
- Request URL: https://test-gpms.gooroom.kr/gpms/removeClientsInGroup
- Request Method: POST


#### Revoke Client 버튼 클릭 시
- deleteClientsCertToRevoke
- Request URL: https://test-gpms.gooroom.kr/gpms/deleteClientsCertToRevoke
- Request Method: POST


### UserMng

#### 페이지 진입시 아래 3개 콜 호출

1) readChildrenDeptList
- Request URL: https://test-gpms.gooroom.kr/gpms/readChildrenDeptList
- Request Method: POST
- Form Data
    ```
    deptCd: 0
    hasWithRoot: N
    ```

2) readUserListPagedInDept
- Request URL: https://test-gpms.gooroom.kr/gpms/readUserListPagedInDept
- Request Method: POST
- Form Data
    ```
    status: STAT010
    deptCd: 
    keyword: 
    page: 0
    start: 0
    length: 10
    orderColumn: chUserNm
    orderDir: asc
    ```

3) readThemeList
- Request URL: https://test-gpms.gooroom.kr/gpms/readThemeList
- Request Method: POST

#### table 내 user click 시 (User 상세 정보 알아오는 콜)
- Request URL: https://test-gpms.gooroom.kr/gpms/readAllClientUseRuleByUserId
- Request Method: POST
- Form data
    ```
    userId: test1
    ```
#### User 정보 수정시
- Request URL: https://test-gpms.gooroom.kr/gpms/updateUserData
- Request Method: POST
- Form Data
    ```
    userId: agent2
    userPasswd: 
    userNm: agent2
    userEmail: a@a.com
    isChangePasswd: N
    passwordExpireDate: 
    expireDate: 
    ```
    
#### User 생성 시
- Request URL: https://test-gpms.gooroom.kr/gpms/createUserWithRule
- Request Method: POST
- Form Data
    ```
    userId: eun_test
    userPasswd: 4b997a01d1665dc66707b0487b66a5f9953b55ee836e79fbab91c969c8e8a755
    userNm: eun_test
    userEmail: eun_test@tmax.co.kr
    deptCd: DEPTDEFAULT
    isChangePasswd: Y
    passwordExpireDate: 
    expireDate: 
    browserRuleId: 
    mediaRuleId: 
    securityRuleId: 
    filteredSoftwareRuleId: 
    ctrlCenterItemRuleId: 
    policyKitRuleId: 
    desktopConfId:
    ```

### User 삭제 시
- Request URL: https://test-gpms.gooroom.kr/gpms/deleteUserData
- Request Method: POST
- Form Data
    ```
    userId: eun_test
    ```

### User 생성/삭제 후 

readDeptNodeList / readUserListPagedInDept / readChildrenDeptList 호출

1) readDeptNodeList
- Request URL: https://test-gpms.gooroom.kr/gpms/readDeptNodeList
- Request Method: POST
- Form data
    ```
    deptCds[]: DEPTDEFAULT
    ```
- 왼쪽 tree data 들 얻어오는 call 인듯 (DeptModule.js 참고)