Skip to content

Commit

Permalink
Move imprint and privacy to own file
Browse files Browse the repository at this point in the history
  • Loading branch information
fabian-emilius committed Dec 2, 2024
1 parent 26e8041 commit 817b504
Show file tree
Hide file tree
Showing 10 changed files with 134 additions and 20 deletions.
2 changes: 0 additions & 2 deletions client/public/generate-runtime-env.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ const ALLOWED_ENVIRONMENT_VARIABLES = [
'KEYCLOAK_CLIENT_ID',
'CHAIR_NAME',
'CHAIR_URL',
'PRIVACY',
'IMPRINT',
// environments with defaults
'ALLOW_SUGGESTED_TOPICS',
'DEFAULT_SUPERVISOR_UUID',
Expand Down
41 changes: 41 additions & 0 deletions client/public/imprint.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<h2>Publisher</h2>
<p>Technical University of Munich <br>Postal address: Arcisstrasse 21, 80333 Munich <br>Telephone: +49-(0)89-289-01 <br>Fax:
+49-(0)89-289-22000 <br>Email: poststelle(at)tum.de </p>
<h2>Authorized to represent</h2>
<p>The Technical University of Munich is legally represented by the President Prof. Dr. Thomas F. Hofmann.</p>
<h2>VAT identification number</h2>
<p>DE811193231 (in accordance with § 27a of the German VAT tax act - UStG)</p>
<h2>Responsible for content</h2>
<p>Prof. Dr. Stephan Krusche <br>Boltzmannstrasse 3 <br>85748 Garching </p>
<h2>Terms of use</h2>
<p>Texts, images, graphics as well as the design of these Internet pages may be subject to copyright. The following are
not protected by copyright according to §5 of copyright law (Urheberrechtsgesetz (UrhG)).</p>
<p>Laws, ordinances, official decrees and announcements as well as decisions and officially written guidelines for
decisions and other official works that have been published in the official interest for general knowledge, with the
restriction that the provisions on prohibition of modification and indication of source in Section 62 (1) to (3) and
Section 63 (1) and (2) UrhG apply accordingly.</p>
<p>As a private individual, you may use copyrighted material for private and other personal use within the scope of
Section 53 UrhG. Any duplication or use of objects such as images, diagrams, sounds or texts in other electronic or
printed publications is not permitted without our agreement. This consent will be granted upon request by the person
responsible for the content. The reprinting and evaluation of press releases and speeches are generally permitted with
reference to the source. Furthermore, texts, images, graphics and other files may be subject in whole or in part to
the copyright of third parties. The persons responsible for the content will also provide more detailed information on
the existence of possible third-party rights.</p>
<h2>Liability disclaimer</h2>
<p>The information provided on this website has been collected and verified to the best of our knowledge and belief.
However, there will be no warranty that the information provided is up-to-date, correct, complete, and available.
There is no contractual relationship with users of this website.</p>
<p>We accept no liability for any loss or damage caused by using this website. The exclusion of liability does not apply
where the provisions of the German Civil Code (BGB) on liability in case of breach of official duty are applicable (§
839 of the BGB). We accept no liability for any loss or damage caused by malware when accessing or downloading data or
the installation or use of software from this website.</p>
<p>Where necessary in individual cases: the exclusion of liability does not apply to information governed by the
Directive 2006/123/EC of the European Parliament and of the Council. This information is guaranteed to be accurate and
up to date.</p>
<h2>Links</h2>
<p>Our own content is to be distinguished from cross-references (“links”) to websites of other providers. These links
only provide access for using third-party content in accordance with § 8 of the German telemedia act (TMG). Prior to
providing links to other websites, we review third-party content for potential civil or criminal liability. However, a
continuous review of third-party content for changes is not possible, and therefore we cannot accept any
responsibility. For illegal, incorrect, or incomplete content, including any damage arising from the use or non-use of
third-party information, liability rests solely with the provider of the website.</p>
68 changes: 68 additions & 0 deletions client/public/privacy.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<p>The Research Group for Applied Education Technologies (referred to as AET in the following paragraphs) from the
Technical University of Munich takes the protection of private data seriously. We process the automatically collected
personal data obtained when you visit our website, in compliance with the applicable data protection regulations, in
particular the Bavarian Data Protection (BayDSG), the Telemedia Act (TMG) and the General Data Protection Regulation
(GDPR). Below, we inform you about the type, scope and purpose of the collection and use of personal data.</p>
<h2 id=logging>Logging</h2>
<p>The web servers of the AET are operated by the AET itself, based in Boltzmannstr. 3, 85748 Garching b. Munich. Every
time our website is accessed, the web server temporarily processes the following information in log files:</p>
<ul>
<li>IP address of the requesting computer</li>
<li>Date and time of access</li>
<li>Name, URL and transferred data volume of the accessed file</li>
<li>Access status (requested file transferred, not found etc.)</li>
<li>Identification data of the browser and operating system used (if transmitted by the requesting web browser)</li>
<li>Website from which access was made (if transmitted by the requesting web browser)</li>
</ul>
<p>The processing of the data in this log file takes place as follows:</p>
<ul>
<li>The log entries are continuously updated automatically evaluated in order to be able to detect attacks on the web
server and react accordingly.
</li>
<li>In individual cases, i.e. in the case of reported disruptions, errors and security incidents, a manual analysis is
carried out.
</li>
<li>The IP addresses contained in the log entries are not merged with other databases by AET, so that no conclusions
can be drawn about individual persons.
</li>
</ul>
<h2 id=use-and-transfer-of-personal-data>Use and transfer of personal data</h2>
<p>Our website can be used without providing personal data. All services that might require any form of personal data
(e.g. registration for events, contact forms) are offered on external sites, linked here. The use of contact data
published as part of the imprint obligation by third parties to send unsolicited advertising and information material
is hereby prohibited. The operators of the pages reserve the right to take legal action in the event of the
unsolicited sending of advertising information, such as spam mails.</p>
<h2 id=revocation-of-your-consent-to-data-processing>Revocation of your consent to data processing</h2>
<p>Some data processing operations require your express consent possible. You can revoke your consent that you have
already given at any time. A message by e-mail is sufficient for the revocation. The lawfulness of the data processing
that took place up until the revocation remains unaffected by the revocation.</p>
<h2 id=right-to-file-a-complaint-with-the-responsible-supervisory-authority>Right to file a complaint with the
responsible supervisory authority</h2>
<p>You have the right to lodge a complaint with the responsible supervisory authority in the event of a breach of data
protection law. The responsible supervisory authority with regard to data protection issues is the Federal
Commissioner for Data Protection and Freedom of Information of the state where our company is based. The following
link provides a list of data protection authorities and their contact details: <a
href=https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html class=link--external
rel=noopener target=_blank>https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html</a>.
</p>
<h2 id=right-to-data-portability>Right to data portability</h2>
<p>You have the right to request the data that we process automatically on the basis of your consent or in fulfillment
of a contract to be handed over to you or a third party. The data is provided in a machine-readable format. If you
request the direct transfer of the data to another person responsible, this will only be done if it is technically
feasible.</p>
<h2 id=right-to-information-correction-blocking-and-deletion>Right to information, correction, blocking, and
deletion</h2>
<p>You have at any time within the framework of the applicable legal provisions the right to request information about
your stored personal data, the origin of the data, its recipient and the purpose of the data processing, and if
necessary, a right to correction, blocking or deletion of this data. You can contact us at any time via <a
href=mailto:[email protected]>[email protected]</a> regarding this and other questions on the subject of
personal data.</p>
<h2 id=ssltls-encryption>SSL/TLS encryption</h2>
<p>For security reasons and to protect the transmission of confidential content that you send to us send as a site
operator, our website uses an SSL/TLS encryption. This means that data that you transmit via this website cannot be
read by third parties. You can recognize an encrypted connection by the “https://” address line in your browser and by
the lock symbol in the browser line.</p>
<h2 id=e-mail-security>E-mail security</h2>
<p>If you e-mail us, your e-mail address will only be used for correspondence with you. Please note that data
transmission on the Internet can have security gaps. Complete protection of data from access by third parties is not
possible.</p>
4 changes: 2 additions & 2 deletions client/src/components/Footer/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import packageJson from '../../../package.json'

const links = [
{ link: '/about', label: 'About', visible: true },
{ link: '/imprint', label: 'Imprint', visible: !!GLOBAL_CONFIG.imprint_text },
{ link: '/privacy', label: 'Privacy', visible: !!GLOBAL_CONFIG.privacy_text },
{ link: '/imprint', label: 'Imprint', visible: true },
{ link: '/privacy', label: 'Privacy', visible: true },
]

interface IFooterProps {
Expand Down
3 changes: 0 additions & 3 deletions client/src/config/global.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,6 @@ export const GLOBAL_CONFIG: IGlobalConfig = {
},
},

privacy_text: getEnvironmentVariable('PRIVACY') || '',
imprint_text: getEnvironmentVariable('IMPRINT') || '',

default_supervisors: getEnvironmentVariable('DEFAULT_SUPERVISOR_UUID')?.split(';') || [],
calendar_url: getEnvironmentVariable('CALDAV_URL') || '',
server_host: getEnvironmentVariable('SERVER_HOST') || 'http://localhost:8080',
Expand Down
3 changes: 0 additions & 3 deletions client/src/config/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ export interface IGlobalConfig {
}
>

privacy_text: string
imprint_text: string

default_supervisors: string[]
calendar_url: string

Expand Down
13 changes: 10 additions & 3 deletions client/src/pages/ImprintPage/ImprintPage.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
import { Title } from '@mantine/core'
import DocumentEditor from '../../components/DocumentEditor/DocumentEditor'
import { GLOBAL_CONFIG } from '../../config/global'
import { usePageTitle } from '../../hooks/theme'
import PublicArea from '../../app/layout/PublicArea/PublicArea'
import { useEffect, useState } from 'react'

const ImprintPage = () => {
usePageTitle('Imprint')

const [content, setContent] = useState('')

useEffect(() => {
fetch('/imprint.html')
.then((res) => res.text())
.then((res) => setContent(res))
}, [])

return (
<PublicArea withBackButton={true}>
<Title mb='md'>Imprint</Title>
<DocumentEditor value={GLOBAL_CONFIG.imprint_text} />
<div dangerouslySetInnerHTML={{ __html: content }} />
</PublicArea>
)
}
Expand Down
13 changes: 10 additions & 3 deletions client/src/pages/PrivacyPage/PrivacyPage.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
import { Title } from '@mantine/core'
import { GLOBAL_CONFIG } from '../../config/global'
import DocumentEditor from '../../components/DocumentEditor/DocumentEditor'
import { usePageTitle } from '../../hooks/theme'
import PublicArea from '../../app/layout/PublicArea/PublicArea'
import { useEffect, useState } from 'react'

const PrivacyPage = () => {
usePageTitle('Privacy')

const [content, setContent] = useState('')

useEffect(() => {
fetch('/privacy.html')
.then((res) => res.text())
.then((res) => setContent(res))
}, [])

return (
<PublicArea withBackButton={true}>
<Title mb='md'>Privacy</Title>
<DocumentEditor value={GLOBAL_CONFIG.privacy_text} />
<div dangerouslySetInnerHTML={{ __html: content }} />
</PublicArea>
)
}
Expand Down
2 changes: 0 additions & 2 deletions docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,5 @@ These are all environment variables that can be used to configure the applicatio
| CUSTOM_DATA | client | `{"GITHUB":{"label":"Github Profile","required":false}}` | Additional data the user can add to the profile |
| THESIS_FILES | client | `{"PRESENTATION":{"label":"Presentation","description":"Presentation (PDF)","accept":"pdf","required":true},"PRESENTATION_SOURCE":{"label":"Presentation Source","description":"Presentation Source (KEY, PPTX)","accept":"any","required":false},"FEEDBACK_LOG":{"label":"Feedback Log","description":"Feedback Log (PDF)","accept":"pdf","required":false}}` | Additional files the student can add to the thesis |
| DEFAULT_SUPERVISOR_UUID | client | | The user UUID from the database if a default supervisor should be selected when creating topics or theses |
| PRIVACY | client | | Privacy content (Allows richtext format) |
| IMPRINT | client | | Imprint content (Allows richtext format) |
| CHAIR_NAME | client | Thesis Track | Chair name |
| CHAIR_URL | client | window.origin | URL to chair website |
5 changes: 3 additions & 2 deletions docs/PRODUCTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,16 @@ labels:
- "traefik.http.routers.client.priority=1"
expose:
- "80"
volumes:
- ./templates/privacy.html:/usr/share/nginx/html/privacy.html
- ./templates/imprint.html:/usr/share/nginx/html/imprint.html
environment:
- SERVER_HOST=
- KEYCLOAK_HOST=
- KEYCLOAK_REALM_NAME=
- KEYCLOAK_CLIENT_ID=
- CHAIR_NAME=
- CHAIR_URL=
- PRIVACY=
- IMPRINT=
```
## Reverse Proxy
Expand Down

0 comments on commit 817b504

Please sign in to comment.