Skip to content

Commit

Permalink
Merge pull request #1752 from dennisreimann/login
Browse files Browse the repository at this point in the history
Login/register view improvements
  • Loading branch information
NicolasDorier committed Jul 22, 2020
2 parents 3b250db + 8d6a70e commit ca8d830
Show file tree
Hide file tree
Showing 13 changed files with 212 additions and 226 deletions.
Expand Up @@ -6,6 +6,7 @@ public class ForgotPasswordViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email address")]
public string Email { get; set; }
}
}
1 change: 1 addition & 0 deletions BTCPayServer/Models/AccountViewModels/LoginViewModel.cs
Expand Up @@ -6,6 +6,7 @@ public class LoginViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email address")]
public string Email { get; set; }

[Required]
Expand Down
81 changes: 38 additions & 43 deletions BTCPayServer/Views/Account/Login.cshtml
Expand Up @@ -3,79 +3,74 @@
@inject BTCPayServer.HostedServices.CssThemeManager themeManager
@{
ViewData["Title"] = "Log in";
ViewData["Headline"] = "Welcome to your BTCPay Server";
Layout = "_LayoutSimple";
}

<style>
.col-head,
.col-account-form {
max-width: 40em;
}
</style>
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="Home" asp-action="Index">
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
</a>

<h1 class="h2 mb-3">Welcome to your BTCPay&nbsp;Server</h1>

<div class="row justify-content-center">
<div class="col col-account-form">
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage"/>
}
</div>
</div>

<p class="lead-login px-3">
BTCPay Server is a self-hosted, open-source cryptocurrency payment processor.
It is secure, private, censorship-resistant and free.
</p>

<div class="modal-content">
<div class="modal-header">
<div class="row justify-content-center mb-5">
<div class="col account-form">
<div class="modal-content border-0 p-3">
<div class="modal-header align-items-center border-0 py-2">
<h4 class="modal-title">Sign In</h4>
@if (env.OnionUrl != null)
{
<a href="@env.OnionUrl" target="_onion" class="btn btn-onion d-inline-flex align-items-center" data-clipboard="@env.OnionUrl">
<img src="~/img/icons/Onion_Color.svg" height="24" class="mr-2" asp-append-version="true" />
Copy Tor URL
</a>
<div class="text-center">
<a href="@env.OnionUrl" target="_onion" class="btn btn-sm btn-outline-onion d-inline-flex align-items-center p-2" data-clipboard="@env.OnionUrl">
<img src="~/img/icons/onion-purple.svg" height="20" class="mr-2" asp-append-version="true" />
Copy Tor URL
</a>
</div>
}
</div>
<div class="modal-body">
<form asp-route-returnurl="@ViewData["ReturnUrl"]" method="post">
<fieldset disabled="@(ViewData.ContainsKey("disabled") ? "disabled" : null)" >
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<label for="Email" class="input-group-text"><span class="input-group-addon fa fa-user"></span></label>
</div>

<input asp-for="Email" class="form-control" placeholder="Email" required="required" />
</div>
<label asp-for="Email"></label>
<input asp-for="Email" class="form-control" required />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<label for="Password" class="input-group-text"><span class="input-group-addon fa fa-lock"></span></label>
</div>
<input asp-for="Password" class="form-control" placeholder="Password" required="required" />
<div class="d-flex justify-content-between">
<label asp-for="Password"></label>
<a asp-action="ForgotPassword">Forgot password?</a>
</div>
<input asp-for="Password" class="form-control" required />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<div class="form-group mt-4">
<button type="submit" class="btn btn-primary btn-block btn-lg" id="LoginButton">Sign in</button>
</div>
<p class="text-right mt-4 mb-2">
<a asp-action="ForgotPassword" class="text-secondary">Forgot your password?</a>
</p>
</fieldset>
</form>
@if (themeManager.ShowRegister)
{
<p class="text-center mt-2 mb-0">
<a id="Register" style="font-size:1.15rem" asp-action="Register" asp-route-returnurl="@ViewData["ReturnUrl"]">Create your account</a>
</p>
}
</div>
@if (themeManager.ShowRegister)
{
<div class="modal-footer">
Don't have an account?
<a id="Register" class="btn btn-secondary ml-3" asp-action="Register" asp-route-returnurl="@ViewData["ReturnUrl"]">Sign Up</a>
</div>
}
</div>
</div>
</div>

<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>
90 changes: 40 additions & 50 deletions BTCPayServer/Views/Account/Register.cshtml
Expand Up @@ -2,76 +2,61 @@
@inject BTCPayServer.Services.BTCPayServerEnvironment env
@{
ViewData["Title"] = "Register";
ViewData["Headline"] = "Welcome to your BTCPay Server";
Layout = "_LayoutSimple";
}

<style>
.col-head,
.col-account-form {
max-width: 40em;
}
</style>
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="Home" asp-action="Index">
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
</a>

<h1 class="h2 mb-3">Welcome to your BTCPay&nbsp;Server</h1>

<p class="lead">
<span class="d-sm-block">A self-hosted, open-source cryptocurrency payment processor.</span>
<span class="d-sm-block">It is secure, private, censorship-resistant and free.</span>
</p>

<div class="row justify-content-center">
<div class="col col-account-form">
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage"/>
}
</div>
</div>

<p class="lead-login px-3">
BTCPay Server is a self-hosted, open-source cryptocurrency payment processor.
It is secure, private, censorship-resistant and free.
</p>

<!-- We want to center the dialog box in case we are not using the Welcome layout -->
<div class="modal-content">
<div class="modal-header">
<div class="row justify-content-center mb-5">
<div class="col account-form">
<div class="modal-content border-0 p-3">
<div class="modal-header align-items-center border-0 py-2">
<h4 class="modal-title">Create account</h4>
@if (env.OnionUrl != null)
{
<a href="@env.OnionUrl" target="_onion" class="btn btn-onion d-inline-flex align-items-center" data-clipboard="@env.OnionUrl">
<img src="~/img/icons/Onion_Color.svg" height="24" class="mr-2" asp-append-version="true" />
Copy Tor URL
</a>
<div class="text-center">
<a href="@env.OnionUrl" target="_onion" class="btn btn-sm btn-outline-onion d-inline-flex align-items-center p-2" data-clipboard="@env.OnionUrl">
<img src="~/img/icons/onion-purple.svg" height="20" class="mr-2" asp-append-version="true" />
Copy Tor URL
</a>
</div>
}
</div>
<div class="modal-body">
<form asp-route-returnUrl="@ViewData["ReturnUrl"]" asp-route-logon="true" method="post">
<fieldset disabled="@(ViewData.ContainsKey("disabled") ? "disabled" : null)" >
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<label for="Email" class="input-group-text">
<span class="input-group-addon fa fa-user"></span>
</label>
</div>
<input asp-for="Email" class="form-control" placeholder="Email" required="required"/>
</div>
<label asp-for="Email"></label>
<input asp-for="Email" class="form-control" required />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<label for="Password" class="input-group-text">
<span class="input-group-addon fa fa-lock"></span>
</label>
</div>
<input asp-for="Password" class="form-control" placeholder="Password" required="required"/>
</div>
<label asp-for="Password"></label>
<input asp-for="Password" class="form-control" required />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<label for="ConfirmPassword" class="input-group-text">
<span class="input-group-addon fa fa-lock"></span>
</label>
</div>
<input asp-for="ConfirmPassword" class="form-control" placeholder="Repeat password" required="required"/>
</div>
<label asp-for="ConfirmPassword"></label>
<input asp-for="ConfirmPassword" class="form-control" required />
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
</div>
@if (ViewData["AllowIsAdmin"] is true)
Expand All @@ -82,17 +67,22 @@
<span asp-validation-for="IsAdmin" class="text-danger"></span>
</div>
}
<div class="form-group">
<div class="form-group mt-4">
<button type="submit" class="btn btn-primary btn-block btn-lg" id="RegisterButton">Create account</button>
</div>
</fieldset>
</form>
</div>
<div class="modal-footer">
Already have an account?
<a id="Login" class="btn btn-secondary ml-3" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]">Login</a>
<p class="text-center mt-2 mb-0">
<a id="Login" style="font-size:1.15rem" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]">Log in</a>
</p>
</div>
</div>
</div>
</div>

<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>

20 changes: 18 additions & 2 deletions BTCPayServer/Views/Error/404.cshtml
@@ -1,8 +1,18 @@
@{
ViewData["Headline"] = "404 - Page not found";
ViewData["Title"] = "404 - Page not found";
}

<p class="lead-login text-center">
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="Home" asp-action="Index">
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
</a>

<h1 class="h2 mb-3">@ViewData["Title"]</h1>
</div>
</div>

<p class="lead text-center">
This is like searching for a person more beautiful than <a href="https://twitter.com/NicolasDorier" target="_blank">Nicolas Dorier</a>.
<br /><br />
<a href="https://twitter.com/NicolasDorier" target="_blank">
Expand All @@ -13,3 +23,9 @@
<br /><br />
You can always try <a href="/">navigating back to home</a>.
</p>

<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>
20 changes: 18 additions & 2 deletions BTCPayServer/Views/Error/429.cshtml
@@ -1,8 +1,18 @@
@{
ViewData["Headline"] = "429 - Too Many Requests";
ViewData["Title"] = "429 - Too Many Requests";
}

<p class="lead-login text-center">
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="Home" asp-action="Index">
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
</a>

<h1 class="h2 mb-3">@ViewData["Title"]</h1>
</div>
</div>

<p class="lead text-center">
Please send requests slower. Or face the wrath of <a href="https://twitter.com/r0ckstardev" target="_blank">Vin Diesel</a>.
<br /><br />
<a href="https://twitter.com/r0ckstardev" target="_blank">
Expand All @@ -13,3 +23,9 @@
<br /><br />
Slowly <a href="/">navigate back to home</a>.
</p>

<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>
20 changes: 18 additions & 2 deletions BTCPayServer/Views/Error/500.cshtml
@@ -1,8 +1,18 @@
@{
ViewData["Headline"] = "500 - Internal Server Error";
ViewData["Title"] = "500 - Internal Server Error";
}

<p class="lead-login text-center">
<div class="row justify-content-center mb-2">
<div class="col text-center">
<a asp-controller="Home" asp-action="Index">
<img src="~/img/btcpay-logo.svg" alt="BTCPay Server" class="mb-4" height="70" asp-append-version="true"/>
</a>

<h1 class="h2 mb-3">@ViewData["Title"]</h1>
</div>
</div>

<p class="lead text-center">
Whoops, something really went wrong! <a href="https://twitter.com/mrkukks">Mr Kukks</a> is so sorry.
<br /><br />
<a href="https://twitter.com/mrkukks" target="_blank">
Expand All @@ -13,3 +23,9 @@
<br /><br />
<a href="/">Navigate back to home</a>.
</p>

<div class="row justify-content-center mt-5">
<div class="col">
<partial name="_BTCPaySupporters"/>
</div>
</div>

0 comments on commit ca8d830

Please sign in to comment.