namespace MijnBesluit.AppUi; /// /// Het slot van het toestel zelf: vingerafdruk, gezicht, of de pincode of het patroon waarmee /// je je telefoon ontgrendelt. /// /// De app ziet die vingerafdruk of code nooit. Hij vraagt het toestel om iemand te controleren /// en krijgt alleen ja of nee terug; het echte werk gebeurt in een deel van de telefoon waar /// geen enkele app bij kan. Er valt hier dus ook niets te bewaren of te lekken. /// /// Net als de bestandskiezer staat dit als afspraak in de schermen en niet als code: een /// webview kan hier niet bij, dat moet de app eromheen doen. Zonder implementatie is /// onwaar en gedraagt de app zich als vroeger - dan logt hij uit in /// plaats van op slot te gaan. /// public interface IToestelslot { /// /// Kan dit toestel iemand controleren? Onwaar als de telefoon geen schermslot heeft, of /// als de Android-versie te oud is. Dan heeft vergrendelen geen zin: iedereen die de /// telefoon in handen heeft komt er toch in. /// bool Beschikbaar { get; } /// /// Laat het toestel om een vingerafdruk of code vragen. Waar als het gelukt is, onwaar bij /// afbreken of mislukken. Gooit niets: een slot dat stukgaat hoort de app niet te laten /// vallen, het hoort dicht te blijven. /// Task OntgrendelAsync(string titel, string uitleg); } /// Wordt gebruikt als er geen toestelslot is. Zegt netjes nee. public sealed class Geenslot : IToestelslot { public bool Beschikbaar => false; public Task OntgrendelAsync(string titel, string uitleg) => Task.FromResult(false); }