diff --git a/demoBackend/pom.xml b/demoBackend/pom.xml
index 8b1f7a3..5ca20d3 100644
--- a/demoBackend/pom.xml
+++ b/demoBackend/pom.xml
@@ -18,6 +18,8 @@
1.5.31
2.8.5
1.1.1
+ v16.13.0
+ 8.1.4
@@ -115,6 +117,91 @@
+
+
+ com.github.eirslett
+ frontend-maven-plugin
+ 1.12.0
+
+
+
+ Install node and npm
+
+ install-node-and-npm
+
+ generate-resources
+
+ ${node.version}
+ ${npm.version}
+
+
+
+
+ npm install
+
+ npm
+
+ generate-resources
+
+ install
+
+
+
+
+ npm build
+
+ npm
+
+ process-resources
+
+ run build
+
+
+
+
+ ${node.version}
+ src/demo-website
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ Copy web-eid.js file to Vue root folder.
+ generate-resources
+
+ copy-resources
+
+
+ src/demo-website/src
+
+
+ src/demo-website/node_modules/@web-eid/web-eid-library/dist/es
+
+
+
+
+
+ Copy Vue frontend into Spring Boot target static folder
+ process-resources
+
+ copy-resources
+
+
+ target/classes/static
+
+
+ src/demo-website/dist
+ true
+
+
+
+
+
+
diff --git a/demoBackend/src/demo-website/.npmrc b/demoBackend/src/demo-website/.npmrc
index ff1b042..85bdade 100644
Binary files a/demoBackend/src/demo-website/.npmrc and b/demoBackend/src/demo-website/.npmrc differ
diff --git a/demoBackend/src/demo-website/package-lock.json b/demoBackend/src/demo-website/package-lock.json
index 4ca20a5..986b94d 100644
--- a/demoBackend/src/demo-website/package-lock.json
+++ b/demoBackend/src/demo-website/package-lock.json
@@ -10,10 +10,15 @@
"dependencies": {
"@web-eid/web-eid-library": "../../../../web-eid.js/",
"core-js": "^3.6.5",
- "vue": "^3.0.0"
+ "js-cookie": "^3.0.1",
+ "vue": "^3.0.0",
+ "vue-router": "^4.0.0-0",
+ "vuex": "^4.0.2",
+ "vuex-persistedstate": "^4.1.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"babel-eslint": "^10.1.0",
@@ -1729,17 +1734,6 @@
"node": ">= 6"
}
},
- "node_modules/@popperjs/core": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
- "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
- "dev": true,
- "peer": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
"node_modules/@soda/friendly-errors-webpack-plugin": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
@@ -2567,6 +2561,11 @@
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
+ "node_modules/@vue/devtools-api": {
+ "version": "6.0.0-beta.20.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.20.1.tgz",
+ "integrity": "sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q=="
+ },
"node_modules/@vue/preload-webpack-plugin": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
@@ -8669,6 +8668,14 @@
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
"dev": true
},
+ "node_modules/js-cookie": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz",
+ "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@@ -12104,6 +12111,11 @@
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
"dev": true
},
+ "node_modules/shvl": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz",
+ "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
+ },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -14151,6 +14163,17 @@
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
"dev": true
},
+ "node_modules/vue-router": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.12.tgz",
+ "integrity": "sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0-beta.18"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/vue-style-loader": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
@@ -14173,6 +14196,37 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
+ "node_modules/vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.2"
+ }
+ },
+ "node_modules/vuex-persistedstate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz",
+ "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==",
+ "dependencies": {
+ "deepmerge": "^4.2.2",
+ "shvl": "^2.0.3"
+ },
+ "peerDependencies": {
+ "vuex": "^3.0 || ^4.0.0-rc"
+ }
+ },
+ "node_modules/vuex-persistedstate/node_modules/deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
@@ -16370,13 +16424,6 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
"dev": true
},
- "@popperjs/core": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
- "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
- "dev": true,
- "peer": true
- },
"@soda/friendly-errors-webpack-plugin": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
@@ -17081,6 +17128,11 @@
}
}
},
+ "@vue/devtools-api": {
+ "version": "6.0.0-beta.20.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.20.1.tgz",
+ "integrity": "sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q=="
+ },
"@vue/preload-webpack-plugin": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
@@ -21944,6 +21996,11 @@
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
"dev": true
},
+ "js-cookie": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz",
+ "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw=="
+ },
"js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@@ -24809,6 +24866,11 @@
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
"dev": true
},
+ "shvl": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz",
+ "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
+ },
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -26491,6 +26553,14 @@
}
}
},
+ "vue-router": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.12.tgz",
+ "integrity": "sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.18"
+ }
+ },
"vue-style-loader": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
@@ -26515,6 +26585,30 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
+ "vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ }
+ },
+ "vuex-persistedstate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz",
+ "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==",
+ "requires": {
+ "deepmerge": "^4.2.2",
+ "shvl": "^2.0.3"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
+ }
+ }
+ },
"watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
diff --git a/demoBackend/src/demo-website/package.json b/demoBackend/src/demo-website/package.json
index 9df9b72..6b29f94 100644
--- a/demoBackend/src/demo-website/package.json
+++ b/demoBackend/src/demo-website/package.json
@@ -10,10 +10,15 @@
"dependencies": {
"@web-eid/web-eid-library": "../../../../web-eid.js/",
"core-js": "^3.6.5",
- "vue": "^3.0.0"
+ "js-cookie": "^3.0.1",
+ "vue": "^3.0.0",
+ "vue-router": "^4.0.0-0",
+ "vuex": "^4.0.2",
+ "vuex-persistedstate": "^4.1.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"babel-eslint": "^10.1.0",
diff --git a/demoBackend/src/demo-website/src/App.vue b/demoBackend/src/demo-website/src/App.vue
new file mode 100644
index 0000000..159a761
--- /dev/null
+++ b/demoBackend/src/demo-website/src/App.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/demoBackend/src/demo-website/src/components/Login.vue b/demoBackend/src/demo-website/src/components/Login.vue
index 61858d4..dffcaf7 100644
--- a/demoBackend/src/demo-website/src/components/Login.vue
+++ b/demoBackend/src/demo-website/src/components/Login.vue
@@ -8,7 +8,16 @@
Read more from here.
-
+
+
+
@@ -18,7 +27,6 @@
- Token: {{ csrftoken }}
@@ -26,39 +34,41 @@
diff --git a/demoBackend/src/demo-website/src/components/Navbar.vue b/demoBackend/src/demo-website/src/components/Navbar.vue
index 39fa050..6297a76 100644
--- a/demoBackend/src/demo-website/src/components/Navbar.vue
+++ b/demoBackend/src/demo-website/src/components/Navbar.vue
@@ -1,18 +1,36 @@
-