RRZE-Webteam/rrze-shorturl

Sinnvolle Features? Passwort-Schutz, Max Zugriffe, Deaktivierungslink

Closed this issue · 1 comments

Das bietet ein anderen Shortener an. Was davon wäre für uns sinnvoll?

  • Wunsch-URL: haben wir. Es ist ein an die IdM-gebundenes Recht, das per default auf false gesetzt wird und in den Settings per Checkbox einstellbar ist.

  • Passwort-Schutz: aufwandsarm. Sinnvoll wird es aber erst dann, wenn der Long-URL auch passwort-geschützt ist. Wir bieten einen Endpoint an, der zwar mit SSO bzw App-Password geschützt ist, aber die Paare Long/Short ausgibt.

  • Gültigkeitszeitraum: gültig ist grundsätzlich ab sofort (sobald der cronjob die .htaccess geschrieben hat), Ende ist per default "in einem Jahr", kann aber von Anwendern festgelegt werden (maximal in 1 Jahr) und beliebig oft verlängert werden. Wir möchte primär, dass keine alten Links auf ewig in der .htaccess auftauchen und sie unnötig aufblähen.

  • Max Zugriffe : mir fällt zwar kein Szenario ein, dass das erforderte, aber es wäre aufwandsarm.

  • Deaktivierungslink : hier müssten wir einen hash in den Link einbauen, der die Zuordnung zur IdM ermöglicht. Wir lassen Editieren und Löschen nur für die Links zu, die mit der gleichen IdM erstellt wurden. Der Link dürfte daher nicht weitergegeben werden, aber das läge in der Verantwortung des Users. Deaktivieren können unsere User den Link aber manuell jetzt schon jederzeit.

  • Den Referrer vertuschen : nicht nur Bösewichte nutzen diese Technik, sondern auch manche Werbekampagnen. Ich glaube nicht, dass wir das brauchen.

  • QR-Code: haben wir. Sogar mit FAU-Logo :o)

  • Browser-Erweiterung: aufwandsarm. Wir haben bereits jetzt alle Funktionalität des Plugins als REST-API-Endpoints (gesichert durch SSO bzw App-Password)

manifest.json :

{
  "manifest_version": 3,
  "name": "Meine Browsererweiterung",
  "version": "1.0",
  "description": "Eine Beschreibung deiner Erweiterung",
  "permissions": ["activeTab"],
  "action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "icon-16.png",
      "48": "icon-48.png",
      "128": "icon-128.png"
    }
  },
  "icons": {
    "16": "icon-16.png",
    "48": "icon-48.png",
    "128": "icon-128.png"
  }
}

popup.html :

<!DOCTYPE html>
<html>
<head>
  <title>Meine Browsererweiterung</title>
  <script src="popup.js"></script>
</head>
<body>
  <h1>Meine Browsererweiterung</h1>
  <input type="text" id="inputField">
  <button id="submitButton">Senden</button>
  <div id="output"></div>
</body>
</html>

popup.js

document.addEventListener('DOMContentLoaded', function() {
  const submitButton = document.getElementById('submitButton');
  const inputField = document.getElementById('inputField');
  const outputDiv = document.getElementById('output');

  submitButton.addEventListener('click', function() {
    const inputValue = inputField.value;
    fetch('DEIN_REST_API_ENDPOINT', {
      method: 'POST',
      body: JSON.stringify({ data: inputValue }),
      headers: {
        'Content-Type': 'application/json'
      }
    })
    .then(response => response.json())
    .then(data => {
      outputDiv.innerText = JSON.stringify(data);
    })
    .catch(error => {
      console.error('Fehler beim API-Aufruf:', error);
    });
  });
});

Screenshot 2024-04-26 at 10 30 05

alles davon für uns Sinnvolle in 3.1.11 umgesetzt