added imprint & privacy policy

This commit is contained in:
Chneemann 2024-08-03 03:13:56 +02:00
parent 3b20deaf56
commit f8d8d07879
17 changed files with 614 additions and 12 deletions

View file

@ -1,9 +1,13 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component'; import { HomeComponent } from './components/home/home.component';
import { ImprintComponent } from './shared/components/legal-information/imprint/imprint.component';
import { PrivacyPolicyComponent } from './shared/components/legal-information/privacy-policy/privacy-policy.component';
export const routes: Routes = [ export const routes: Routes = [
{ path: '', component: HomeComponent }, { path: '', component: HomeComponent },
{ path: 'login', component: HomeComponent }, { path: 'login', component: HomeComponent },
{ path: 'register', component: HomeComponent }, { path: 'register', component: HomeComponent },
{ path: 'forgot-password', component: HomeComponent }, { path: 'forgot-password', component: HomeComponent },
{ path: 'imprint', component: ImprintComponent },
{ path: 'privacy-policy', component: PrivacyPolicyComponent },
]; ];

View file

@ -7,7 +7,7 @@
If the email you entered exists on our server, you will receive a If the email you entered exists on our server, you will receive a
message with instructions on how to reset your password. message with instructions on how to reset your password.
</p> </p>
<a href="/login">To the login</a> <a routerLink="/login">To the login</a>
</div> </div>
} @else { } @else {
<div class="note"> <div class="note">

View file

@ -4,5 +4,5 @@
section { section {
background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)),
url(./../../../../assets/img/backgrounds/forgot-password.png); url(./../../../../assets/img/backgrounds/login.png);
} }

View file

@ -2,11 +2,12 @@ import { CommonModule } from '@angular/common';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { BtnLargeComponent } from '../../../shared/components/btn-large/btn-large.component'; import { BtnLargeComponent } from '../../../shared/components/btn-large/btn-large.component';
import { FormsModule, NgForm } from '@angular/forms'; import { FormsModule, NgForm } from '@angular/forms';
import { RouterLink } from '@angular/router';
@Component({ @Component({
selector: 'app-forgot-password', selector: 'app-forgot-password',
standalone: true, standalone: true,
imports: [CommonModule, BtnLargeComponent, FormsModule], imports: [CommonModule, BtnLargeComponent, FormsModule, RouterLink],
templateUrl: './forgot-password.component.html', templateUrl: './forgot-password.component.html',
styleUrl: './forgot-password.component.scss', styleUrl: './forgot-password.component.scss',
}) })

View file

@ -7,7 +7,7 @@
Please check your email to confirm your email address and complete the Please check your email to confirm your email address and complete the
registration process. registration process.
</p> </p>
<a href="/login">To the login</a> <a routerLink="/login">To the login</a>
</div> </div>
} @else { } @else {
<form <form

View file

@ -1,4 +1,4 @@
<footer> <footer>
<p>Privacy policy</p> <a routerLink="/privacy-policy" target="_blank">Privacy policy</a>
<p>Imprint</p> <a routerLink="/imprint" target="_blank">Imprint</a>
</footer> </footer>

View file

@ -11,7 +11,7 @@ footer {
height: 88px; height: 88px;
padding: 12px; padding: 12px;
z-index: 1; z-index: 1;
p { a {
padding: 0 36px; padding: 0 36px;
font-size: 18px; font-size: 18px;
font-weight: 500; font-weight: 500;

View file

@ -1,12 +1,11 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
@Component({ @Component({
selector: 'app-footer', selector: 'app-footer',
standalone: true, standalone: true,
imports: [], imports: [RouterLink],
templateUrl: './footer.component.html', templateUrl: './footer.component.html',
styleUrl: './footer.component.scss' styleUrl: './footer.component.scss',
}) })
export class FooterComponent { export class FooterComponent {}
}

View file

@ -0,0 +1,96 @@
<section>
<div class="content">
<div class="header">
<h1>Legal Notice (Imprint)</h1>
</div>
Information according to §5 TMG
<br /><br />
<p>Andre Kempf</p>
<p>Großschneidersweg 2a</p>
<p>76149 Karlsruhe</p>
<h3>Contact</h3>
<p>
Phone:
<a href="tel:01724180328">0172-4180328</a>
</p>
<p>
Email:
<a href="mailto:mail@andre-kempf.com">mail&#64;andre-kempf.com</a>
</p>
<br />
<h2>Disclaimer:</h2>
<h3>Liability for Content</h3>
<p>
The contents of our pages were created with the utmost care. However, we
cannot guarantee the accuracy, completeness, and timeliness of the
contents. As a service provider, we are responsible for our own content on
these pages according to § 7 Abs.1 TMG under general law. According to §§
8 to 10 TMG, however, we are not obligated as a service provider to
monitor transmitted or stored external information or to investigate
circumstances indicating illegal activity. Obligations to remove or block
the use of information under general law remain unaffected. However,
liability in this regard is only possible from the point in time when a
specific infringement becomes known. Upon notification of such violations,
we will remove this content immediately.
</p>
<h3>Liability for Links</h3>
<p>
Our offer contains links to external third-party websites over whose
content we have no influence. Therefore, we cannot assume any liability
for these external contents. The respective provider or operator of the
pages is always responsible for the contents of the linked pages. The
linked pages were checked for possible legal violations at the time of
linking. Illegal contents were not recognizable at the time of linking.
Permanent content control of the linked pages is not reasonable without
concrete evidence of an infringement. Upon notification of violations, we
will remove such links immediately.
</p>
<h3>Copyright</h3>
<p>
The content and works created by the site operators on these pages are
subject to German copyright law. Duplication, editing, distribution, and
any kind of exploitation outside the limits of copyright law require the
written consent of the respective author or creator. Downloads and copies
of this site are only permitted for private, non-commercial use. Insofar
as the contents on this site were not created by the operator, the
copyrights of third parties are respected. In particular, third-party
content is marked as such. Should you nevertheless become aware of a
copyright infringement, please inform us accordingly. Upon notification of
violations, we will remove such content immediately.
</p>
<h3>Data Protection</h3>
<p>
The use of our website is usually possible without providing personal
information. Insofar as personal data (e.g., name, address, or email
addresses) are collected on our pages, this is always done on a voluntary
basis as far as possible. These data will not be passed on to third
parties without your explicit consent. We point out that data transmission
over the Internet (e.g., communication by email) can have security gaps.
Complete protection of data from access by third parties is not possible.
The use of contact data published in the context of the imprint obligation
by third parties for sending unsolicited advertising and information
materials is hereby expressly prohibited. The operators of the pages
expressly reserve the right to take legal action in the event of the
unsolicited sending of advertising information, such as spam emails.
</p>
<br />
<p>
Imprint from the
<a href="https://www.impressum-generator.de/" target="_blank"
>Impressum Generator</a
>
of the
<a href="https://www.kanzlei-hasselbach.de/" target="_blank"
>Kanzlei Hasselbach, Lawyers for Labor Law and Family Law</a
>
</p>
</div>
</section>

View file

@ -0,0 +1,73 @@
section {
display: flex;
justify-content: center;
padding: 24px;
word-wrap: break-word;
overflow-wrap: break-word;
white-space: normal;
background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)),
url(./../../../../../assets/img/backgrounds/home.png);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.content {
text-align: center;
max-width: 1024px;
}
.header {
display: flex;
justify-content: center;
margin-bottom: 32px;
}
h1 {
font-size: 48px;
font-weight: 700;
padding-bottom: 24px;
}
h2 {
font-size: 32px;
font-weight: 700;
padding: 48px 0 24px 0;
}
h3 {
font-size: 20px;
font-weight: 700;
padding: 24px 0;
}
p {
font-size: 16px;
font-weight: 400;
padding-bottom: 10px;
}
a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
/*------------- RESPONSIVE -------------*/
@media screen and (max-width: 910px) {
h1 {
font-size: 42px;
}
}
@media screen and (max-width: 500px) {
h1 {
font-size: 34px;
}
h2 {
font-size: 27px;
}
}

View file

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

View file

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-imprint',
standalone: true,
imports: [CommonModule],
templateUrl: './imprint.component.html',
styleUrl: './imprint.component.scss',
})
export class ImprintComponent {}

View file

@ -0,0 +1,284 @@
<section>
<div class="content">
<div class="header">
<h1>Privacy Policy</h1>
</div>
<h2 id="content0">Preamble</h2>
<p>
With the following privacy policy, we would like to inform you about the
types of your personal data (hereinafter also referred to as 'data') we
process, for what purposes and to what extent. The privacy policy applies
to all processing of personal data conducted by us, both within the
provision of our services and particularly on our websites, in mobile
applications, and within external online presences, such as our social
media profiles (hereinafter collectively referred to as 'online offer').
</p>
<h2>Table of Contents</h2>
<ul class="index">
<li>
<a href="privacy-policy/#content0">Preamble</a>
</li>
<li>
<a href="privacy-policy#content1">Responsible person</a>
</li>
<li>
<a href="privacy-policy#content2">Overview of Processing Activities</a>
</li>
<li>
<a href="privacy-policy#content3">Relevant Legal Bases</a>
</li>
<li>
<a href="privacy-policy#content4">Security Measures</a>
</li>
<li>
<a href="privacy-policy#content5">Deletion of Data</a>
</li>
<li>
<a href="privacy-policy#content6">Rights of Data Subjects</a>
</li>
<li>
<a href="privacy-policy#content7"
>Changes and Updates to the Privacy Policy</a
>
</li>
<li>
<a href="privacy-policy#content8">Definitions of Terms</a>
</li>
</ul>
<h2 id="content1">Responsible person</h2>
<p>Andre Kempf</p>
<p>Großschneidersweg 2a</p>
<p>76149 Karlsruhe</p>
<br />
<p>
Phone:
<a href="tel:01724180328">0172-4180328</a>
</p>
<p>
Email:
<a href="mailto:mail@andre-kempf.com">mail&#64;andre-kempf.com</a>
</p>
<h2 id="content2">Overview of Processing Activities</h2>
<p>
The following overview summarizes the types of data processed and the
purposes of their processing, and refers to the data subjects.
</p>
<h3>Types of Data Processed</h3>
<ul>
<li>
Contact data, content data, usage data, metadata, communication data,
procedural data.
</li>
</ul>
<h3>Categories of Data Subjects</h3>
<ul>
<li>Communication partners</li>
</ul>
<h3>Purposes of Processing</h3>
<ul>
<li>
Contact requests and communication, management and response to
inquiries, feedback, provision of our online offer and
user-friendliness.
</li>
</ul>
<h2 id="content3">Relevant Legal Bases</h2>
<p>
<strong>Relevant Legal Bases under the GDPR:</strong><br />
The following is an overview of the legal bases of the GDPR on which we
process personal data. Please note that, in addition to the provisions of
the GDPR, national data protection regulations may apply in your or our
country of residence or domicile. If specific legal bases are relevant in
individual cases, we will inform you of these in the privacy policy.
</p>
<ul>
<li>
<strong
>Legitimate Interests (Art. 6 para. 1 sentence 1 lit. f GDPR):</strong
><br />
The processing is necessary for the purposes of the legitimate interests
pursued by the controller or by a third party, except where such
interests are overridden by the interests or fundamental rights and
freedoms of the data subject which require protection of personal data.
</li>
</ul>
<p>
<strong>National Data Protection Regulations in Germany:</strong><br />
In addition to the data protection regulations of the GDPR, national
regulations on data protection apply in Germany. This includes, in
particular, the Federal Data Protection Act (BDSG). The BDSG contains
specific regulations on the right of access, the right to deletion, the
right to object, the processing of special categories of personal data,
the processing for other purposes, and the transmission and automated
decision-making in individual cases, including profiling. Furthermore, the
data protection laws of the individual federal states may apply.
</p>
<h2 id="content4">Security Measures</h2>
<p>
We take appropriate technical and organizational measures in accordance
with the legal requirements, taking into account the state of the art, the
implementation costs, and the nature, scope, context, and purposes of
processing, as well as the varying likelihood and severity of the risks to
the rights and freedoms of natural persons, to ensure a level of security
appropriate to the risk.
</p>
<p>
The measures include, in particular, securing the confidentiality,
integrity, and availability of data by controlling physical and electronic
access to the data as well as the related access, input, transfer,
securing availability, and separation. Furthermore, we have established
procedures that ensure the exercise of data subject rights, the deletion
of data, and responses to data risks. Furthermore, we take the protection
of personal data into account during the development or selection of
hardware, software, and procedures in accordance with the principle of
data protection by design and by default.
</p>
<p>
TLS/SSL encryption (https): To protect the data of users that are
transmitted via our online services, we use TLS/SSL encryption. Secure
Sockets Layer (SSL) is the standard technology for securing internet
connections by encrypting data transmitted between a website or app and a
browser (or between two servers). Transport Layer Security (TLS) is an
updated and more secure version of SSL. Hyper Text Transfer Protocol
Secure (HTTPS) is displayed in the URL when a website is secured by an
SSL/TLS certificate.
</p>
<h2 id="content5">Deletion of Data</h2>
<p>
The data processed by us will be deleted in accordance with the legal
requirements as soon as their permitted consents are revoked or other
permissions cease to apply (e.g., if the purpose for processing this data
no longer applies or is not necessary for the purpose). If the data is not
deleted because it is required for other and legally permissible purposes,
its processing will be restricted to these purposes. This means that the
data will be blocked and not processed for other purposes. This applies,
for example, to data that must be stored for commercial or tax reasons or
whose storage is necessary for the assertion, exercise, or defense of
legal claims or for the protection of the rights of another natural or
legal person. Our data protection notices may also contain further details
on the retention and deletion of data, which take precedence for the
respective processing operations.
</p>
<h2 id="content6">Rights of Data Subjects</h2>
<p>
Rights of data subjects under the GDPR: As a data subject, you have
various rights under the GDPR, which are particularly set out in Articles
15 to 21 GDPR:
</p>
<strong>Right to Object:</strong>
<ul>
<li>
You have the right, on grounds relating to your particular situation, to
object at any time to the processing of personal data concerning you
which is based on Article 6(1)(e) or (f) GDPR; this also applies to
profiling based on these provisions. If personal data concerning you is
processed for direct marketing purposes, you have the right to object at
any time to the processing of personal data concerning you for such
marketing; this also applies to profiling to the extent that it is
related to such direct marketing.
</li>
</ul>
<strong>Right to Withdraw Consent:</strong>
<ul>
<li>You have the right to withdraw your consents at any time.</li>
</ul>
<strong>Right of Access:</strong>
<ul>
<li>
You have the right to request confirmation as to whether data concerning
you is being processed and to access information about this data as well
as to further information and a copy of the data in accordance with the
legal requirements.
</li>
</ul>
<strong>Right to Rectification:</strong>
<ul>
<li>
You have the right, in accordance with the legal requirements, to
request the completion of data concerning you or the rectification of
inaccurate data concerning you.
</li>
</ul>
<strong>Right to Erasure and Restriction of Processing:</strong>
<ul>
<li>
You have the right, in accordance with the legal requirements, to
request that data concerning you be deleted immediately, or
alternatively, in accordance with the legal requirements, to request a
restriction of the processing of the data.
</li>
</ul>
<strong>Right to Data Portability:</strong>
<ul>
<li>
You have the right to receive the data concerning you that you have
provided to us in a structured, commonly used, and machine-readable
format in accordance with the legal requirements, or to request that it
be transmitted to another controller.
</li>
</ul>
<strong>Right to Lodge a Complaint with a Supervisory Authority:</strong>
<ul>
<li>
You also have the right, in accordance with the legal requirements, to
lodge a complaint with a supervisory authority, in particular in the
member state of your habitual residence, place of work, or place of the
alleged infringement, if you consider that the processing of personal
data relating to you infringes the GDPR.
</li>
</ul>
<h2 id="content7">Changes and Updates to the Privacy Policy</h2>
<p>
We kindly ask you to regularly inform yourself about the content of our
privacy policy. We adapt the privacy policy as soon as the changes in the
data processing we perform make this necessary. We will inform you as soon
as the changes require your cooperation (e.g., consent) or another
individual notification.
</p>
<p>
If we provide addresses and contact information of companies and
organizations in this privacy policy, please note that the addresses may
change over time and we ask you to check the information before contacting
us.
</p>
<h2 id="content8">Definitions of Terms</h2>
<p>
In this section, you will find an overview of the terminology used in this
privacy policy. Many of the terms are taken from the law and are primarily
defined in Art. 4 GDPR. The legal definitions are binding. The following
explanations, on the other hand, are primarily intended to aid
understanding. The terms are sorted alphabetically.
</p>
<p>
<strong>Personal Data:</strong> 'Personal data' means any information
relating to an identified or identifiable natural person (hereinafter
'data subject'); an identifiable natural person is one who can be
identified, directly or indirectly, in particular by reference to an
identifier such as a name, an identification number, location data, an
online identifier (e.g., cookie) or to one or more factors specific to the
physical, physiological, genetic, mental, economic, cultural or social
identity of that natural person.
</p>
<p>
<strong>Controller:</strong> 'Controller' means the natural or legal
person, public authority, agency or other body which, alone or jointly
with others, determines the purposes and means of the processing of
personal data.
</p>
<p>
<strong>Processing:</strong> 'Processing' means any operation or set of
operations which is performed on personal data or on sets of personal
data, whether or not by automated means, such as collection, recording,
organization, structuring, storage, adaptation or alteration, retrieval,
consultation, use, disclosure by transmission, dissemination or otherwise
making available, alignment or combination, restriction, erasure or
destruction.
</p>
</div>
</section>

View file

@ -0,0 +1,80 @@
section {
display: flex;
justify-content: center;
padding: 24px;
word-wrap: break-word;
overflow-wrap: break-word;
white-space: normal;
background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)),
url(./../../../../../assets/img/backgrounds/home.png);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.content {
max-width: 1024px;
}
.header {
display: flex;
justify-content: center;
margin-bottom: 32px;
}
h1 {
width: 100%;
font-size: 61px;
font-weight: 700;
text-align: center;
}
h2 {
font-size: 32px;
font-weight: 700;
padding: 24px 0 12px 0;
}
h3 {
font-size: 20px;
font-weight: 700;
padding: 24px 0;
}
p {
font-size: 16px;
font-weight: 400;
padding-bottom: 10px;
}
ul {
padding: 12px;
li {
padding: 5px;
}
}
a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
/*------------- RESPONSIVE -------------*/
@media screen and (max-width: 910px) {
h1 {
font-size: 42px;
}
}
@media screen and (max-width: 500px) {
h1 {
font-size: 34px;
}
h2 {
font-size: 27px;
}
}

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,11 @@
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-privacy-policy',
standalone: true,
imports: [CommonModule],
templateUrl: './privacy-policy.component.html',
styleUrl: './privacy-policy.component.scss',
})
export class PrivacyPolicyComponent {}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 998 KiB