feat(TFARegController): QR-Code zu RegView hinzugefügt.
This commit is contained in:
parent
152050ebf4
commit
07d70dbd22
@ -5,6 +5,8 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using EnvelopeGenerator.Extensions;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using EnvelopeGenerator.Application.Resources;
|
||||
using DigitalData.Core.DTO;
|
||||
using EnvelopeGenerator.Application.Extensions;
|
||||
|
||||
namespace EnvelopeGenerator.Web.Controllers;
|
||||
|
||||
@ -12,16 +14,50 @@ namespace EnvelopeGenerator.Web.Controllers;
|
||||
[Route("tfa")]
|
||||
public class TFARegController : ViewControllerBase
|
||||
{
|
||||
private readonly IEnvelopeReceiverService _erService;
|
||||
private readonly IEnvelopeReceiverService _envRcvService;
|
||||
private readonly IAuthenticator _authenticator;
|
||||
private readonly IReceiverService _rcvService;
|
||||
|
||||
public TFARegController(ILogger<TFARegController> logger, HtmlSanitizer sanitizer, Cultures cultures, IStringLocalizer<Resource> localizer, IEnvelopeReceiverService erService) : base(logger, sanitizer, cultures, localizer)
|
||||
public TFARegController(ILogger<TFARegController> logger, HtmlSanitizer sanitizer, Cultures cultures, IStringLocalizer<Resource> localizer, IEnvelopeReceiverService erService, IAuthenticator authenticator, IReceiverService receiverService) : base(logger, sanitizer, cultures, localizer)
|
||||
{
|
||||
_erService = erService;
|
||||
_envRcvService = erService;
|
||||
_authenticator = authenticator;
|
||||
_rcvService = receiverService;
|
||||
}
|
||||
|
||||
[HttpGet("{envelopeReceiverId}")]
|
||||
public IActionResult Reg(string envelopeReceiverId)
|
||||
public async Task<IActionResult> Reg(string envelopeReceiverId)
|
||||
{
|
||||
envelopeReceiverId = _sanitizer.Sanitize(envelopeReceiverId);
|
||||
(string? uuid, string? signature) = envelopeReceiverId.DecodeEnvelopeReceiverId();
|
||||
|
||||
if (uuid is null || signature is null)
|
||||
{
|
||||
_logger.LogEnvelopeError(uuid: uuid, signature: signature, message: _localizer[WebKey.WrongEnvelopeReceiverId]);
|
||||
return Unauthorized();
|
||||
}
|
||||
|
||||
var er_secret_res = await _envRcvService.ReadWithSecretByUuidSignatureAsync(uuid: uuid, signature: signature);
|
||||
|
||||
if (er_secret_res.IsFailed)
|
||||
{
|
||||
_logger.LogNotice(er_secret_res.Notices);
|
||||
return this.ViewEnvelopeNotFound();
|
||||
}
|
||||
var er_secret = er_secret_res.Data;
|
||||
|
||||
if (!er_secret.Envelope!.TFAEnabled)
|
||||
return Unauthorized();
|
||||
|
||||
var rcv = er_secret.Receiver;
|
||||
|
||||
// Generate QR code as base 64
|
||||
rcv!.TotpSecretkey = _authenticator.GenerateTotpSecretKey();
|
||||
rcv.TotpExpiration = DateTime.Now.AddMonths(1);
|
||||
await _rcvService.UpdateAsync(rcv);
|
||||
var totp_qr_64 = _authenticator.GenerateTotpQrCode(userEmail: rcv.EmailAddress, secretKey: rcv.TotpSecretkey).ToBase64String();
|
||||
ViewData["TotpQR64"] = totp_qr_64;
|
||||
|
||||
return View();
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,10 @@
|
||||
@{
|
||||
ViewData["Title"] = "Reg";
|
||||
var totpQR64 = ViewData["TotpQR64"] as string;
|
||||
}
|
||||
<div class="page container p-5">
|
||||
<header class="text-center">
|
||||
<div class="icon expired">
|
||||
<svg width="72" height="72" viewBox="0 0 48 48" version="1" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 48 48"></svg>
|
||||
</div>
|
||||
<img src="data:image/png;base64,@totpQR64" style="width: 13rem; height: 13rem;">
|
||||
<h1>Title</h1>
|
||||
</header>
|
||||
<section class="text-center">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user