Abmelden nur noch in den Einstellungen, App-Menue statt Zahnrad
Marcs Entscheidung: In der HoneyBar fremder Apps steht kein Abmelden mehr — es war dort ohnehin nur ein Link auf den Schreibtisch. Als einzige Schaltflaeche, die eine Sitzung beendet, steht es jetzt an genau einer Stelle: unten in den Einstellungen, sichtbar nur bei eigener Anmeldung. Damit faellt auch der ?abmelden=1-Pfad wieder weg und /api/apps braucht das oidc-Feld nicht mehr. Das Zahnrad rechts in der Menueleiste ist durch den Pfeil mit der App-Liste ersetzt — derselbe wie in der HoneyBar. Beide Leisten tragen damit dieselben vier Dinge: Logo, Apps, Wetter/Uhr, Aufklappmenue.
This commit is contained in:
1 parent
0a5cd94ba0
commit
6d75ce78c2
7 files changed
+136
-65
No files matched your search
+14
-25
@@ -56,8 +56,6 @@
|
||||
|
||||
let apps = DEFAULT_APPS;
|
||||
let settings = null;
|
||||
// Ob HoneyOS ueberhaupt anmeldet — ohne Anbieter gaebe es nichts abzumelden.
|
||||
let oidc = false;
|
||||
// Was die Seite oben schon hatte, bevor die HoneyBar sie heruntergeschoben hat.
|
||||
let urspruenglichesPolster = null;
|
||||
|
||||
@@ -222,8 +220,6 @@
|
||||
<a id="mSettings" role="menuitem">Einstellungen …</a>
|
||||
<hr />
|
||||
<button id="hide" role="menuitem">HoneyBar einklappen</button>
|
||||
<hr id="mLogoutSep" hidden />
|
||||
<a id="mLogout" role="menuitem" hidden>Abmelden</a>
|
||||
</div>
|
||||
|
||||
<div class="menu" id="menu" role="menu">
|
||||
@@ -400,31 +396,25 @@
|
||||
}
|
||||
|
||||
/**
|
||||
* Die drei Wege ins System. Alle drei sind Links auf den Schreibtisch, keine
|
||||
* Die zwei Wege ins System. Beides sind Links auf den Schreibtisch, keine
|
||||
* Aktionen hier — und das ist keine Bequemlichkeit, sondern die Grenze:
|
||||
*
|
||||
* Einstellungen und Abmelden **schreiben**. Dafuer braucht der Server die
|
||||
* HoneyOS-Sitzung, und die schickt der Browser aus einer fremden App nicht
|
||||
* mit; liegt alles unter einer Domain, kommt sie zwar mit, aber das
|
||||
* CSRF-Prüfwort steht in einem Cookie der HoneyOS-Adresse, das dieses Skript
|
||||
* von hier aus nicht lesen darf. Und ein Abmelden, das ein simpler Aufruf
|
||||
* erledigt, koennte jede fremde Seite ausloesen.
|
||||
* Einstellungen **schreiben**. Dafuer braucht der Server die HoneyOS-Sitzung,
|
||||
* und die schickt der Browser aus einer fremden App nicht mit; liegt alles
|
||||
* unter einer Domain, kommt sie zwar mit, aber das CSRF-Prüfwort steht in
|
||||
* einem Cookie der HoneyOS-Adresse, das dieses Skript von hier aus nicht
|
||||
* lesen darf.
|
||||
*
|
||||
* Also: die HoneyBar zeigt den Weg, gehandelt wird dort, wo man angemeldet
|
||||
* ist. Der Schreibtisch sieht die Frage in der Adresse und macht sie auf.
|
||||
* Abmelden steht hier bewusst gar nicht: Es gehoert dorthin, wo man sich
|
||||
* angemeldet hat. Wer es aus einer App heraus braucht, geht ueber
|
||||
* „Einstellungen …" — dort unten steht der Knopf.
|
||||
*/
|
||||
function systemZiele() {
|
||||
const ziel = (q) => {
|
||||
const u = new URL(homeUrl, location.href);
|
||||
u.search = q;
|
||||
return u.href;
|
||||
};
|
||||
root.getElementById("mHome").href = new URL(homeUrl, location.href).href;
|
||||
root.getElementById("mSettings").href = ziel("einstellungen=1");
|
||||
const ab = root.getElementById("mLogout");
|
||||
ab.href = ziel("abmelden=1");
|
||||
ab.hidden = !oidc;
|
||||
root.getElementById("mLogoutSep").hidden = !oidc;
|
||||
const heim = new URL(homeUrl, location.href);
|
||||
root.getElementById("mHome").href = heim.href;
|
||||
const einst = new URL(homeUrl, location.href);
|
||||
einst.search = "einstellungen=1";
|
||||
root.getElementById("mSettings").href = einst.href;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -520,7 +510,6 @@
|
||||
apps = [{ id: "honeyos", name: "DESKTOP", url: homeUrl }].concat(data.apps);
|
||||
}
|
||||
settings = data.settings || null;
|
||||
oidc = !!data.oidc;
|
||||
}
|
||||
} catch {
|
||||
/* nicht angemeldet, kein CORS, kein Netz → eingebaute Liste;
|
||||
|
||||
Reference in new issue
Block a user