40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
namespace MijnBesluit.AppUi;
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// <see cref="Beschikbaar"/> onwaar en gedraagt de app zich als vroeger - dan logt hij uit in
|
|
/// plaats van op slot te gaan.
|
|
/// </summary>
|
|
public interface IToestelslot
|
|
{
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
bool Beschikbaar { get; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
Task<bool> OntgrendelAsync(string titel, string uitleg);
|
|
}
|
|
|
|
/// <summary>Wordt gebruikt als er geen toestelslot is. Zegt netjes nee.</summary>
|
|
public sealed class Geenslot : IToestelslot
|
|
{
|
|
public bool Beschikbaar => false;
|
|
|
|
public Task<bool> OntgrendelAsync(string titel, string uitleg) => Task.FromResult(false);
|
|
}
|