btcpayserver/BTCPayServer/Views/Shared/_LayoutSignedOut.cshtml
d11n e43b4ed540
Onboarding: Invite new users (#5714)
* Server Users: More precise message when inviting users

This lets the admin who invited a new user know whether or not an email has been sent. If the SMTP server hasn't been set up, they need to share the invite link with the user.

* Onboarding: Invite new users

- Separates the user self-registration and invite cases
- Adds invitation email for users created by the admin
- Adds invitation tokens to verify user was invited
- Adds handler action for invite links
- Refactors `UserEventHostedService`

* Remove duplicate status message from views that use the wizard layout

* Auto-approve users created by an admin

* Notify admins via email if a new account requires approval

* Update wording

* Fix update user error

* Fix redirect to email confirmation in invite action

* Fix precondition checks after signup

* Improve admin notification

Send notification only if the user does not require email confirmation or when they confirmed their email address. Rationale: We want to inform admins only about qualified users and not annoy them with bot registrations.

* Allow approval alongside resending confirm email

* Use user email in log messages instead of ID

* Prevent unnecessary notification after email confirmation

* Use ApplicationUser type explicitly

* Fix after rebase

* Refactoring: Do not subclass UserRegisteredEvent
2024-02-28 20:43:18 +09:00

81 lines
2.3 KiB
Text

@using BTCPayServer.Services
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using BTCPayServer.Components.MainLogo
@inject SettingsRepository SettingsRepository
@{
Layout = "_LayoutSimple";
ViewBag.ShowTitle ??= true;
ViewBag.ShowLeadText ??= false;
var settings = await SettingsRepository.GetSettingAsync<ServerSettings>() ?? new ServerSettings();
}
@section PageHeadContent {
<style>
.alert {
max-width: 35em;
margin: var(--btcpay-space-l) auto;
}
.account-form {
max-width: 35em;
margin: 0 auto var(--btcpay-space-xl);
padding: 2rem;
background: var(--btcpay-bg-tile);
border-radius: var(--btcpay-border-radius);
}
.account-form h4 {
margin-bottom: 1.5rem;
}
.main-logo { height: 4.5rem; max-width: 18rem; }
.main-logo-btcpay .main-logo-btcpay--large { display: none; }
</style>
@await RenderSectionAsync("PageHeadContent", false)
}
@section PageFootContent {
<partial name="_ValidationScriptsPartial" />
@await RenderSectionAsync("PageFootContent", false)
}
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="UIHome" asp-action="Index" tabindex="-1" class="d-inline-block navbar-brand mx-0 mb-4">
<vc:main-logo />
</a>
<h1 class="h2 mb-3">Welcome to @(string.IsNullOrWhiteSpace(settings.ServerName) ? "your BTCPay\u00a0Server" : settings.ServerName)</h1>
@if (ViewBag.ShowLeadText)
{
<p class="lead">
<span class="d-sm-block">A self-hosted, open-source bitcoin payment processor.</span>
<span class="d-sm-block">It is secure, private, censorship-resistant and free.</span>
</p>
}
<partial name="_StatusMessage"/>
</div>
</div>
<div class="account-form">
@if (ViewBag.ShowTitle)
{
<h4 v-pre>@ViewData["Title"]</h4>
}
@RenderBody()
</div>
@if (!string.IsNullOrWhiteSpace(settings.ContactUrl))
{
<p class="text-center mt-n5 mb-5 pt-2">
<a class="text-secondary" href="@settings.ContactUrl" id="ContactLink">Contact Us</a>
</p>
}
<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>