기기 반납
Last updated
Last updated
기기 등록 이후 앱을 실행시키면 메인 페이지가 등장한다.
반납하기 버튼을 누르면, APP에서는 기기 등록 시에 서버로부터 받은 고유 시리얼 값을 기반으로 TOTP 값을 생성한다. TOTP 생성에 사용되는 시간은 오차를 고려하여 10초 단위로 나누어 사용한다. 그리고 기기 ID, 관리자 ID 정보와 함께 JSON 형태로 정리하여 이를 QR코드 이미지로 생성하여 화면에 보여준다. 이 QR코드 이미지는 10초 단위로 TOTP 값이 변경됨에 따라 갱신된다.
이 상태에서 기기를 반납기 안에 넣는다. 반납기는 무게 센서를 통해 스마트폰이 들어온 것을 감지하고 덮개를 닫는다. 덮개는 투명 소재로 되어 있어 QR코드 인식에 문제가 없다. 덮개를 닫은 뒤 10초를 기다리는데, 이는 새로운 TOTP 발급 시기를 기다리기 위함이다. 새로운 TOTP를 포함한 새로운 QR코드가 화면에 등장하면, 반납기는 카메라를 통해 QR코드를 인식하여 deviceID, adminID, TOTP 값을 추출한다. 그리고 서버의 api/totp/valid API를 통해 기기 ID, TOTP, 카메라로 사진을 찍은 시간을 전송한다.
서버에도 각 기기마다 부여된 고유 시리얼 값이 저장되어 있으므로, 해당 시리얼 값을 카메라로 찍은 시간으로 TOTP 값을 생성해본다. 이를 반납기에서 전송한 TOTP 값과 비교했을 때 일치한다면, 해당 기기는 등록한 기기가 맞다는 것을 확인할 수 있다. 만약 TOTP 인증에 성공했다면, 반납기는 기기 ID, 기기의 무게, 기기의 사진, 반납한 시간을 서버의 api/log/create API를 통해 서버에 기록한다. 이를 통해 관리자가 각 기기들의 반납 현황을 조회할 수 있다. 만약 TOTP 인증에 실패한다면 반납기는 덮개를 열고, 다시 반납 과정을 진행하도록 안내한다.
관리자 ID는 반납기 자신이 저장해 두었다가, 이후 사용자가 불출을 요청했을 때 서버의 api/soldier/return/time/valid API를 사용하여 지금이 관리자가 설정한 핸드폰 사용 가능 시간인지 확인한 뒤에 불출한다.