feat: imprint

This commit is contained in:
Max Hohlfeld 2024-07-22 10:55:02 +02:00
parent 7bfb173887
commit 103227ea40
9 changed files with 455 additions and 347 deletions

668
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -29,4 +29,5 @@ actix-web-static-files = "4.0"
static-files = "0.2.1"
[build-dependencies]
built = "0.7.4"
static-files = "0.2.1"

View File

@ -5,6 +5,8 @@ use std::{
};
fn main() -> std::io::Result<()> {
built::write_built_file().expect("Failed to acquire build-time information");
NpmBuild::new("./static").change_detection().install()?;
let dist_path = Path::new("./static/dist");

14
src/endpoints/imprint.rs Normal file
View File

@ -0,0 +1,14 @@
use actix_web::Responder;
use askama::Template;
use askama_actix::TemplateToResponse;
#[derive(Template)]
#[template(path = "imprint.html")]
struct ImprintTemplate {}
#[actix_web::get("/imprint")]
pub async fn get_imprint() -> impl Responder {
let template = ImprintTemplate {};
template.to_response()
}

View File

@ -9,6 +9,7 @@ mod events;
mod export;
mod location;
mod user;
mod imprint;
#[derive(Deserialize)]
pub struct IdPath {
@ -60,4 +61,6 @@ pub fn init(cfg: &mut ServiceConfig) {
cfg.service(export::get_availability::get);
cfg.service(export::get_availability_data::get);
cfg.service(imprint::get_imprint);
}

View File

@ -25,6 +25,7 @@ mod filters;
mod postgres_session_store;
include!(concat!(env!("OUT_DIR"), "/generated.rs"));
include!(concat!(env!("OUT_DIR"), "/built.rs"));
pub enum Command {
Migrate,

View File

@ -48,7 +48,12 @@ where
let is_logged_in = request.get_identity().is_ok();
// Don't forward to `/login` if we are already on `/login`.
if !is_logged_in && request.path() != "/login" && !request.path().starts_with("/reset-password") && !request.path().starts_with("/static") {
if !is_logged_in
&& request.path() != "/login"
&& request.path() != "/imprint"
&& !request.path().starts_with("/reset-password")
&& !request.path().starts_with("/static")
{
let (request, _pl) = request.into_parts();
let response = HttpResponse::Found()

View File

@ -55,19 +55,30 @@
{% endblock %}
<footer class="footer mt-auto">
<div class="content level">
<p class="level-item has-text-centered">
<a class="link is-info">Datenschutz &amp; Impressum</a>
<div class="level container">
<div class="level-left">
<p class="level-item">
<a class="link is-info" href="/imprint">Impressum &amp; Datenschutz</a>
</p>
</div>
<p class="level-item">
Brass ist freie and quelloffene Software
</p>
<p class="level-item has-text-centered">
<a class="link is-info">verwendete Softwarebibliotheken</a>
</p>
<div class="level-right">
<div class="control level-item">
<div class="tags has-addons">
<span class="tag is-dark">Version</span>
<span class="tag is-success">{{ crate::PKG_VERSION }}</span>
</div>
</div>
<p class="level-item has-text-centered">
<a class="link is-info">Quellcode</a>
<p class="level-item">
<a class="link is-info" href="https://git.tfld.de/Schwarztee/brass" target="_blank">Quellcode</a>
</p>
</div>
</div>
</footer>
</body>

77
templates/imprint.html Normal file
View File

@ -0,0 +1,77 @@
{% extends "base.html" %}
{% block body %}
<section class="section container content">
<div class="level">
<div class="level-left">
<h1 class="level-item">Impressum</h1>
</div>
<div class="level-right">
<a class="level-item button is-link" href="/">Startseite</a>
</div>
</div>
<p>
Freiwillige Feuerwehr Leipzig-Ost<br />
Kamerad Max Hohlfeld<br />
Gerichtsweg 9<br />
04103 Leipzig<br />
</p>
<p>
E-Mail: max.hohlfeld@brasiwa-leipzig.de
</p>
<h1>Datenschutzerklärung</h1>
<h3>Name und Kontaktdaten des Verantwortlichen</h3>
<p> Kamerad Max Hohlfeld </p>
<p> E-Mail: max.hohlfeld@brasiwa-leipzig.de </p>
<h3>Erhobene Daten</h3>
<p>
Durch das Besuchen dieser Website übermittelt dein Browser automatisch Verkehrdaten an den Webserver. Von diesen
werden jedoch nur folgende Informationen in einer Logdatei protokolliert:
</p>
<ul>
<li>Zeit der Anfrage, z.B. <code>[06/Aug/2021:17:48:09 +0200]</code></li>
<li>die erste Zeile der Anfrage (HTTP-Methode, Ziel und HTTP-Version), z.B. <code>GET /robots.txt HTTP/1.1</code>
</li>
<li>HTTP-Status, z.B. <code>404</code></li>
</ul>
<p>
Diese Informationen dienen ausschließlich der Fehlersuche bei technischen Problemen. Die Rechtsgrundlage dafür ist
Art. 6 Absatz 1 Satz 1f DSGVO. Nach 24h werden die Protokolle automatisiert gelöscht.
</p>
<p>
Durch Nutzung der Login-Funktionalität wird ein Sitzungscookie gesetzt. Dies dient der Identifizierung deines
Browsers gegenüber dem Server. Die darinliegende ID ist einzigartig und beinhaltet keinerlei personenbezogene Daten.
Der Cookie wird spätestens nach Schließen deines Browsers gelöscht.
</p>
<p>
Die Nutzung von Brass findert zwingend mit einem Nutzerprofil statt. Mit dem Profil sind folgende personenbezogene
Daten verknüpft:
</p>
<ul>
<li>Vor- und Nachname z.B. <code>Max Mustermann</code></li>
<li>E-Mail Adresse z.B. <code>max.mustermann@brasiwa-leipzig.de</code></li>
<li>Funktion für Brandsicherheitswachen z.B. <code>Wachhabender</code></li>
<li>Brandsicherheitswachbereich z.B. <code>Bereich Ost</code></li>
<li>Zeitpunkt deines letzten Logins z.B. <code>2021-06-11 09:40:47</code></li>
</ul>
<h3>Deine Rechte</h3>
<ul>
<li>Recht auf Auskunft über die betroffenen personenbezogenen Daten gemäß Art. 15 DSGVO</li>
<li>Recht auf Berichtigung gemäß Art. 16 DSGVO</li>
<li>Recht auf Löschung gemäß Art. 17 DSGVO</li>
<li>Recht auf Einschränkung der Verarbeitung gemäß Art. 18 DSGVO</li>
<li>Recht auf Datenübertragbarkeit gemäß Art. 20 DSGVO</li>
<li>Widerspruchsrecht gegen die Verarbeitung gemäß Art. 21 DSGVO</li>
<li>Beschwerderecht bei einer Aufsichtsbehörde gemäß Art. 77 DSGVO</li>
</ul>
<h1>Copyright</h1>
</section>
{% endblock %}