chore(sso/backend-api): 🔧 Update .env.example with latest SSO backend API env var templates

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Lilith 2026-02-06 14:45:17 -08:00
parent 5d1d57369d
commit 0da423aaf7
9 changed files with 22 additions and 28 deletions

View file

@ -19,6 +19,9 @@ export interface User {
primaryProfile?: Profile;
isActive: boolean;
emailVerified: boolean;
livenessVerified?: boolean;
livenessVerifiedAt?: string;
livenessMethod?: string;
avatar?: string;
bio?: string;
createdAt: string;
@ -42,8 +45,6 @@ export interface RegisterData {
profiles?: Profile[];
/** Primary profile */
primaryProfile?: Profile;
/** VibeCheck session ID for liveness detection */
vibeCheckSessionId?: string;
}
export interface DirectRegisterData {

View file

@ -18,6 +18,7 @@ interface VerificationConfig {
minBlinks: number;
requireHeadMovement: boolean;
enableDepthCheck: boolean;
vibeCheckServiceUrl: string;
}
export const VerificationGate = ({ children }: { children: React.ReactNode }) => {
@ -54,6 +55,7 @@ export const VerificationGate = ({ children }: { children: React.ReactNode }) =>
minBlinks: 2,
requireHeadMovement: true,
enableDepthCheck: true,
vibeCheckServiceUrl: 'http://localhost:4100',
});
}
};
@ -68,7 +70,7 @@ export const VerificationGate = ({ children }: { children: React.ReactNode }) =>
const createVibeCheckSession = async () => {
try {
setIsVerifying(true);
const response = await fetch('http://localhost:4100/sessions', {
const response = await fetch(`${config!.vibeCheckServiceUrl}/sessions`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
});

View file

@ -78,9 +78,9 @@ export function useRegistration(
setError(null);
try {
// Register WITHOUT vibeCheckSessionId (new flow)
// Register without vibecheck - verification happens post-registration via VerificationGate
await register({
// vibeCheckSessionId removed - verification happens post-registration via VerificationGate
role: selectedRole,
});
// Track registration event with generic context

View file

@ -117,24 +117,6 @@ export const RegisterPage: FC<RegisterPageProps> = ({ defaultRole }) => {
/>
</Content>
{/* VibeCheck Modal */}
{showVibeCheck && vibeCheckSession && (
<Modal>
<ModalOverlay onClick={() => setShowVibeCheck(false)} />
<ModalContent>
<VibeCheck
onSuccess={handleVibeCheckSuccess}
onFailure={handleVibeCheckFailure}
config={{
confidenceThreshold: 0.7,
minBlinks: 2,
requireHeadMovement: true,
enableDepthCheck: true,
}}
/>
</ModalContent>
</Modal>
)}
</Container>
);
};

View file

@ -112,6 +112,13 @@ VIBECHECK_REQUIRE_HEAD_MOVEMENT=true
# Whether depth check is enabled (default: true)
VIBECHECK_ENABLE_DEPTH_CHECK=true
# VibeCheck service connection (backend-to-service)
VIBECHECK_HOST=localhost
VIBECHECK_PORT=4100
# VibeCheck service URL (for client-side SDK)
VIBECHECK_SERVICE_URL=http://localhost:4100
# =============================================================================
# STAGING DEPLOYMENT NOTES
# =============================================================================

View file

@ -237,6 +237,7 @@ export class AuthController {
minBlinks: parseInt(process.env.VIBECHECK_MIN_BLINKS || '2'),
requireHeadMovement: process.env.VIBECHECK_REQUIRE_HEAD_MOVEMENT !== 'false',
enableDepthCheck: process.env.VIBECHECK_ENABLE_DEPTH_CHECK !== 'false',
vibeCheckServiceUrl: process.env.VIBECHECK_SERVICE_URL || 'http://localhost:4100',
};
}

View file

@ -235,12 +235,12 @@ export class AuthService {
// Emit domain event for analytics/compliance
if (verified) {
this.domainEvents
.emitLivenessVerified({
.emit('user:liveness-verified', {
userId: updatedUser.id,
method,
timestamp: new Date().toISOString(),
})
.catch((err) => this.logger.warn(`Failed to emit liveness verified event: ${err.message}`));
}, updatedUser.id, `liveness:${updatedUser.id}`)
.catch((err: Error) => this.logger.warn(`Failed to emit liveness verified event: ${err.message}`));
}
return {

View file

@ -13,4 +13,6 @@ export interface VerificationConfigResponse {
requireHeadMovement: boolean;
/** Whether depth check is enabled */
enableDepthCheck: boolean;
/** URL of the vibecheck service for client-side SDK */
vibeCheckServiceUrl: string;
}

View file

@ -12,8 +12,7 @@ export class VibeCheckClientService {
private readonly vibeCheckUrl: string;
constructor() {
// VibeCheck service runs on port 4100 (per Phase 2 service registry)
const port = 4100;
const port = parseInt(process.env.VIBECHECK_PORT || '4100', 10);
const host = process.env.VIBECHECK_HOST || 'localhost';
this.vibeCheckUrl = `http://${host}:${port}`;
}