Compare commits

...

8 Commits

15 changed files with 305 additions and 31 deletions

View File

@ -32,6 +32,7 @@
"bootstrap-icons": "^1.11.3",
"express": "^4.18.2",
"moment": "^2.30.1",
"ng2-pdf-viewer": "^10.4.0",
"rxjs": "~7.8.0",
"sweetalert2": "^11.12.3",
"tslib": "^2.3.0",

View File

@ -68,6 +68,9 @@ importers:
moment:
specifier: ^2.30.1
version: 2.30.1
ng2-pdf-viewer:
specifier: ^10.4.0
version: 10.4.0
rxjs:
specifier: ~7.8.0
version: 7.8.2
@ -1890,6 +1893,10 @@ packages:
caniuse-lite@1.0.30001731:
resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==}
canvas@3.1.2:
resolution: {integrity: sha512-Z/tzFAcBzoCvJlOSlCnoekh1Gu8YMn0J51+UAuXJAbW1Z6I9l2mZgdD7738MepoeeIcUdDtbMnOg6cC7GJxy/g==}
engines: {node: ^18.12.0 || >= 20.9.0}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@ -1905,6 +1912,9 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
@ -2096,6 +2106,14 @@ packages:
supports-color:
optional: true
decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
default-gateway@6.0.3:
resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==}
engines: {node: '>= 10'}
@ -2123,6 +2141,10 @@ packages:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
detect-libc@2.0.4:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
detect-node@2.1.0:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
@ -2187,6 +2209,9 @@ packages:
encoding@0.1.13:
resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
end-of-stream@1.4.5:
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
engine.io-parser@5.2.3:
resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
engines: {node: '>=10.0.0'}
@ -2306,6 +2331,10 @@ packages:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
exponential-backoff@3.1.2:
resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==}
@ -2399,6 +2428,9 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
fs-extra@8.1.0:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'}
@ -2449,6 +2481,9 @@ packages:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@ -2618,6 +2653,9 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
ini@4.1.2:
resolution: {integrity: sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@ -2993,6 +3031,10 @@ packages:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
mini-css-extract-plugin@2.8.1:
resolution: {integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==}
engines: {node: '>= 12.13.0'}
@ -3051,6 +3093,9 @@ packages:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
@ -3086,6 +3131,9 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
napi-build-utils@2.0.0:
resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
needle@3.3.1:
resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
engines: {node: '>= 4.4.x'}
@ -3102,13 +3150,23 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
ng2-pdf-viewer@10.4.0:
resolution: {integrity: sha512-TPh1oLZoeARggreTG60Sl3ikSn+Z3+At9pLZ0o/vxPjc7mW2ok2XPyl2Oqz7VyP80ipVorldm1hsLPBmNe2zzA==}
nice-napi@1.0.2:
resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==}
os: ['!win32']
node-abi@3.75.0:
resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==}
engines: {node: '>=10'}
node-addon-api@3.2.1:
resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
@ -3310,6 +3368,14 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
path2d@0.2.2:
resolution: {integrity: sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==}
engines: {node: '>=6'}
pdfjs-dist@4.8.69:
resolution: {integrity: sha512-IHZsA4T7YElCKNNXtiLgqScw4zPd3pG9do8UrznC757gMd7UPeHSL2qwNNMJo4r79fl8oj1Xx+1nh2YkzdMpLQ==}
engines: {node: '>=18'}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@ -3387,6 +3453,11 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
prebuild-install@7.1.3:
resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
engines: {node: '>=10'}
hasBin: true
proc-log@3.0.0:
resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@ -3417,6 +3488,9 @@ packages:
prr@1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
pump@3.0.3:
resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
punycode@1.4.1:
resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
@ -3446,6 +3520,10 @@ packages:
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
read-package-json-fast@3.0.2:
resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@ -3713,6 +3791,12 @@ packages:
resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==}
engines: {node: ^16.14.0 || >=18.0.0}
simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
simple-get@4.0.1:
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
slash@4.0.0:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
@ -3831,6 +3915,10 @@ packages:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
strip-json-comments@2.0.1:
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@ -3854,6 +3942,13 @@ packages:
resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==}
engines: {node: '>=6'}
tar-fs@2.1.3:
resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==}
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
@ -3921,6 +4016,9 @@ packages:
resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==}
engines: {node: ^16.14.0 || >=18.0.0}
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@ -6061,7 +6159,7 @@ snapshots:
'@npmcli/fs@3.1.1':
dependencies:
semver: 7.6.0
semver: 7.7.2
'@npmcli/git@5.0.8':
dependencies:
@ -6092,7 +6190,7 @@ snapshots:
json-parse-even-better-errors: 3.0.2
normalize-package-data: 6.0.2
proc-log: 4.2.0
semver: 7.6.0
semver: 7.7.2
transitivePeerDependencies:
- bluebird
@ -6669,6 +6767,12 @@ snapshots:
caniuse-lite@1.0.30001731: {}
canvas@3.1.2:
dependencies:
node-addon-api: 7.1.1
prebuild-install: 7.1.3
optional: true
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@ -6690,6 +6794,9 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
chownr@1.1.4:
optional: true
chownr@2.0.0: {}
chrome-trace-event@1.0.4: {}
@ -6872,6 +6979,14 @@ snapshots:
dependencies:
ms: 2.1.3
decompress-response@6.0.0:
dependencies:
mimic-response: 3.1.0
optional: true
deep-extend@0.6.0:
optional: true
default-gateway@6.0.3:
dependencies:
execa: 5.1.1
@ -6894,6 +7009,9 @@ snapshots:
destroy@1.2.0: {}
detect-libc@2.0.4:
optional: true
detect-node@2.1.0: {}
di@0.0.1: {}
@ -6958,6 +7076,11 @@ snapshots:
iconv-lite: 0.6.3
optional: true
end-of-stream@1.4.5:
dependencies:
once: 1.4.0
optional: true
engine.io-parser@5.2.3: {}
engine.io@6.6.4:
@ -7111,6 +7234,9 @@ snapshots:
signal-exit: 3.0.7
strip-final-newline: 2.0.0
expand-template@2.0.3:
optional: true
exponential-backoff@3.1.2: {}
express@4.21.2:
@ -7243,6 +7369,9 @@ snapshots:
fresh@0.5.2: {}
fs-constants@1.0.0:
optional: true
fs-extra@8.1.0:
dependencies:
graceful-fs: 4.2.11
@ -7292,6 +7421,9 @@ snapshots:
get-stream@6.0.1: {}
github-from-package@0.0.0:
optional: true
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@ -7479,6 +7611,9 @@ snapshots:
inherits@2.0.4: {}
ini@1.3.8:
optional: true
ini@4.1.2: {}
ini@4.1.3: {}
@ -7865,6 +8000,9 @@ snapshots:
mimic-fn@2.1.0: {}
mimic-response@3.1.0:
optional: true
mini-css-extract-plugin@2.8.1(webpack@5.94.0(esbuild@0.20.1)):
dependencies:
schema-utils: 4.3.2
@ -7925,6 +8063,9 @@ snapshots:
minipass: 3.3.6
yallist: 4.0.0
mkdirp-classic@0.5.3:
optional: true
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
@ -7948,6 +8089,9 @@ snapshots:
nanoid@3.3.11: {}
napi-build-utils@2.0.0:
optional: true
needle@3.3.1:
dependencies:
iconv-lite: 0.6.3
@ -7960,15 +8104,28 @@ snapshots:
neo-async@2.6.2: {}
ng2-pdf-viewer@10.4.0:
dependencies:
pdfjs-dist: 4.8.69
tslib: 2.8.1
nice-napi@1.0.2:
dependencies:
node-addon-api: 3.2.1
node-gyp-build: 4.8.4
optional: true
node-abi@3.75.0:
dependencies:
semver: 7.7.2
optional: true
node-addon-api@3.2.1:
optional: true
node-addon-api@7.1.1:
optional: true
node-forge@1.3.1: {}
node-gyp-build@4.8.4:
@ -7983,7 +8140,7 @@ snapshots:
make-fetch-happen: 13.0.1
nopt: 7.2.1
proc-log: 4.2.0
semver: 7.6.0
semver: 7.7.2
tar: 6.2.1
which: 4.0.0
transitivePeerDependencies:
@ -7998,7 +8155,7 @@ snapshots:
normalize-package-data@6.0.2:
dependencies:
hosted-git-info: 7.0.2
semver: 7.6.0
semver: 7.7.2
validate-npm-package-license: 3.0.4
normalize-path@3.0.0: {}
@ -8199,6 +8356,14 @@ snapshots:
path-type@4.0.0: {}
path2d@0.2.2:
optional: true
pdfjs-dist@4.8.69:
optionalDependencies:
canvas: 3.1.2
path2d: 0.2.2
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@ -8269,6 +8434,22 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
prebuild-install@7.1.3:
dependencies:
detect-libc: 2.0.4
expand-template: 2.0.3
github-from-package: 0.0.0
minimist: 1.2.8
mkdirp-classic: 0.5.3
napi-build-utils: 2.0.0
node-abi: 3.75.0
pump: 3.0.3
rc: 1.2.8
simple-get: 4.0.1
tar-fs: 2.1.3
tunnel-agent: 0.6.0
optional: true
proc-log@3.0.0: {}
proc-log@4.2.0: {}
@ -8290,6 +8471,12 @@ snapshots:
prr@1.0.1:
optional: true
pump@3.0.3:
dependencies:
end-of-stream: 1.4.5
once: 1.4.0
optional: true
punycode@1.4.1: {}
punycode@2.3.1: {}
@ -8315,6 +8502,14 @@ snapshots:
iconv-lite: 0.4.24
unpipe: 1.0.0
rc@1.2.8:
dependencies:
deep-extend: 0.6.0
ini: 1.3.8
minimist: 1.2.8
strip-json-comments: 2.0.1
optional: true
read-package-json-fast@3.0.2:
dependencies:
json-parse-even-better-errors: 3.0.2
@ -8633,6 +8828,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
simple-concat@1.0.1:
optional: true
simple-get@4.0.1:
dependencies:
decompress-response: 6.0.0
once: 1.4.0
simple-concat: 1.0.1
optional: true
slash@4.0.0: {}
smart-buffer@4.2.0: {}
@ -8788,6 +8993,9 @@ snapshots:
strip-final-newline@2.0.0: {}
strip-json-comments@2.0.1:
optional: true
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@ -8804,6 +9012,23 @@ snapshots:
tapable@2.2.2: {}
tar-fs@2.1.3:
dependencies:
chownr: 1.1.4
mkdirp-classic: 0.5.3
pump: 3.0.3
tar-stream: 2.2.0
optional: true
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
end-of-stream: 1.4.5
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
optional: true
tar@6.2.1:
dependencies:
chownr: 2.0.0
@ -8872,6 +9097,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
optional: true
type-fest@0.21.3: {}
type-is@1.6.18:

View File

@ -3,5 +3,10 @@
"target": "https://localhost:7103",
"secure": false,
"changeOrigin": true
},
"/docs": {
"target": "https://localhost:7103",
"secure": false,
"changeOrigin": true
}
}

View File

@ -6,6 +6,7 @@ import { GroupComponent } from './pages/group/group.component';
import { ModuleComponent } from './pages/module/module.component';
import { UserAssignmentComponent } from './pages/user-assignment/user-assignment.component';
import { UserRepresentationComponent } from './pages/user-representation/user-representation.component';
import { PrivacyPolicyComponent } from './pages/privacy-policy/privacy-policy.component';
export const routes: Routes = [
{ path: '', component: HomeComponent },
@ -13,5 +14,6 @@ export const routes: Routes = [
{ path: 'group-table', component: GroupComponent, canActivate: [AuthGuard] },
{ path: 'module-table', component: ModuleComponent, canActivate: [AuthGuard] },
{ path: 'user-assignment', component: UserAssignmentComponent, canActivate: [AuthGuard] },
{ path: 'user-representation', component: UserRepresentationComponent, canActivate: [AuthGuard] }
{ path: 'user-representation', component: UserRepresentationComponent, canActivate: [AuthGuard] },
{ path: 'privacy-policy', component: PrivacyPolicyComponent }
];

View File

@ -7,20 +7,20 @@
</mat-form-field>
<mat-form-field class="w80p">
<mat-label>Gruppe</mat-label>
<input matInput [formControl]="name" />
<input matInput [formControl]="name" [readonly] = 'group.internal' />
</mat-form-field>
</div>
<!-- comment -->
<div class="dd-row input-row">
<mat-form-field>
<mat-label>Kommentar</mat-label>
<textarea matInput [formControl]="comment"></textarea>
<textarea matInput [formControl]="comment" [readonly] = 'group.internal'></textarea>
</mat-form-field>
</div>
<mat-divider></mat-divider>
<!-- active, internal, async -->
<div class="dd-row input-row">
<mat-slide-toggle [(ngModel)]="group.active">
<mat-slide-toggle [(ngModel)]="group.active" [disabled]='group.internal'>
Aktiv
</mat-slide-toggle>
<mat-slide-toggle [(ngModel)]="group.internal" disabled>
@ -52,7 +52,7 @@
<mat-divider></mat-divider>
<!-- save-button, delete-button -->
<div class="dd-row button-row">
<button mat-fab extended (click)="update()">
<button mat-fab extended (click)="update()" [disabled]='group.internal'>
<mat-icon>save</mat-icon>
Speichern
</button>

View File

@ -46,6 +46,7 @@ export class GroupUpdateFormComponent {
errorMessage = signal('');
constructor(private uService: GroupService, private rService: RefreshService) {
console.log(this.group);
}
update() {

View File

@ -0,0 +1 @@
<iframe src="docs/privacy-policy.pdf#toolbar=0&navpanes=0&scrollbar=0" ></iframe>

View File

@ -0,0 +1,9 @@
iframe {
overflow: hidden;
border: none;
padding: 0;
margin: 0;
position: fixed;
width: 100%;
height: 100%;
}

View File

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PrivacyPolicyComponent } from './privacy-policy.component';
describe('PrivacyPolicyComponent', () => {
let component: PrivacyPolicyComponent;
let fixture: ComponentFixture<PrivacyPolicyComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [PrivacyPolicyComponent]
})
.compileComponents();
fixture = TestBed.createComponent(PrivacyPolicyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,12 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
@Component({
selector: 'app-privacy-policy',
standalone: true,
imports: [],
templateUrl: './privacy-policy.component.html',
styleUrl: './privacy-policy.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class PrivacyPolicyComponent {
}

View File

@ -23,7 +23,7 @@ export interface Group {
id?: number;
name?: string;
adSync?: boolean;
internal?: boolean;
internal: boolean;
active?: boolean;
comment?: string;
addedWho?: string;

View File

@ -1,5 +1,7 @@
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Observable, tap } from 'rxjs';
import { MatSnackBar } from '@angular/material/snack-bar';
import { inject } from '@angular/core';
export class ApiService<Model> {
constructor(http: HttpClient, baseUrl: string) {
@ -9,6 +11,7 @@ export class ApiService<Model> {
http: HttpClient;
baseUrl: string;
protected snackBar = inject(MatSnackBar);
getAll(): Observable<Model[]> {
return this.http.get<Model[]>(this.baseUrl, { withCredentials: true });
@ -25,7 +28,12 @@ export class ApiService<Model> {
update(updateModel: Model): Observable<Model> {
const url = `${this.baseUrl}`;
return this.http.put<Model>(url, updateModel, { withCredentials: true });
return this.http.put<Model>(url, updateModel, { withCredentials: true }).pipe(
tap(() => {
this.snackBar.open('Aktualisierung erfolgreich!', 'Schließen', {
duration: 2000,
});
}));
}
delete(id: number): Observable<any> {

View File

@ -10,23 +10,6 @@
<PackageIcon>icon.png</PackageIcon>
</PropertyGroup>
<ItemGroup>
<Compile Remove="wwwroot\assets\**" />
<Compile Remove="wwwroot\media\**" />
<Content Remove="wwwroot\assets\**" />
<Content Remove="wwwroot\media\**" />
<EmbeddedResource Remove="wwwroot\assets\**" />
<EmbeddedResource Remove="wwwroot\media\**" />
<None Remove="wwwroot\assets\**" />
<None Remove="wwwroot\media\**" />
</ItemGroup>
<ItemGroup>
<Content Remove="wwwroot\chunk-A2L6DXQH.js" />
<Content Remove="wwwroot\chunk-ZC35XWOR.js" />
<Content Remove="wwwroot\main-QF3MRK45.js" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
<PackageReference Include="DigitalData.Core.Abstraction.Application" Version="1.0.0" />
@ -47,7 +30,6 @@
<ItemGroup>
<Folder Include="ClientApp\" />
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>

View File

@ -0,0 +1,161 @@
Inhaltsverzeichnis
.D.a. .te. .n.s.c. h. .u.t.z.i.n.f.o.r.m. .a.t.i.o.n. .f.ü.r. d. .a.s. .B. .e.n. u. .t.z.e.r.v.e. .rw. .a. l.t.u.n. g. .s.s.y. s. .te. .m. .:.U. .s.e. .rM. .a. .n.a. g. .e.r. . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.
1. ...A. .ll.g.e.m. .e. .in. e. . I.n. f.o.r.m. .a. t.i.o.n.e. .n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. .
.2...V. .e.r.a.n.t.w. .o.r.t.li.c.h.e. .S. .te. .ll.e. .d.e.r. .D. a. .te. .n.v.e. .ra. .r.b.e.i.tu. .n.g. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. .
3. ...D. .a.t.e.n. e. .r.h.e.b. .u.n.g. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. .
3. ..1. . D. .i.e. .fo. .lg. .e.n.d. e. .n. .K.a. .te. .g.o.r.i.e.n. .p.e. .rs. .o.n.e. .n.b.e. .z.o.g.e. .n.d.e. .r.D. .a.t.e.n. .w. .e.r.d.e. .n. .v.e.r.a.r.b.e. .it.e.t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.
3. ..2. . U. .r.s.p. r.u. .n.g. .d.e. .r.p.e. .rs. .o.n.e. .n.b.e. .z.o.g.e. .n.e.n. .D. .a.t.e.n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.
.3..3. .A. .u.f.b.e. .w.a. .h.r.u.n.g. .s.f.ri.s.t.e.n. ./.S. .p.e. .ic.h. .e.r.u.n.g. .s.d.a. u. .e.r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.
3. ..4. . V. .e.r.a.r.b. e. .it.u.n. .g.s.z.w. .e.c. .k. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.
.3..5. . R. .e. .c.h.t.m. .ä.ß. i.g.k. e. .it. .d.e.r. .V.e. .ra. .rb. .e.i.tu. .n.g. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.
.3..6. . B. .e.r.e. c. .h.t.ig. .te. .I.n.t.e.r.e.s. s. .e.n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.
.3..7. . E. .r.f.o.r.d.e.r.l.ic.h. .k.e.i.t.d.e. .r.D. .a.t.e.n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.
.3..8. . W. . .e.i.te. r.g. .a.b.e. .v. o. .n. .D. a. .te. .n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.
4. ...V. .e.r.w. e. .n.d.u. .n.g. .v.o. .n. .C.o. .o.k.i.e.s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. .
5. ...B. .e.t.r.o.ff.e. n. .e.n.r.e. .c.h.t.e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. .
UserManager - Datenschutzinformation
Datenschutzinformation für das Benutzerverwaltungssystem:
UserManager
Stand: 07.08.2025
1. Allgemeine Informationen
In der heutigen schnelllebigen und zunehmend digitalen Welt, sind personenbezogene Daten eine wichtige
Ressource.
Ihre Daten sind wertvoll und müssen daher mit der durch diverse Gesetze und Vorschriften (DSGVO, TDDDG,
...) gebotenen Sorgfalt behandelt werden.
Als Anbieter von lokalen Lösungen (OnPremise) setzt der Hersteller des UserManagers, die Digital Data GmbH,
einen klaren Schwerpunkt auf Datenschutz und Datensicherheit.
Für Sie bedeutet dies, dass nur die nötigsten Daten erhoben und gespeichert werden (Datensparsamkeit bzw.
Datenminimierung).
Außerdem kommen bei der Verabeitung aktuelle und als sicher geltende Technologien zum Einsatz.
Die Kontaktdaten des Herstellers lauten:
Digital Data GmbH
Ludwig-Rinn-Straße 16
35452 Heuchelheim
https://digitaldata.works
info-flow@digitaldata.works
Telefon: 0049 641 202360
Kontakt zum Datenschutzbeauftragten: privacy-flow@digitaldata.works
2. Verantwortliche Stelle der Datenverarbeitung
Ihre Daten werden vertraunsvoll verarbeitet von:
Digital Data GmbH
Ludwig-Rinn-Straße 16
35452 Heuchelheim
https://digitaldata.works
info-flow@digitaldata.works
Telefon: 0049 641 202360
Kontakt zum Datenschutzbeauftragten: privacy-flow@digitaldata.works
3. Datenerhebung
3.1 Die folgenden Kategorien personenbezogender Daten werden verarbeitet
- Namen: Benutzername, Vor und Zunamen
- Kontaktdaten: Telefonnummer, Mobilfunknummer und E-Mail Adresse
- Technische Daten: Zeitpunkt des Zugriffs oder Zugriffsversuchs
2/4
UserManager - Datenschutzinformation
- Standortdaten: Per GPS, Wi-Fi (WLAN) und/oder IP-Adresse (abhängig von der verwendeten Plattform)
3.2 Ursprung der personenbezogenen Daten
- Sie haben die unter 3.1 stehenden Daten vorab an Ihren Geschäftspartner (die verantwortliche Stelle)
übermittelt
Diese Übermittlung kann mündlich per Telefon, im persönlichen Kontakt, per E-Mail oder per Kontaktformular
geschehen sein.
3.3 Aufbewahrungsfristen / Speicherungsdauer
- Die automatische E-Mail Korrespondenz wird für 6 Jahre aufbewahrt.
- Unterzeichnete Verträge werden für die Dauer ihrer Laufzeit + 10 Jahre aufbewahrt.
- Der technische Vorgang wird in der UserManager Softwarelösung je nach Dokumentart bzw. Vertragsart
unbegrenzt aufbewahrt.
Ihre personenbezogenen Daten werden aber grundsätzlich anonymisiert, wenn
A. Der Vertrag ausgelaufen ist und die gesetzliche Aufbewahrungszeit vorbei ist, oder
B. der Vertrag von Ihnen abgelehnt wurde bzw. nie unterschrieben wurde.
Die Gesetzlichen Grundlagen dieser Aufbewahrungsfristen bieten unter anderen, das/die:
Handelsgesetzbuch (HGB)
Abgabenordnung (AO)
Grundsätzen zur ordnungsgemäßen Führung und Aufbewahrung von Büchern, Aufzeichnungen und
Unterlagen in elektronischer Form sowie zum Datenzugriff (GoBD)
Abhängig von der spezifischen Dokumentart, kann die Aufbewahrungsfrist variieren.
Hier muss noch die Aufbewahrungszeit der protokolle aufgenommen werden.
Außerdem können sich Zeiten verlängern, falls Unregelmäßigkeiten auftreten. Z.B.: eine rechtliche
Auseinandersetzung droht oder aktuell läuft.
3.4 Verarbeitungszweck
Die unter 3.1 definierten personenbezogenen Daten werden verarbeitet um:
- Den technisch notwendigen Prozess abzubilden bzw. anbieten zu können.
Im Zuge der Maßnahmen zur Sicherstellung der Informationssicherheit, insbesondere zur Identifizierung und
Abwehr von Angriffen, sowie zur Durchführung interner und externer Audits, der Exportkontrolle und der Prüfung
von Sanktionslisten, erfolgt ebenfalls eine Datenverarbeitung. Bei Anfragen gemäß §8 Abs. 2 VDG werden die
entsprechenden Informationen an die zuständigen Stellen übermittelt.
3.5 Rechtmäßigkeit der Verarbeitung
Grundsätzlich werden Ihre Daten auf Grundlage einer sich anbahnenden oder bereits vorhandenen
Geschäftsbeziehung erhoben.
Die rechtliche Grundlage für die Übermittlung an zuständige Stellen bildet §8 Abs. 2 VDG.
Anfragen von Betroffenen werden gemäß den Artikeln 12 bis 23 der DSGVO sowie den Paragraphen 32 bis 37
des BDSG bearbeitet.
3/4
UserManager - Datenschutzinformation
3.6 Berechtigte Interessen
Ein berechtigtes Interesse der verantwortlichen Stelle gemäß Art. 6 Abs. 1 lit. f DSGVO besteht in den folgenden
Fällen:
Es werden Maßnahmen zur Informationssicherheit ergriffen, die sowohl präventive technische als auch
organisatorische Maßnahmen sowie die Behandlung von Vorfällen umfassen. Ziel ist es, potenzielle Schäden für
das Unternehmen, die von der Datenverarbeitung betroffenen Personen und die Nutzer der Vertrauensdienste
zu bewerten und zu vermeiden.
3.7 Erforderlichkeit der Daten
Die erhobenen Daten stellen das Minimum der nötigen Daten zwecks digitaler Unterschrift dar. Ohne die unter
3.1 genannten Daten, kann der Dienst nicht betrieben werden.
3.8 Weitergabe von Daten
Nur in Ausnahmefällen werden Daten, zwecks Supportleistungen, an den Hersteller - siehe Absatz 1 -
weitergegeben.
Mit dem Hersteller besteht ein gültiger Auftragsdatenverarbeitungsvertrag (AVV), welcher die Sicherheit und
Integrität des Umgangs mit Ihren Daten gewährleistet.
4. Verwendung von Cookies
Beim Besuch bestimmter Seiten kommen temporäre Cookies zum Einsatz, die für die technische Bereitstellung
der Dienste notwendig sind. Diese sogenannten Session-Cookies enthalten keine personenbezogenen Daten
und werden nach Beendigung der Sitzung automatisch gelöscht. Methoden wie Java-Applets oder Active-X-
Controls, die das Nutzerverhalten nachvollziehbar machen könnten, werden nicht verwendet.
5. Betroffenenrechte
Wenn Sie Fragen zu Ihren Daten haben oder eine Berichtigung, Löschung oder Einschränkung der Verarbeitung
wünschen, senden Sie bitte Ihre Anfrage per Post oder E-Mail an die oben angegebene Adresse. Dies gilt auch,
wenn Sie gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung einlegen möchten oder eine Anfrage zur
Datenübertragbarkeit haben.
Bei Fragen oder Beschwerden zu einem Verfahren können Sie sich ebenfalls über die genannten
Kontaktmöglichkeiten an uns wenden. Sollten Sie darüber hinaus einen Grund zur Beschwerde haben, haben
Sie die Möglichkeit, sich an unsere Aufsichtsbehörde zu wenden. Welche Aufsichtsbehörde für Sie zuständig ist,
erfahren Sie hier:
https://www.bfdi.bund.de/DE/Service/Anschriften/Laender/Laender-node.html
4/4

View File

@ -43,7 +43,7 @@ namespace DigitalData.UserManager.Application.Services
var group = await _repository.ReadByIdAsync(gId);
if (group is null)
throw new ForbiddenException("Group not found.");
else if (!group.Internal)
else if (group.Internal)
throw new ForbiddenException("Updates are not allowed for system groups.");
return await base.UpdateAsync(updateDto);
}