기능구현중

This commit is contained in:
2026-01-11 14:32:45 +09:00
parent 56fc4c3005
commit 0205e8d437
17 changed files with 1015 additions and 70 deletions

View File

@@ -161,10 +161,10 @@
<table class="table table-hover mb-0">
<thead class="table-light">
<tr>
<th style="width: 100px">로그인 방식</th>
<th style="width: 180px">로그인 시간</th>
<th style="width: 130px">로그인 IP</th>
<th style="width: 180px">로그아웃 시간</th>
<th style="width: 130px">로그아웃 IP</th>
<th style="width: 100px">상태</th>
</tr>
</thead>
@@ -178,10 +178,14 @@
<td colspan="5" class="text-center py-4 text-muted">로그인 이력이 없습니다.</td>
</tr>
<tr v-else v-for="h in loginHistory" :key="h.historyId">
<td>
<span v-if="h.loginType === 'GOOGLE'" class="badge bg-danger">Google</span>
<span v-else-if="h.loginType === 'SYNOLOGY'" class="badge bg-dark">Synology</span>
<span v-else class="badge bg-secondary">비밀번호</span>
</td>
<td>{{ formatDateTime(h.loginAt) }}</td>
<td><code>{{ h.loginIp || '-' }}</code></td>
<td>{{ h.logoutAt ? formatDateTime(h.logoutAt) : '-' }}</td>
<td><code>{{ h.logoutIp || '-' }}</code></td>
<td>
<span v-if="h.sessionStatus === 'logout'" class="badge bg-secondary">로그아웃</span>
<span v-else-if="h.isCurrentSession" class="badge bg-success">접속중</span>
@@ -195,6 +199,51 @@
</div>
</div>
<!-- 외부 계정 연결 -->
<div class="card mb-4">
<div class="card-header">
<strong><i class="bi bi-link-45deg me-2"></i>외부 계정 연결</strong>
</div>
<div class="card-body">
<div class="row">
<!-- Google 연결 -->
<div class="col-md-6 mb-3">
<div class="d-flex align-items-center justify-content-between p-3 border rounded">
<div class="d-flex align-items-center">
<svg class="me-3" width="24" height="24" viewBox="0 0 24 24"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>
<div>
<strong>Google</strong>
<div v-if="userInfo.googleEmail" class="small text-success">
<i class="bi bi-check-circle me-1"></i>{{ userInfo.googleEmail }}
</div>
<div v-else class="small text-muted">연결되지 않음</div>
</div>
</div>
<a v-if="!userInfo.googleEmail" href="/api/auth/google" class="btn btn-sm btn-outline-primary">연결</a>
<span v-else class="badge bg-success">연결됨</span>
</div>
</div>
<!-- Synology 연결 -->
<div class="col-md-6 mb-3">
<div class="d-flex align-items-center justify-content-between p-3 border rounded">
<div class="d-flex align-items-center">
<i class="bi bi-hdd-network fs-4 me-3 text-dark"></i>
<div>
<strong>Synology</strong>
<div v-if="userInfo.synologyEmail" class="small text-success">
<i class="bi bi-check-circle me-1"></i>{{ userInfo.synologyEmail }}
</div>
<div v-else class="small text-muted">연결되지 않음</div>
</div>
</div>
<a v-if="!userInfo.synologyEmail" href="/api/auth/synology" class="btn btn-sm btn-outline-dark">연결</a>
<span v-else class="badge bg-success">연결됨</span>
</div>
</div>
</div>
</div>
</div>
<!-- VCS 계정 설정 -->
<div class="card mb-4">
<div class="card-header d-flex justify-content-between align-items-center">