feat: MFA/2FA, OTP audit logs, KYC + client/user enhancements
- Access Control module: SMS/Email/TOTP/Hardware-token MFA factor management - OTP Audit Logs module under Admin menu (list + detail) with 401/403 handling - Two-factor authentication login flow updates - Client KYC, India address, family-members, ckyc, nominee enhancements - New shared KYC helpers (kyc-proof-types, kyc-upload-helper.service) - User create/edit/view enhancements - Shell navigation: OTP Audit Logs entry under real Admin menu
This commit is contained in:
@@ -77,6 +77,74 @@
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- KYC Verification Status (Aadhaar + PAN) -->
|
||||
<div class="kyc-status-card" [class.kyc-status-card--complete]="kycComplete">
|
||||
<div class="kyc-status-card__head">
|
||||
<div class="kyc-status-card__title">
|
||||
<fa-icon [icon]="kycComplete ? 'shield-alt' : 'user-shield'" class="kyc-status-card__icon"></fa-icon>
|
||||
<span>KYC Verification</span>
|
||||
</div>
|
||||
@if (kycComplete) {
|
||||
<span class="kyc-status-card__badge kyc-status-card__badge--ok">
|
||||
<fa-icon icon="check-circle"></fa-icon>
|
||||
KYC Done
|
||||
</span>
|
||||
} @else if (panVerified || aadhaarVerified) {
|
||||
<span class="kyc-status-card__badge kyc-status-card__badge--partial">
|
||||
<fa-icon icon="clock"></fa-icon>
|
||||
Partially Verified
|
||||
</span>
|
||||
} @else {
|
||||
<span class="kyc-status-card__badge kyc-status-card__badge--pending">
|
||||
<fa-icon icon="exclamation-circle"></fa-icon>
|
||||
Not Verified
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="kyc-status-card__body">
|
||||
<div class="kyc-status-row">
|
||||
<div class="kyc-status-row__label">
|
||||
<fa-icon icon="id-card"></fa-icon>
|
||||
<span>PAN</span>
|
||||
</div>
|
||||
@if (panVerified) {
|
||||
<div class="kyc-status-row__value">
|
||||
<span class="kyc-status-row__id">{{ panNumber || '—' }}</span>
|
||||
@if (panHolderName) {
|
||||
<span class="kyc-status-row__name">{{ panHolderName }}</span>
|
||||
}
|
||||
</div>
|
||||
<span class="kyc-pill kyc-pill--ok"><fa-icon icon="check-circle"></fa-icon> Verified</span>
|
||||
} @else {
|
||||
<span class="kyc-status-row__value kyc-status-row__value--missing">{{ panNumber || 'Not provided' }}</span>
|
||||
<span class="kyc-pill kyc-pill--pending"><fa-icon icon="times-circle"></fa-icon> Pending</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="kyc-status-row">
|
||||
<div class="kyc-status-row__label">
|
||||
<fa-icon icon="fingerprint"></fa-icon>
|
||||
<span>Aadhaar</span>
|
||||
</div>
|
||||
@if (aadhaarVerified) {
|
||||
<div class="kyc-status-row__value">
|
||||
<span class="kyc-status-row__id">{{ aadhaarMasked || '—' }}</span>
|
||||
@if (aadhaarHolderName) {
|
||||
<span class="kyc-status-row__name">{{ aadhaarHolderName }}</span>
|
||||
}
|
||||
</div>
|
||||
<span class="kyc-pill kyc-pill--ok"><fa-icon icon="check-circle"></fa-icon> Verified</span>
|
||||
} @else {
|
||||
<span class="kyc-status-row__value kyc-status-row__value--missing">{{
|
||||
aadhaarMasked || 'Not provided'
|
||||
}}</span>
|
||||
<span class="kyc-pill kyc-pill--pending"><fa-icon icon="times-circle"></fa-icon> Pending</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Client basic info -->
|
||||
<div class="ckyc-info-grid">
|
||||
<div class="ckyc-info-item">
|
||||
|
||||
Reference in New Issue
Block a user