diff --git a/frontend/vue-app/cert.pem b/frontend/vue-app/cert.pem new file mode 100644 index 0000000..a83bd93 --- /dev/null +++ b/frontend/vue-app/cert.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEUzCCArugAwIBAgIRALRJa2ilQ8v+EFymYZzq1QwwDQYJKoZIhvcNAQELBQAw +gYUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEtMCsGA1UECwwkREVT +S1RPUC1BVTkwRzZKXFJ5YW5AREVTS1RPUC1BVTkwRzZKMTQwMgYDVQQDDCtta2Nl +cnQgREVTS1RPUC1BVTkwRzZKXFJ5YW5AREVTS1RPUC1BVTkwRzZKMB4XDTI2MDQy +MDE3NDgxMloXDTI4MDcyMDE3NDgxMlowWDEnMCUGA1UEChMebWtjZXJ0IGRldmVs +b3BtZW50IGNlcnRpZmljYXRlMS0wKwYDVQQLDCRERVNLVE9QLUFVOTBHNkpcUnlh +bkBERVNLVE9QLUFVOTBHNkowggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDSijE/wk+T6UtHD14HGMJmuHxAxkPh8NQvt6lLwdz5MlhK4U6UhOtpWSFlbWtb +ba7EmlMITSSQz1+iIklLe5M0fCFjkRd+yzl87vr2p9WipwFTgt9geYr4xnvWdrZs +MGWhOVeAyohqURSbALCJ3YzTGylG/z/HUmFM/c11owZUs6GwgB+7/dtdn00I828p +bDFgod5R662dkN3V1SgRIEqyX0h9NvliQt61HmxJLYGQa/gbp2QWPYEiH6na1qnh +2haEfw3oSX1r/cQb1NtRFUSuSYl8H6X2b58JlksfJzsFuwUzEcm9zDSKnjdiyj3a +m78U7iucH9ZFQoGq9uYN+ccdAgMBAAGjajBoMA4GA1UdDwEB/wQEAwIFoDATBgNV +HSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBTHXLAyWx5zwtrc7Q87br5QC813 +CTAgBgNVHREEGTAXgglsb2NhbGhvc3SHBH8AAAGHBMCoAWYwDQYJKoZIhvcNAQEL +BQADggGBAIbnwtzqhJykQNs5VWqjZk064gpM1aVg2ADXN5zo556WVccHVkOIkRtf +PVMjFDytZvjdtQMcMbaSLbB+TXCtToACe55TQh6b6ekM+KQPs1DIbjNJA8AP3w1y +oocgl37Cxhk8GJDYFjwD6ahGmWmo4Fcv5EVL2XMFVVZsUiKZixpyNPJUkqReesuV +HJgII++9Ho7+P7dxmD+MutF9qV3flpoSSz7Mboz8RQbsHgxwWaNwAuULRt5v9TWc +yJL9UA8xXIOanfRjkrydybjGg4m8t+In7ELcetQ0N+ONr4u+Ym/Ip9YqqUFVBZuX +sFIn39k9NDoDZbnIyET7H1qGWinTPCNKXfbTCp9DQ/QlbNJPLoadK2nMQ2Qf7D2P +eQO1W151co4LE5ckUE5lZChqCvykPL5JwUsGp0ZX633kzqQC4pCZFi02EhdfpQC+ +ZWRRoi3WwAY7pEZcLeAOd1ys1U684OsoC2YV8O22B9QT2MfGdkE+zpVHu+dyEk9f +Tu6d0+4QkA== +-----END CERTIFICATE----- diff --git a/frontend/vue-app/key.pem b/frontend/vue-app/key.pem new file mode 100644 index 0000000..dd1b3db --- /dev/null +++ b/frontend/vue-app/key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSijE/wk+T6UtH +D14HGMJmuHxAxkPh8NQvt6lLwdz5MlhK4U6UhOtpWSFlbWtbba7EmlMITSSQz1+i +IklLe5M0fCFjkRd+yzl87vr2p9WipwFTgt9geYr4xnvWdrZsMGWhOVeAyohqURSb +ALCJ3YzTGylG/z/HUmFM/c11owZUs6GwgB+7/dtdn00I828pbDFgod5R662dkN3V +1SgRIEqyX0h9NvliQt61HmxJLYGQa/gbp2QWPYEiH6na1qnh2haEfw3oSX1r/cQb +1NtRFUSuSYl8H6X2b58JlksfJzsFuwUzEcm9zDSKnjdiyj3am78U7iucH9ZFQoGq +9uYN+ccdAgMBAAECggEBAIeU7ro8i7qY1h1gzBCN5UL5MysTgsuRp1NDVwauRXtE +7I7sIQqLvn4NI/CJUkWCkLWTHD2QUCfhI5jps4GkhtuZxHa2DQdeIBtQWtVUp8Mj +ATuiX+9k1hX22/D0ae2qDQiSQMNzqf2tUTOwcf+WaQXZy+8omQ3nAznth85lucH4 +8MwMQKqnFdwGId5HrD+zMskf66tGsTLynHJI+rGEz/k+OJMzpONycFNB7evH6Ktx +1zonWpaj/P8sD/81l36FjM3PvDImG5T/OjEy18xe01dYTtrruqnhH/XZzFT5IMQm +Jek4b9rjet9YHQo1Ylpnok37MP5RigBiUf5WD3F5joECgYEA4HT1dhQSUfTxd960 +BZKrWr/bXCbFz1arkyIwYV6IIiBnGLp5gvB/RoYrqfytH3Q6YR825WLKNHZggr/c +TgVTfhlTRGjD6oOoVjvQl3fIdiOXuPB1bVRgMV/llUf5YFv9Z7hbUZWxuszDDjg5 +pggG2PKL5K6B1WOQ8HTNNQHQ1ZkCgYEA8CCOAbagAKrea5HLFG3fkI3h31f+/vML +JVr6Rf2xEVBM2pB3MjjYzULB7zlGJijw3SevVPTS5fhjLSa8ZhNUbGKN6085ZsdF +M7zzQCQvLu0I+oaBZqy2ip1tPuLRCYgYJw4Slv/IPLogL9+BHBs2m7Wm4ATrLrP0 +qiA0VRGjKCUCgYAkiWVbbzD8Pk8AIDRVo+ZYw1pFydnxQj5zmOEfOHAYfgXKNLCK +6/ML29NHvGXB9P17ycT52fboS0yye+C0opFQuXagcB1UE1JXly0BOvJaqLiN1jaH +MXDnGKEah7jEQrUhKRVUVnWz3pjxu51GtY/HyNOUygNAZRC204yD0GPaIQKBgAuZ +pwKSLfyaRJBxxJvCCxDSqdy+RYVPfHRbhsemz80EUhIk9H0qnd6coP3LiIYDaE9m +wWObSCzv6Oqfem579JIf2LdLZnx+l+s974pjtRvRO6POp6WsJk1f+Y0WK/8H4hLQ +7Tj6NlQosbFeXMBc2DCBgARGeI4TB3jIgX6ykW05AoGAWIelo59lbSDgVvW9WRKm +T8bTKVfhAtNLbF0AtXGiwcWj7fu4ARAcIp1HIunNJHJ8nBwX3b2dSVk+1r1cEtZ1 +ci37D+2dsKZpVB10J4bXPeeCOZxAwFXXe1Prl1ectR6E3V9uT+8Xwuoc4cbHtHLG +CursqqBnIAFhvhxjj85QGv4= +-----END PRIVATE KEY----- diff --git a/frontend/vue-app/src/components/shared/LoginButton.vue b/frontend/vue-app/src/components/shared/LoginButton.vue index 66fc937..d2a8b76 100644 --- a/frontend/vue-app/src/components/shared/LoginButton.vue +++ b/frontend/vue-app/src/components/shared/LoginButton.vue @@ -12,10 +12,14 @@ import { hasPendingReturnUrl, clearPendingReturnUrl, } from '../../stores/auth' -import { getCachedImageUrl, getCachedImageBlob } from '@/common/imageCache' +import { getCachedImageBlob } from '@/common/imageCache' import '@/assets/styles.css' import ModalDialog from './ModalDialog.vue' -import { subscribeToPushWithResult, isPushOptedOut } from '@/services/pushSubscription' +import { + subscribeToPushWithResult, + unsubscribeFromPush, + isPushOptedOut, +} from '@/services/pushSubscription' const router = useRouter() const show = ref(false) @@ -157,6 +161,7 @@ function handlePinInput(event: Event) { } const handleLogout = () => { + unsubscribeFromPush() logoutParent() router.push('/child') } diff --git a/frontend/vue-app/vite.config.ts b/frontend/vue-app/vite.config.ts index bedcafd..d7453c3 100644 --- a/frontend/vue-app/vite.config.ts +++ b/frontend/vue-app/vite.config.ts @@ -12,8 +12,8 @@ export default defineConfig(({ mode }) => { server: { host: '0.0.0.0', https: { - key: fs.readFileSync('./192.168.1.102+1-key.pem'), - cert: fs.readFileSync('./192.168.1.102+1.pem'), + key: fs.readFileSync('./key.pem'), + cert: fs.readFileSync('./cert.pem'), }, proxy: { '/api': {