Add identity verification features: display image upload status and update UI elements
All checks were successful
Build And Push Dev Docker Image / docker (push) Successful in 1m30s

This commit is contained in:
troogs
2026-04-20 21:20:52 +02:00
parent ac52bc6df9
commit 646ccb0f18
4 changed files with 29 additions and 13 deletions

View File

@@ -150,6 +150,11 @@
<div class="flex-grow-1"></div> <div class="flex-grow-1"></div>
@if(Prospect?.Images?.Count > 0)
{<div class="text-center mt-3">
<Badge Color="Color.Info" Style="margin-bottom: 0.5rem;">Perso-Check möglich</Badge></div>
}
<div class="text-center d-flex justify-content-center gap-2 mt-1"> <div class="text-center d-flex justify-content-center gap-2 mt-1">
<Button <Button
@@ -186,6 +191,14 @@
} }
} }
<Button
Color="Color.Info"
Height="Height.Px(35)"
title="Identitätsprüfung"
Clicked="OpenVerificationDialogAsync"
Visibility="@(CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador) ? Visibility.Default : Visibility.Invisible)"
><i class="fa-solid fa-address-card"></i>
</Button>
@if (Prospect?.RecordState != RecordState.Archived) @if (Prospect?.RecordState != RecordState.Archived)
{ {
@@ -209,15 +222,6 @@
><i class="fa-solid fa-recycle"></i> ><i class="fa-solid fa-recycle"></i>
</Button> </Button>
} }
<Button
Color="Color.Info"
Height="Height.Px(35)"
title="Identitätsprüfung"
Clicked="OpenVerificationDialogAsync"
Visibility="@(CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador) ? Visibility.Default : Visibility.Invisible)"
><i class="fa-solid fa-address-card"></i>
</Button>
</div> </div>

View File

@@ -243,6 +243,7 @@ namespace FoodsharingSiegen.Server.Data.Service
{ {
var prospect = await Context.Prospects! var prospect = await Context.Prospects!
.Include(x => x.Interactions) .Include(x => x.Interactions)
.Include(x => x.Images)
.AsNoTracking() .AsNoTracking()
.FirstOrDefaultAsync(x => x.VerificationToken == token); .FirstOrDefaultAsync(x => x.VerificationToken == token);

View File

@@ -3,6 +3,8 @@
@using System.IO @using System.IO
@layout LoginLayout @layout LoginLayout
<PageTitle>Identitätsprüfung - @AppSettings.Value.Terms.Title</PageTitle>
<div class="row min-vh-100 align-items-center justify-content-center p-0 p-md-5 m-0"> <div class="row min-vh-100 align-items-center justify-content-center p-0 p-md-5 m-0">
<div class="col-12 col-md-10 col-lg-8 col-xl-5 login-form p-2"> <div class="col-12 col-md-10 col-lg-8 col-xl-5 login-form p-2">
<div class="card shadow-sm border-0"> <div class="card shadow-sm border-0">
@@ -33,7 +35,15 @@
else else
{ {
<div class="alert alert-info mb-4"> <div class="alert alert-info mb-4">
<strong>Hinweis:</strong> Dies ist die Upload-Seite für den Foodsaver <b>@_prospect.FsId</b>. <strong>Hinweis:</strong> Dies ist die Upload-Seite für Foodsaver <b>@_prospect.FsId</b>.
</div>
<div class="mb-1 text-muted">
Um dich auf der Foodsharing-Plattform als Foodsaver freischalten zu können, muss ein*e Botschafter*in Name, Adresse und Geburtsdatum im Profil des Foodsavers auf Korrektheit durch Vergleich mit einem Ausweisdokument prüfen. Das ist wichtig, damit die <a href="https://wiki.foodsharing.network/wiki/Rechtsvereinbarung" target="_blank">Rechtsvereinbarung</a> Bestand hat und wir die Zusagen erfüllen, die wir den Spenderbetrieben geben.<br>
</div>
<div class="mb-3 text-muted">
<a class="mt-3" href="https://wiki.foodsharing.network/wiki/Foodsaver#3.4_Verifizierung_(der_Daten),_Foodsaver-Ausweis_und_Freischaltung" target="_blank">Mehr dazu im Wiki</a>.
</div> </div>
<div class="mb-4"> <div class="mb-4">
@@ -48,7 +58,6 @@
</div> </div>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<span class="badge bg-secondary mb-2 text-wrap">Es können noch bis zu @(5 - _uploadedCount) Bilder hochgeladen werden</span>
@if (_uploadedCount >= 5) @if (_uploadedCount >= 5)
{ {
@@ -56,6 +65,7 @@
} }
else else
{ {
<span class="badge bg-secondary mb-2 text-wrap">Es können noch bis zu @(5 - _uploadedCount) Bilder hochgeladen werden</span>
<InputFile id="fileInput" OnChange="OnInputFileChange" class="d-none" accept="image/*" /> <InputFile id="fileInput" OnChange="OnInputFileChange" class="d-none" accept="image/*" />
<label for="fileInput" class="btn btn-outline-success w-100"> <label for="fileInput" class="btn btn-outline-success w-100">
<i class="fa-solid fa-images me-2"></i>Bild auswählen <i class="fa-solid fa-images me-2"></i>Bild auswählen
@@ -81,11 +91,11 @@
</div> </div>
} }
@if (_uploadedCount > 0) @if (_isSuccess)
{ {
<div class="alert alert-success text-center"> <div class="alert alert-success text-center">
<i class="fa-solid fa-check-circle fa-2x mb-2"></i><br/> <i class="fa-solid fa-check-circle fa-2x mb-2"></i><br/>
Vielen Dank für den Upload. Du kannst diese Seite nun schließen. Vielen Dank für den Upload. Wenn du alle benötigten Bilder hochgeladen hast, kannst du die Seite schließen. Du musst nichts weiter tun.
</div> </div>
} }
} }

View File

@@ -47,6 +47,7 @@ namespace FoodsharingSiegen.Server.Pages
if (result.Success && result.Data != null) if (result.Success && result.Data != null)
{ {
_prospect = result.Data; _prospect = result.Data;
_uploadedCount = _prospect.Images?.Count ?? 0;
} }
else else
{ {