TK-FB(공장관리+신고)와 M-Project(부적합관리)를 3개 독립 시스템으로 분리하기 위한 전체 코드 구조 작성. - SSO 인증 서비스 (bcrypt + pbkdf2 이중 해시 지원) - System 1: 공장관리 (TK-FB 기반, 신고 코드 제거) - System 2: 신고 (TK-FB에서 workIssue 코드 추출) - System 3: 부적합관리 (M-Project 기반) - Gateway 포털 (path-based 라우팅) - 통합 docker-compose.yml 및 배포 스크립트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
59 lines
2.0 KiB
HTML
59 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>API 테스트</title>
|
|
</head>
|
|
<body>
|
|
<h1>API 테스트 페이지</h1>
|
|
<button onclick="testLogin()">로그인 테스트</button>
|
|
<button onclick="testUsers()">사용자 목록 테스트</button>
|
|
<div id="result"></div>
|
|
|
|
<script>
|
|
let token = null;
|
|
|
|
async function testLogin() {
|
|
try {
|
|
const formData = new URLSearchParams();
|
|
formData.append('username', 'hyungi');
|
|
formData.append('password', '123456');
|
|
|
|
const response = await fetch('http://localhost:16080/api/auth/login', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
},
|
|
body: formData.toString()
|
|
});
|
|
|
|
const data = await response.json();
|
|
token = data.access_token;
|
|
document.getElementById('result').innerHTML = `<pre>로그인 성공: ${JSON.stringify(data, null, 2)}</pre>`;
|
|
} catch (error) {
|
|
document.getElementById('result').innerHTML = `<pre>로그인 실패: ${error.message}</pre>`;
|
|
}
|
|
}
|
|
|
|
async function testUsers() {
|
|
if (!token) {
|
|
alert('먼저 로그인하세요');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const response = await fetch('http://localhost:16080/api/auth/users', {
|
|
headers: {
|
|
'Authorization': `Bearer ${token}`
|
|
}
|
|
});
|
|
|
|
const data = await response.json();
|
|
document.getElementById('result').innerHTML = `<pre>사용자 목록: ${JSON.stringify(data, null, 2)}</pre>`;
|
|
} catch (error) {
|
|
document.getElementById('result').innerHTML = `<pre>사용자 목록 실패: ${error.message}</pre>`;
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|