passkey.component.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <nz-card nzTitle="Passkey 管理">
  2. <div nz-row [nzGutter]="24">
  3. <div nz-col [nzSpan]="24">
  4. <div class="mb-md">
  5. <p class="text-grey">Passkey 是一种更安全、更便捷的登录方式,使用您的设备生物识别或 PIN 码进行身份验证。</p>
  6. </div>
  7. <div class="mb-lg">
  8. <button
  9. nz-button
  10. nzType="primary"
  11. nzSize="large"
  12. [nzLoading]="loading"
  13. (click)="registerPasskey()">
  14. <i nz-icon nzType="plus-circle" nzTheme="outline"></i>
  15. 注册新的 Passkey
  16. </button>
  17. </div>
  18. <nz-divider nzText="已注册的 Passkey"></nz-divider>
  19. <nz-table #basicTable [nzData]="passkeyList" [nzShowPagination]="false">
  20. <thead>
  21. <tr>
  22. <th>凭证信息</th>
  23. <th>签名统计</th>
  24. <th>创建时间</th>
  25. <th>最近访问时间</th>
  26. <th>操作</th>
  27. </tr>
  28. </thead>
  29. <tbody>
  30. <tr *ngFor="let item of passkeyList; let i = index">
  31. <td>
  32. <div class="credential-info">
  33. <div class="credential-id">{{ item.credentialId || item.id }}</div>
  34. <div class="device-type">{{ item.deviceType === 'platform' ? '平台认证器' : '跨平台认证器' }}</div>
  35. </div>
  36. </td>
  37. <td>{{ item.signatureCount || 0 }}</td>
  38. <td>{{ item.createdDate | date:'yyyy-MM-dd HH:mm:ss' }}</td>
  39. <td>{{ item.lastUsedDate | date:'yyyy-MM-dd HH:mm:ss' }}</td>
  40. <td>
  41. <button nz-button nzType="link" nzDanger nzSize="small" (click)="confirmDeletePasskey(item.credentialId || item.id)">
  42. 删除 passkey
  43. </button>
  44. </td>
  45. </tr>
  46. </tbody>
  47. </nz-table>
  48. </div>
  49. </div>
  50. </nz-card>