Implementierte GDPR-konforme Cookie-Zustimmungsmechanik

- Integrierte die 'bootstrap-cookie-consent-settings' Bibliothek für Cookie-Zustimmungsdialoge
- Hinzugefügt mehrsprachige Unterstützung für Cookie-Dialoge
- Konfigurierte Anwendungseinstellungen in 'appsettings.json'
- Erstellt Datenschutz- und Cookie-Richtlinien mit TermsFeed
- Angepasste sprachbasierte Einstellungen in './wwwroot/cookie-consent-content'
This commit is contained in:
Developer 02 2024-04-16 10:32:39 +02:00
parent 87c839549a
commit 1c55c4aa99
24 changed files with 297 additions and 498 deletions

View File

@ -75,6 +75,12 @@
<Content Update="appsettings.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\cookies-policy.en.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\privacy-policy.en.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>

View File

@ -19,7 +19,7 @@
<script src="~/js/network.js" asp-append-version="true"></script>
<script src="~/js/app.js" asp-append-version="true"></script>
<script src="~/lib/pspdfkit/pspdfkit.js" asp-append-version="true"></script>
<script src="~/lib/bootstrap-cookie-consent-settings-main/src/bootstrap-cookie-consent-settings.js" asp-append-version="true"></script>
<script src="~/lib/bootstrap-cookie-consent-settings-main/bootstrap-cookie-consent-settings.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
<main role="main">
<partial name="_CookieConsentPartial" />

View File

@ -55,13 +55,13 @@
},
"CookieConsentSettings": {
"PrivacyPolicyUrl": "./",
"LegalNoticeUrl": "./",
"ContentURL": "/lib/bootstrap-cookie-consent-settings-main/cookie-consent-content",
"PrivacyPolicyUrl": "./privacy-policy.en.html",
"LegalNoticeUrl": "./cookies-policy.en.html",
"ContentURL": "/cookie-consent-content",
"ButtonAgreeClass": "btn btn-primary",
"ButtonDontAgreeClass": "btn btn-link text-decoration-none none-display",
"ButtonSaveClass": "btn btn-secondary none-display",
"Lang": "en",
"Lang": "de",
"DefaultLang": "en",
"CookieName": "cookie-consent-settings",
"CookieStorageDays": 1,

View File

@ -0,0 +1,17 @@
{
"title": "Cookie-Nutzung",
"body": "Unsere Webseite verwendet notwendige Cookies, um richtig funktionieren zu können. Diese Cookies sind erforderlich für die Sicherheit der Seite und die Verbesserung der Benutzererfahrung. Es ist wichtig, dass Sie unsere Cookie-Nutzung akzeptieren, um alle Funktionen unserer Webseite vollständig nutzen zu können.",
"privacyPolicy": "Datenschutzerklärung",
"legalNotice": "Details zur Cookie-Nutzung",
"mySettings": "Einstellungen",
"buttonNotAgree": "Ich bin nicht einverstanden",
"buttonAgree": "Einverstanden",
"buttonSaveSelection": "Auswahl speichern",
"buttonAgreeAll": "Einverstanden",
"categories": {
"necessary": {
"title": "Notwendig",
"description": [ "Diese Cookies sind notwendig für Funktionen wie Seitensicherheit, Sitzungsverwaltung und Schutz. Unsere Cookies umfassen technische Cookies, die für die Sitzungsverwaltung und zur Gewährleistung der Sicherheit verwendet werden." ]
}
}
}

View File

@ -0,0 +1,17 @@
{
"title": "Cookie Usage",
"body": "Our website uses essential cookies to function properly. These cookies are necessary for site security and improving user experience. It is important that you accept our cookie usage to fully benefit from all the features of our website.",
"privacyPolicy": "Data Protection Statement",
"legalNotice": "Cookie Usage Details",
"mySettings": "Settings",
"buttonNotAgree": "I do not agree",
"buttonAgree": "Agree",
"buttonSaveSelection": "Save selection",
"buttonAgreeAll": "Agree",
"categories": {
"necessary": {
"title": "Necessary",
"description": [ "These cookies are necessary for functions such as site security, session management, and protection. Our cookies include technical cookies that are used for session management and to ensure security." ]
}
}
}

View File

@ -0,0 +1,68 @@
<h1>Cookies Policy</h1>
<p>Last updated: April 16, 2024</p>
<p>This Cookies Policy explains what Cookies are and how We use them. You should read this policy so You can understand what type of cookies We use, or the information We collect using Cookies and how that information is used. This Cookies Policy has been created with the help of the <a href="https://www.termsfeed.com/cookies-policy-generator/" target="_blank">Cookies Policy Generator</a>.</p>
<p>Cookies do not typically contain any information that personally identifies a user, but personal information that we store about You may be linked to the information stored in and obtained from Cookies. For further information on how We use, store and keep your personal data secure, see our Privacy Policy.</p>
<p>We do not store sensitive personal information, such as mailing addresses, account passwords, etc. in the Cookies We use.</p>
<h2>Interpretation and Definitions</h2>
<h3>Interpretation</h3>
<p>The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.</p>
<h3>Definitions</h3>
<p>For the purposes of this Cookies Policy:</p>
<ul>
<li><strong>Company</strong> (referred to as either &quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot; or &quot;Our&quot; in this Cookies Policy) refers to Digital Data GmbH, Ludwig Rinn Str. 16, D-35452 Heuchelheim.</li>
<li><strong>Cookies</strong> means small files that are placed on Your computer, mobile device or any other device by a website, containing details of your browsing history on that website among its many uses.</li>
<li><strong>Website</strong> refers to Digitaldata Unterschrift, accessible from <a href="unterschrift.digitaldata.works" rel="external nofollow noopener" target="_blank">unterschrift.digitaldata.works</a></li>
<li><strong>You</strong> means the individual accessing or using the Website, or a company, or any legal entity on behalf of which such individual is accessing or using the Website, as applicable.</li>
</ul>
<h2>The use of the Cookies</h2>
<h3>Type of Cookies We Use</h3>
<p>Cookies can be &quot;Persistent&quot; or &quot;Session&quot; Cookies. Persistent Cookies remain on your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close your web browser.</p>
<p>We use both session and persistent Cookies for the purposes set out below:</p>
<ul>
<li>
<p><strong>Necessary / Essential Cookies</strong></p>
<p>Type: Session Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.</p>
</li>
<li>
<p><strong>Functionality Cookies</strong></p>
<p>Type: Persistent Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.</p>
</li>
</ul>
<h3>Your Choices Regarding Cookies</h3>
<p>If You prefer to avoid the use of Cookies on the Website, first You must disable the use of Cookies in your browser and then delete the Cookies saved in your browser associated with this website. You may use this option for preventing the use of Cookies at any time.</p>
<p>If You do not accept Our Cookies, You may experience some inconvenience in your use of the Website and some features may not function properly.</p>
<p>If You'd like to delete Cookies or instruct your web browser to delete or refuse Cookies, please visit the help pages of your web browser.</p>
<ul>
<li>
<p>For the Chrome web browser, please visit this page from Google: <a href="https://support.google.com/accounts/answer/32050" rel="external nofollow noopener" target="_blank">https://support.google.com/accounts/answer/32050</a></p>
</li>
<li>
<p>For the Internet Explorer web browser, please visit this page from Microsoft: <a href="http://support.microsoft.com/kb/278835" rel="external nofollow noopener" target="_blank">http://support.microsoft.com/kb/278835</a></p>
</li>
<li>
<p>For the Firefox web browser, please visit this page from Mozilla: <a href="https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored" rel="external nofollow noopener" target="_blank">https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored</a></p>
</li>
<li>
<p>For the Safari web browser, please visit this page from Apple: <a href="https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac" rel="external nofollow noopener" target="_blank">https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac</a></p>
</li>
</ul>
<p>For any other web browser, please visit your web browser's official web pages.</p>
<h3>More Information about Cookies</h3>
<p>You can learn more about cookies here: <a href="https://www.termsfeed.com/blog/cookies/" target="_blank">All About Cookies by TermsFeed</a>.</p>
<h3>Contact Us</h3>
<p>If you have any questions about this Cookies Policy, You can contact us:</p>
<ul>
<li>
<p>By visiting this page on our website: <a href="unterschrift.digitaldata.works" rel="external nofollow noopener" target="_blank">unterschrift.digitaldata.works</a></p>
</li>
<li>
<p>By phone number: +49(0)-641-202360</p>
</li>
<li>
<p>By mail: Ludwig Rinn Str. 16, D-35452 Heuchelheim</p>
</li>
</ul>

View File

@ -1,4 +0,0 @@
src/bootstrap-cookie-consent-settings.js linguist-vendored=false
index.html linguist-documentation
demo/legal-notice.html linguist-documentation
demo/privacy-policy.html linguist-documentation

View File

@ -1,2 +0,0 @@
/.idea
/node_modules

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2020 Stefan Haack
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,121 +0,0 @@
# bootstrap-cookie-consent-settings
A modal dialog (cookie banner) and framework to handle the EU law (as written by EuGH, 1.10.2019 C-673/17)
about cookies in a website. Needs Bootstrap 5.
- [Demo page](https://shaack.com/projekte/bootstrap-cookie-consent-settings)
- [GitHub Repository](https://github.com/shaack/bootstrap-cookie-consent-settings)
- [npm package](https://www.npmjs.com/package/bootstrap-cookie-consent-settings)
## Usage
### Construct
Initialize the cookie consent framework with the constructor
```js
var cookieSettings = new BootstrapCookieConsentSettings(props)
```
You should configure the framework with the `props` object, at least the properties `privacyPolicyUrl`, `legalNoticeUrl`
and `contentURL`. The default configuration is
```js
this.props = {
privacyPolicyUrl: undefined, // the URL of your privacy policy page
legalNoticeUrl: undefined, // the URL of you legal notice page (Impressum)
contentURL: "/cookie-consent-content", // this folder must contain the language-files in the needed languages (`[lang].js`)
buttonAgreeClass: "btn btn-primary", // the "Agree to all" buttons class
buttonDontAgreeClass: "btn btn-link text-decoration-none", // the "I do not agree" buttons class
buttonSaveClass: "btn btn-secondary", // the "Save selection" buttons class
autoShowModal: true, // disable autoShowModal on the privacy policy and legal notice pages, to make these pages readable
alsoUseLocalStorage: true, // if true, the settings are stored in localStorage, too
postSelectionCallback: undefined, // callback function, called after the user has saved the settings
lang: navigator.language, // the language, in which the modal is shown
defaultLang: "en", // default language, if `lang` is not available as translation in `cookie-consent-content`
categories: ["necessary", "statistics", "marketing", "personalization"], // the categories for selection, must be contained in the language files
cookieName: "cookie-consent-settings", // the name of the cookie in which the configuration is stored as JSON
cookieStorageDays: 365, // the duration the cookie configuration is stored on the client
modalId: "bootstrapCookieConsentSettingsModal" // the id of the modal dialog element
}
```
### Show dialog
On a new visit the dialog is shown automatically.
To allow the user a reconfiguration you can show the Dialog again with
```js
cookieSettings.showDialog()
```
### Read the settings in JavaScript
Read all cookie settings with
```js
cookieSettings.getSettings()
```
It should return some JSON like
```json
{
"necessary": true,
"statistics": true,
"marketing": true,
"personalization": true
}
```
or `undefined`, before the user has chosen his cookie options.
Read a specific cookie setting with
```js
cookieSettings.getSettings('statistics')
```
for the `statistics` cookie settings. Also returns `undefined`, before the user has chosen his cookie options.
### Read the settings from the backend
You can read the settings with all server languages, you just have to read the cookie `cookie-consent-settings`.
The content of the cookie is encoded like a http query string.
```
necessary=true&statistics=false&marketing=true&personalization=true
```
#### PHP helper class
I provide a PHP helper class that you can use to read and write the settings from a PHP backend.
It is located in `php/Shaack/BootstrapCookieConsentSettings.php`.
You can use it as described in the following example.
```PHP
$cookieSettings = new \Shaack\BootstrapCookieConsentSettings();
// read all settings
$allSettings = $cookieSettings->getSettings();
// read a specific setting
$statisticsAllowed = $cookieSettings->getSetting("statistics");
// write a specific setting
$cookieSettings->setSetting("statistics", false);
```
### Internationalization
You find the language files in `./cookie-consent-content`. You can add here language files or modify the existing. If
you add language files please consider a pull request to also add them in this repository. Thanks.
## Disclaimer
You can use this banner for your website free of charge under the [MIT-License](./LICENSE).
The banner and framework was designed in cooperation with data protection officers and lawyers. However, we can not
guarantee whether the banner is correct for your website and assume no liability for its use.
bootstrap-cookie-consent-settings is a project of [shaack.com](https://shaack.com).

View File

@ -1,31 +0,0 @@
{
"title": "Privatsphäre Einstellungen",
"body": "Wir nutzen Cookies und ähnliche Technologien, die zum Betrieb der Website erforderlich sind. Zusätzliche Cookies werden nur mit Ihrer Zustimmung verwendet. Es steht Ihnen frei, Ihre Zustimmung jederzeit zu geben, zu verweigern oder zurückzuziehen, indem Sie den Link \"Cookie-Einstellungen\" unten auf jeder Seite nutzen. Sie können der Verwendung von Cookies durch uns zustimmen, indem Sie auf \"Einverstanden\" klicken. Für weitere Informationen darüber, welche Daten gesammelt und wie sie an unsere Partner weitergegeben werden, lesen Sie bitte unsere --privacy-policy--.",
"privacyPolicy": "Datenschutzerklärung",
"legalNotice": "Impressum",
"mySettings": "Meine Einstellungen",
"buttonNotAgree": "Ich bin nicht einverstanden",
"buttonAgree": "Einverstanden",
"buttonSaveSelection": "Auswahl speichern",
"buttonAgreeAll": "Allen zustimmen",
"categories": {
"necessary": {
"title": "Notwendig",
"description": ["Zum Betrieb der Website erforderlich"]
},
"statistics": {
"title": "Statistik",
"description": ["Beobachtung der Website-Nutzung und Optimierung der Benutzererfahrung"]
},
"marketing": {
"title": "Marketing",
"description": ["Bewertung von Marketingaktionen"]
},
"personalization": {
"title": "Personalisierung",
"description": ["Speicherung Ihrer Präferenzen aus früheren Besuchen",
"Sammeln von Benutzer-Feedback zur Verbesserung unserer Website",
"Erfassung Ihrer Interessen, um maßgeschneiderte Inhalte und Angebote anzubieten"]
}
}
}

View File

@ -1,31 +0,0 @@
{
"title": "Privacy Settings",
"body": "We use cookies and similar technologies that are necessary to operate the website. Additional cookies are only used with your consent. You are free to give, deny, or withdraw your consent at any time by using the \"cookie settings\" link at the bottom of each page. You can consent to our use of cookies by clicking \"Agree\". For more information about what information is collected and how it is shared with our partners, please read our --privacy-policy--.",
"privacyPolicy": "Data Protection Statement",
"legalNotice": "Legal Notice",
"mySettings": "My Settings",
"buttonNotAgree": "I do not agree",
"buttonAgree": "Agree",
"buttonSaveSelection": "Save selection",
"buttonAgreeAll": "Agree to all",
"categories": {
"necessary": {
"title": "Necessary",
"description": ["Required to run the website"]
},
"statistics": {
"title": "Statistics",
"description": ["Monitoring website usage and optimizing the user experience"]
},
"marketing": {
"title": "Marketing",
"description": ["Evaluation of marketing actions"]
},
"personalization": {
"title": "Personalization",
"description": ["Storage of your preferences from previous visits",
"Collecting user feedback to improve our website",
"Recording of your interests in order to provide customised content and offers"]
}
}
}

View File

@ -1,31 +0,0 @@
{
"title": "Paramètres de confidencialitat",
"body": "Utilizam de cookies e de tecnologias similaras que fan mestièr pel foncionament del site web. De cookies addicionals son sonque utilizats amb vòstre acòrd. Sètz liure de donar, refusar o tirar vòstre acòrd a tot moment en utilizant lo ligam «Paramètres de cookies» enbàs de cada pagina. Podètz consentir a nòstra utilizacion dels cookies en clicant «Acceptar». Per mai d'informacions tocant quina informacion es collectada e partejada amb nòstre socis, vejatz nòstra --privacy-policy--.",
"privacyPolicy": "declaracion de proteccion de las donadas",
"legalNotice": "Mencions legalas",
"mySettings": "Mos paramètres",
"buttonNotAgree": "Soi pas d'acòrd",
"buttonAgree": "Acceptar",
"buttonSaveSelection": "Enregistrar la seleccion",
"buttonAgreeAll": "Tot acceptar",
"categories": {
"necessary": {
"title": "Necessaris",
"description": ["Requerits pel foncionament del site"]
},
"statistics": {
"title": "Estatisticas",
"description": ["Per susvelhar l'utilizacion del site e melhorar l'experiéncia dels utilizaires"]
},
"marketing": {
"title": "Marketing",
"description": ["Estudi de las accions de marketing"]
},
"personalization": {
"title": "Personalizacion",
"description": ["Gardar las preferéncias de visitas precedentas",
"Reculhir los comentaris dels utilizaire per melhorar nòstre site web",
"Enregistrar vòstres interesses per vos fornir de contenguts e publicitats personalizats<"]
}
}
}

View File

@ -1,79 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<title>bootstrap-cookie-banner demo page</title>
</head>
<body>
<div class="container">
<h1 class="mt-5 mb-4"><a href="../">bootstrap-cookie-consent-settings</a> demo page</h1>
<p>This is a modal dialog (cookie banner) and framework to handle the German and EU law (as written by EuGH,
1.10.2019 C-673/17) about cookies in a website. This banner requires Bootstrap.</p>
<h2>Usage</h2>
<h3>Construct</h3>
<p>Initialize the cookie consent framework with the constructor</p>
<p><code>var cookieSettings = new BootstrapCookieConsent()</code></p>
<h3>Show the Dialog</h3>
<p>On a new visit the dialog is shown automatically. For reconfiguration
show the Dialog again with <code>cookieSettings.showDialog()</code>.
</p>
<p>
<a href="javascript:showSettingsDialog()" class="btn btn-primary">Cookie Settings</a>
</p>
<h3>Read the settings</h3>
<p>Read all cookie settings with <code>cookieSettings.getSettings()</code></p>
<div class="card mb-4">
<div class="card-body">
<pre class="mb-0" id="settingsOutput"></pre>
</div>
</div>
<p>Read a specific cookie setting with <code>cookieSettings.getSettings('statistics')</code></p>
<div class="card">
<div class="card-body">
<pre class="mb-0" id="settingsAnalysisOutput"></pre>
</div>
</div>
<h2 class="mt-4">The code of this banner</h2>
<div class="card">
<div class="card-body">
<pre><code>var cookieSettings = new BootstrapCookieConsentSettings({
contentURL: "../cookie-consent-content",
privacyPolicyUrl: "privacy-policy.html",
legalNoticeUrl: "legal-notice.html",
postSelectionCallback: function () {
location.reload() // reload after selection
}
})</code></pre>
</div>
</div>
<h2 class="mt-4">More documentation</h2>
<p class="mb-5"><a href="https://github.com/shaack/bootstrap-cookie-consent-settings">Find more documentation and
the sourcecode on GitHub</a></p>
</div>
<script src="../src/bootstrap-cookie-consent-settings.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"
integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj"
crossorigin="anonymous"></script>
<script>
const cookieSettings = new BootstrapCookieConsentSettings({
contentURL: "../cookie-consent-content",
privacyPolicyUrl: "privacy-policy.html",
legalNoticeUrl: "legal-notice.html",
postSelectionCallback: function () {
location.reload() // reload after selection
}
})
function showSettingsDialog() {
cookieSettings.showDialog()
}
document.getElementById("settingsOutput").innerText = JSON.stringify(cookieSettings.getSettings())
document.getElementById("settingsAnalysisOutput").innerText = cookieSettings.getSettings("statistics")
</script>
</body>
</html>

View File

@ -1,17 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<title>bootstrap-cookie-banner demo page</title>
</head>
<body>
<div class="container">
<h1><a href="../">bootstrap-cookie-consent-settings</a></h1>
<p>This is the legal notice dummy page.</p>
<p>You have to set the legal notice URL in your content files.</p>
</div>
</body>
</html>

View File

@ -1,17 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<title>bootstrap-cookie-banner demo page</title>
</head>
<body>
<div class="container">
<h1><a href="../">bootstrap-cookie-consent-settings</a></h1>
<p>This is the privacy policy dummy page.</p>
<p>You have to set the privacy policy URL in your content files.</p>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,34 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<title>bootstrap-cookie-consent-settings demo page</title>
</head>
<body>
<div class="container mt-5">
<h1>bootstrap-cookie-consent-settings demo page</h1>
<p>This is a modal dialog (cookie banner) and framework to handle the German and EU law (as written by EuGH,
1.10.2019 C-673/17) about cookies in a website. <b>This banner requires Bootstrap.</b></p>
<p>We also have <b>another</b>, smaller cookie banner, <b>without dependencies</b>, which
does not offer the user an advanced configuration. You can find it in GitHub as
<a href="https://github.com/shaack/cookie-consent-js">cookie-consent-js</a>.</p>
<h2>Example</h2>
<ul>
<li><a href="examples/cookie-banner-example.html">Cookie consent banner with reload after selection</a></li>
</ul>
<h2>Further Information</h2>
<ul>
<li>
<a href="https://github.com/shaack/bootstrap-cookie-consent-settings">GitHub Repository and
Documentation</a>
</li>
<li>
<a href="https://www.npmjs.com/package/bootstrap-cookie-consent-settings">npm package</a>
</li>
</ul>
</div>
</body>
</html>

View File

@ -1,13 +0,0 @@
{
"name": "bootstrap-cookie-consent-settings",
"version": "4.1.4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "bootstrap-cookie-consent-settings",
"version": "4.1.4",
"license": "MIT"
}
}
}

View File

@ -1,28 +0,0 @@
{
"name": "bootstrap-cookie-consent-settings",
"version": "4.1.4",
"description": "Settings dialog in Bootstrap 5 and framework to handle the EU law (may 2020) about cookies in a website",
"browser": "./src/bootstrap-cookie-banner.js",
"scripts": {
"test": "echo \"No test specified\""
},
"repository": {
"type": "git",
"url": "git+https://github.com/shaack/bootstrap-cookie-banner.git"
},
"keywords": [
"bootstrap",
"cookie",
"consent",
"eu",
"gdpr",
"dsgvo"
],
"author": "Stefan Haack (shaack.com)",
"license": "MIT",
"bugs": {
"url": "https://github.com/shaack/bootstrap-cookie-banner/issues"
},
"homepage": "https://shaack.com",
"main": "src/bootstrap-cookie-consent-settings.js"
}

View File

@ -1,64 +0,0 @@
<?php
namespace Shaack;
/**
* Helper class, to handle the `bootstrap-cookie-content-settings` from a PHP backend.
* @author Stefan Haack (https://shaack.com)
*/
class BootstrapCookieConsentSettings {
private string $cookieName;
private int $cookieStorageDays;
public function __construct(string $cookieName = "cookie-consent-settings", int $cookieStorageDays = 365)
{
$this->cookieName = $cookieName;
$this->cookieStorageDays = $cookieStorageDays;
}
/**
* Read the whole consent cookie into an array.
* @return array
*/
public function getSettings() : array {
parse_str(@$_COOKIE[$this->cookieName], $array);
return array_map(function($value) {
return $value === "true";
}, $array);
}
/**
* Write a value to the consent cookie.
* @param string $optionName
* @return bool
*/
public function getSetting(string $optionName) : bool {
return !!$this->getSettings()[$optionName];
}
/**
* Write an array of values to the consent cookie.
* @param array $settings
* @return void
*/
public function setSettings(array $settings) : void {
$settings["necessary"] = true;
$encoded = http_build_query(array_map(function($value) {
return $value ? "true" : "false";
},$settings), "", "&");
setrawcookie($this->cookieName, $encoded, time() + (86400 * $this->cookieStorageDays), "/");
}
/**
* Read a value from the consent cookie.
* @param string $optionName
* @param bool $value
* @return void
*/
public function setSetting(string $optionName, bool $value) : void {
$settings = $this->getSettings();
$settings[$optionName] = $value;
$this->setSettings($settings);
}
}

View File

@ -0,0 +1,184 @@
<h1>Privacy Policy</h1>
<p>Last updated: April 16, 2024</p>
<p>This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.</p>
<p>We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the <a href="https://www.termsfeed.com/privacy-policy-generator/" target="_blank">Privacy Policy Generator</a>.</p>
<h2>Interpretation and Definitions</h2>
<h3>Interpretation</h3>
<p>The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.</p>
<h3>Definitions</h3>
<p>For the purposes of this Privacy Policy:</p>
<ul>
<li>
<p><strong>Account</strong> means a unique account created for You to access our Service or parts of our Service.</p>
</li>
<li>
<p><strong>Affiliate</strong> means an entity that controls, is controlled by or is under common control with a party, where &quot;control&quot; means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.</p>
</li>
<li>
<p><strong>Company</strong> (referred to as either &quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot; or &quot;Our&quot; in this Agreement) refers to Digital Data GmbH, Ludwig Rinn Str. 16, D-35452 Heuchelheim.</p>
</li>
<li>
<p><strong>Cookies</strong> are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.</p>
</li>
<li>
<p><strong>Country</strong> refers to: Hessen, Germany</p>
</li>
<li>
<p><strong>Device</strong> means any device that can access the Service such as a computer, a cellphone or a digital tablet.</p>
</li>
<li>
<p><strong>Personal Data</strong> is any information that relates to an identified or identifiable individual.</p>
</li>
<li>
<p><strong>Service</strong> refers to the Website.</p>
</li>
<li>
<p><strong>Service Provider</strong> means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.</p>
</li>
<li>
<p><strong>Usage Data</strong> refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).</p>
</li>
<li>
<p><strong>Website</strong> refers to Unterschrift, accessible from <a href="unterschrift.digitaldata.works" rel="external nofollow noopener" target="_blank">unterschrift.digitaldata.works</a></p>
</li>
<li>
<p><strong>You</strong> means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.</p>
</li>
</ul>
<h2>Collecting and Using Your Personal Data</h2>
<h3>Types of Data Collected</h3>
<h4>Personal Data</h4>
<p>While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:</p>
<ul>
<li>
<p>Email address</p>
</li>
<li>
<p>First name and last name</p>
</li>
<li>
<p>Usage Data</p>
</li>
</ul>
<h4>Usage Data</h4>
<p>Usage Data is collected automatically when using the Service.</p>
<p>Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.</p>
<p>When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.</p>
<p>We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.</p>
<h4>Tracking Technologies and Cookies</h4>
<p>We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:</p>
<ul>
<li><strong>Cookies or Browser Cookies.</strong> A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.</li>
<li><strong>Web Beacons.</strong> Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).</li>
</ul>
<p>Cookies can be &quot;Persistent&quot; or &quot;Session&quot; Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. You can learn more about cookies on <a href="https://www.termsfeed.com/blog/cookies/#What_Are_Cookies" target="_blank">TermsFeed website</a> article.</p>
<p>We use both Session and Persistent Cookies for the purposes set out below:</p>
<ul>
<li>
<p><strong>Necessary / Essential Cookies</strong></p>
<p>Type: Session Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.</p>
</li>
<li>
<p><strong>Cookies Policy / Notice Acceptance Cookies</strong></p>
<p>Type: Persistent Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies identify if users have accepted the use of cookies on the Website.</p>
</li>
<li>
<p><strong>Functionality Cookies</strong></p>
<p>Type: Persistent Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.</p>
</li>
</ul>
<p>For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.</p>
<h3>Use of Your Personal Data</h3>
<p>The Company may use Personal Data for the following purposes:</p>
<ul>
<li>
<p><strong>To provide and maintain our Service</strong>, including to monitor the usage of our Service.</p>
</li>
<li>
<p><strong>To manage Your Account:</strong> to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.</p>
</li>
<li>
<p><strong>For the performance of a contract:</strong> the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.</p>
</li>
<li>
<p><strong>To contact You:</strong> To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.</p>
</li>
<li>
<p><strong>To provide You</strong> with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.</p>
</li>
<li>
<p><strong>To manage Your requests:</strong> To attend and manage Your requests to Us.</p>
</li>
<li>
<p><strong>For business transfers:</strong> We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.</p>
</li>
<li>
<p><strong>For other purposes</strong>: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.</p>
</li>
</ul>
<p>We may share Your personal information in the following situations:</p>
<ul>
<li><strong>With Service Providers:</strong> We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.</li>
<li><strong>For business transfers:</strong> We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.</li>
<li><strong>With Affiliates:</strong> We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.</li>
<li><strong>With business partners:</strong> We may share Your information with Our business partners to offer You certain products, services or promotions.</li>
<li><strong>With other users:</strong> when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.</li>
<li><strong>With Your consent</strong>: We may disclose Your personal information for any other purpose with Your consent.</li>
</ul>
<h3>Retention of Your Personal Data</h3>
<p>The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.</p>
<p>The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.</p>
<h3>Transfer of Your Personal Data</h3>
<p>Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.</p>
<p>Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.</p>
<p>The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.</p>
<h3>Delete Your Personal Data</h3>
<p>You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.</p>
<p>Our Service may give You the ability to delete certain information about You from within the Service.</p>
<p>You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.</p>
<p>Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.</p>
<h3>Disclosure of Your Personal Data</h3>
<h4>Business Transactions</h4>
<p>If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.</p>
<h4>Law enforcement</h4>
<p>Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).</p>
<h4>Other legal requirements</h4>
<p>The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:</p>
<ul>
<li>Comply with a legal obligation</li>
<li>Protect and defend the rights or property of the Company</li>
<li>Prevent or investigate possible wrongdoing in connection with the Service</li>
<li>Protect the personal safety of Users of the Service or the public</li>
<li>Protect against legal liability</li>
</ul>
<h3>Security of Your Personal Data</h3>
<p>The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.</p>
<h2>Children's Privacy</h2>
<p>Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.</p>
<p>If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.</p>
<h2>Links to Other Websites</h2>
<p>Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.</p>
<p>We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.</p>
<h2>Changes to this Privacy Policy</h2>
<p>We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.</p>
<p>We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the &quot;Last updated&quot; date at the top of this Privacy Policy.</p>
<p>You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.</p>
<h2>Contact Us</h2>
<p>If you have any questions about this Privacy Policy, You can contact us:</p>
<ul>
<li>
<p>By email: info-flow(at)digitaldata.works</p>
</li>
<li>
<p>By phone number: +49(0)-641-202360</p>
</li>
<li>
<p>By mail: Ludwig Rinn Str. 16, D-35452 Heuchelheim</p>
</li>
</ul>