Kategorien
JavaScript & jQuery Programmierung Webdesign

Permissions-API: Berechtigungen gebündelt verwalten

Viele der neuen JavaScript-APIs, wie Geolocation oder Notifications, erfordern besondere Berechtigungen, die der Nutzer einer Website einräumen muss. Jede API bringt dabei ihre eigenen Methoden mit, um Rechte abzufragen und einzuräumen. Aufgrund der Vielzahl dieser neuen Schnittstellen, die aufgrund besonderer Browserfunktionen die Zustimmung des Nutzers einholen müssen, ist es schwierig, einen Überblick über zugelassene und blockierte APIs zu bekommen. Mit der neuen Permissions-API hat man endlich die Berechtigungen aller APIs im Blick und kann den jeweiligen Status abfragen.

permissionsapi-teaser_DE

Zentrale Verwaltung aller Berechtigungen

Gerade wenn für eine JavaScript-Anwendungen erforderlich ist, dass mehrere APIs zugelassen sind, kann die neue Permissions-API hilfreich sein. Über die „query()“-Methode des neuen „permissions“-Objekts kann man einzelne APIs auf ihren Berechtigungsstatus prüfen.

navigator.permissions.query({
  name: "geolocation"
}).then(function(e) {
  console.log(e.status);
});

Über die Methode „query()“ werden als Objektliteral verschiedene Optionen übergeben. In erster Linie wird der Name der API – im Beispiel „geolocation“ zur Standortbestimmung – angegeben. Je nach API stehen einem weitere Optionen zur Verfügung, die in die Prüfung mit einbezogen werden können.

permissions-api_berechtigungen
Übersicht der zugelassenen und blockierten Berechtigungen für eine Domain

Über die Promises-Methode „then()“ wird der Status der Berechtigung zurückgegeben. Der Status kann „prompt“, „granted“ oder „denied“ sein. Hat man eine API bislang weder zugelassen noch abgelehnt, wird „prompt“ wiedergegeben. Wurde vom Browser bereits eine Berechtigungsanfrage gestellt und akzeptiert, wird „granted“ ausgegeben. Wurde eine solche Anfrage verweigert, wird „denied“ zurück gegeben.

permissions-api_geolocation
Berechtigungsanfrage der Geolocation-API

Ein weiterer Vorteil der Permissions-API ist die Möglichkeit, einen Status abzufragen, ohne dass eine Berechtigungsanfrage im Browser eingeblendet wird. Für die Geolocation-API gibt es beispielsweise keine Möglichkeit, einfach nur den Berechtigungsstatus abzufragen.

Per Event auf Statusänderungen reagieren

Mit dem „change“-Event ist es zudem möglich, auf Veränderung des Status einer API zu reagieren. Wird beispielsweise die Berechtigung für eine API vom Nutzer wieder zurückgenommen, lässt sich das innerhalb eines Events unmittelbar feststellen.

navigator.permissions.query({
  name: "geolocation"
}).then(function(e) {
  e.addEventListener("change", function() { 
    console.log("Status der Geolocation-API: ", this.status); 
  }, false);
});

Im Beispiel wird dem Rückgabewert „e“ per „addEventListener()“ das „change“-Event zugewiesen. Dieses löst die dort definierte Funktion immer dann aus, wenn sich dieser Rückgabewert ändert – zum Beispiel dann, wenn eine Berechtigung wieder zurückgenommen wird.

Unterstützte APIs und Browser

Derzeit werden die Geolocation-, Notifications-, Push- und Midi-APIs unterstützt. Der Chrome ab Version 43 ist derzeit der einzige Browser, der die Permissions-API unterstützt.

(dpe)

Von Denis Potschien

Denis Potschien ist seit 2005 freiberuflich als Kommunikationsdesigner tätig, seit Anfang 2010 im Kreativkonsulat in Iserlohn, einem Büro für Gestaltung und Kommunikation. Dort betreut er kleine und mittelständische Unternehmen ebenso wie kommunale Körperschaften und Organisationen aus Südwestfalen und dem Ruhrgebiet.

Als Webdesigner und -entwickler gehören HTML5 und CSS3 zu seinen Kernthemen, weshalb er dazu 2013 ein Buch geschrieben hat. „Pure HTML5 und CSS3“ richtet sich an alle, die Vorkenntnisse haben, sich aber bisher mit HTML5 und CSS3 nicht oder nur am Rande beschäftigt haben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.