Browse Source

fix: add HTTPS requirement check for camera access

- Check for secure context before attempting camera access
- Show clear user feedback when HTTPS is required
- Prevent confusing permission errors on insecure connections
pull/132/head
Matthew Raymer 5 days ago
parent
commit
c6c49260ef
  1. 6
      src/services/QRScanner/WebDialogQRScanner.ts
  2. 13
      src/views/ContactQRScanShowView.vue

6
src/services/QRScanner/WebDialogQRScanner.ts

@ -41,6 +41,12 @@ export class WebDialogQRScanner implements QRScannerService {
}
async isSupported(): Promise<boolean> {
// Check for secure context first
if (!window.isSecureContext) {
logger.warn("Camera access requires HTTPS (secure context)");
return false;
}
// Then check for camera API support
return !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);
}

13
src/views/ContactQRScanShowView.vue

@ -214,6 +214,19 @@ export default class ContactQRScanShow extends Vue {
const scanner = QRScannerFactory.getInstance();
// Check if scanning is supported first
if (!(await scanner.isSupported())) {
this.error = "Camera access requires HTTPS. Please use a secure connection.";
this.isScanning = false;
this.$notify({
group: "alert",
type: "warning",
title: "HTTPS Required",
text: "Camera access requires a secure (HTTPS) connection"
}, 5000);
return;
}
// Check permissions first
if (!(await scanner.checkPermissions())) {
const granted = await scanner.requestPermissions();

Loading…
Cancel
Save