From 2aabd443e1c3606c0ab1b3809430d43d1ab9cd38 Mon Sep 17 00:00:00 2001 From: Ryan Breen Date: Mon, 6 Feb 2023 00:06:27 -0500 Subject: [PATCH] Run some sanity checks/validations on the private key input. Cannot save it unless the field is valid. --- Shared (Extension)/Resources/options.css | 2 +- Shared (Extension)/Resources/options.html | 5 +++-- Shared (Extension)/Resources/options.js | 11 +++++++++++ Shared (Extension)/Resources/utils.js | 7 +++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Shared (Extension)/Resources/options.css b/Shared (Extension)/Resources/options.css index 7d06e0f..7ba31fa 100644 --- a/Shared (Extension)/Resources/options.css +++ b/Shared (Extension)/Resources/options.css @@ -16,7 +16,7 @@ @apply bg-fuchsia-200 text-fuchsia-800 disabled:bg-gray-200 disabled:text-black focus:border-fuchsia-800; /* Sizing and padding */ - @apply rounded-lg p-1.5 lg:p-1.5 w-full md:w-64; + @apply rounded-lg p-1.5 lg:p-1.5 w-full md:w-64; } .checkbox { diff --git a/Shared (Extension)/Resources/options.html b/Shared (Extension)/Resources/options.html index b520413..bf5e9fe 100644 --- a/Shared (Extension)/Resources/options.html +++ b/Shared (Extension)/Resources/options.html @@ -42,7 +42,8 @@

- +
@@ -52,7 +53,7 @@
- +
diff --git a/Shared (Extension)/Resources/options.js b/Shared (Extension)/Resources/options.js index 8e34260..e459118 100644 --- a/Shared (Extension)/Resources/options.js +++ b/Shared (Extension)/Resources/options.js @@ -15,6 +15,7 @@ import { setPermission, KINDS, humanPermission, + validateKey, } from './utils'; const log = console.log; @@ -258,6 +259,16 @@ Alpine.data('options', () => ({ this.profileName !== this.pristineProfileName ); }, + + get validKey() { + return validateKey(this.privKey); + }, + + get validKeyClass() { + return this.validKey + ? '' + : 'ring-2 ring-rose-500 focus:ring-2 focus:ring-rose-500 border-transparent focus:border-transparent'; + }, })); Alpine.start(); diff --git a/Shared (Extension)/Resources/utils.js b/Shared (Extension)/Resources/utils.js index 2a1a458..94fb2c0 100644 --- a/Shared (Extension)/Resources/utils.js +++ b/Shared (Extension)/Resources/utils.js @@ -206,3 +206,10 @@ export function humanPermission(p) { return 'Unknown'; } } + +export function validateKey(key) { + const hexMatch = /^[\da-f]{64}$/i.test(key); + const b32Match = /^nsec1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{58}$/.test(key); + + return hexMatch || b32Match; +}