# .env.dabory 와 Gate Token

제 2장 Rest Api의 구성([https://manual.dabory.com/books/frontend-tutorial/chapter/restfull-api](https://manual.dabory.com/books/quick-start/chapter/2-restfull-api))에서 Gate Token에 대한 내용을 다뤘으니 참조하시고 해당 장을 숙지하시면 이해하는데 도움이 됩니다.

####  **참고사항**

<div id="bkmrk---%5B-keypair%2Fpublicke">`- [ KeyPair/PublicKey 등을 를 생성하는 일반적인 PHP Code`]</div><div id="bkmrk-https%3A%2F%2Fwww.php.net%2F">[https://www.php.net/manual/en/function.sodium-crypto-box-seal.php](https://www.php.net/manual/en/function.sodium-crypto-box-seal.php)</div><div id="bkmrk---%5Bsodium-%EC%82%AC%EC%9A%A9-ajax-%EC%A0%9C%EA%B3%B5"><div><div>`- [Sodium 사용 Ajax 제공 (260~262 Lines)]`</div><div>[http://git.daboryhost.com:10880/dabory/dbrerp/src/master/routes/web.php](https://manual.dabory.com/-%20%5BSodium%20%EC%82%AC%EC%9A%A9%20Ajax%20%EC%A0%9C%EA%B3%B5%20(260~262%20Lines)%5D(http:/git.daboryhost.com:10880/dabory/dbrerp/src/master/routes/web.php).%20-%20%5B%20DB%20%EC%A0%95%EB%B3%B4%20%EC%95%94%ED%98%B8%ED%99%94%20how%20to%20use%20it%20in%20PHP%20(254~263%20Lines)%5D(http:/git.daboryhost.com:10880/dabory/dbrerp/src/master/resources/views/front/dabory/pro/my-app/popup/popup-form1/form-a/client-app-form.blade.php).)</div><div>`- [ DB 정보 암호화 how to use it in PHP (254~263 Lines)]`([http://git.daboryhost.com:10880/dabory/dbrerp/src/master/resources/views/front/dabory/pro/my-app/popup/popup-form1/form-a/client-app-form.blade.php)](http://git.daboryhost.com:10880/dabory/dbrerp/src/master/resources/views/front/dabory/pro/my-app/popup/popup-form1/form-a/client-app-form.blade.php)).</div><div></div></div></div>##### **dabory Gate Token(DGT)**

<div id="bkmrk-"><div></div></div><div id="bkmrk--1"></div>- 로그인한 유저가 유저페이지에 접근합니다.
- 백엔드 서버에서 `secret_key`와 `key_pair`를 통해서 해당 업체의 db를 생성합니다. (erp\_center\_db, erp\_memory\_db, erp\_individual\_dbs)
- 프론트엔드서버에 생성된 db를 제공합니다.(driver, host, username, database, passwd, public\_key) -&gt; client config
- 유저가 메뉴나 링크를 클릭합니다.

<span style="color: rgb(241, 196, 15);">\[DGT 생성과정 시작\]</span>

- 백엔드 api 서버에 DGT를 요청합니다.
- api 서버에서 프론트엔드에서 보낸 사용자의 client config를 통해 랜덤한 20자의 문자열을 생성하고 Sodium을 통해 암호화합니다.
- 백엔드에서 DGT를 생성하여 저장하고 status 200, DGT를 반환합니다.
- 프론트엔드에서 반환받은 DGT를 세션에 저장합니다.
- 만약 DGT가 존재하지 않는다면 DGT를 받아오는 과정이 생략됩니다.

<span style="color: rgb(241, 196, 15);">\[Main Request\]</span>

- 이제 프론트엔드에서 보낸 모든 요청에 DGT가 포함되어 요청합니다.

<span style="color: rgb(241, 196, 15);">\[DCS 생성과정 시작\]</span>

- 백엔드에서는 DGT를 통해 DCS를 생성하여 반환합니다.
- 만약 memory\_db에 저장된 DGT가 존재하지 않는다면 DCS를 받아오는 과정이 생략됩니다.
- 검증된 DCS를 통해 사용자 DB(erp databases)의 모델에 접근합니다.
- 사용자 db로부터 요청한 data를 얻고 반환합니다.

<span style="color: rgb(241, 196, 15);">\[요청 끝\]</span>