mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-05-02 09:08:20 +00:00
Login with email and confirm age on registration (#493)
* Implement login with email * Add confirm age checkbox to register page * Fix registration unit tests * Fix registration unit tests for real this time Co-authored-by: Dagg <32235163+daggintosh@users.noreply.github.com>
This commit is contained in:
parent
f46bd4fc87
commit
ee11798dc6
7 changed files with 45 additions and 10 deletions
|
@ -54,4 +54,7 @@
|
||||||
<data name="recent_photos" xml:space="preserve">
|
<data name="recent_photos" xml:space="preserve">
|
||||||
<value>Most recent photos</value>
|
<value>Most recent photos</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="email" xml:space="preserve">
|
||||||
|
<value>Email</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -4,6 +4,7 @@ public static class GeneralStrings
|
||||||
{
|
{
|
||||||
public static readonly TranslatableString Username = create("username");
|
public static readonly TranslatableString Username = create("username");
|
||||||
public static readonly TranslatableString Password = create("password");
|
public static readonly TranslatableString Password = create("password");
|
||||||
|
public static readonly TranslatableString Email = create("email");
|
||||||
public static readonly TranslatableString Register = create("register");
|
public static readonly TranslatableString Register = create("register");
|
||||||
public static readonly TranslatableString ResetPassword = create("reset_password");
|
public static readonly TranslatableString ResetPassword = create("reset_password");
|
||||||
public static readonly TranslatableString ForgotPassword = create("forgot_password");
|
public static readonly TranslatableString ForgotPassword = create("forgot_password");
|
||||||
|
|
|
@ -41,9 +41,12 @@
|
||||||
<input type="hidden" id="redirect" name="redirect">
|
<input type="hidden" id="redirect" name="redirect">
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label>@Model.Translate(GeneralStrings.Username)</label>
|
@{
|
||||||
|
string username = ServerConfiguration.Instance.Mail.MailEnabled ? Model.Translate(GeneralStrings.Email) : Model.Translate(GeneralStrings.Username);
|
||||||
|
}
|
||||||
|
<label>@username</label>
|
||||||
<div class="ui left icon input">
|
<div class="ui left icon input">
|
||||||
<input type="text" name="username" id="text" placeholder="@Model.Translate(GeneralStrings.Username)">
|
<input type="text" name="username" id="text" placeholder="@username">
|
||||||
<i class="user icon"></i>
|
<i class="user icon"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,9 +78,9 @@
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
<a href="/passwordResetRequest">
|
<a href="/passwordResetRequest">
|
||||||
<div class="ui button">
|
<div class="ui button">
|
||||||
@Model.Translate(GeneralStrings.ForgotPassword)
|
@Model.Translate(GeneralStrings.ForgotPassword)
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</form>
|
</form>
|
|
@ -27,7 +27,7 @@ public class LoginForm : BaseLayout
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(username))
|
if (string.IsNullOrWhiteSpace(username))
|
||||||
{
|
{
|
||||||
this.Error = this.Translate(ErrorStrings.UsernameInvalid);
|
this.Error = ServerConfiguration.Instance.Mail.MailEnabled ? this.Translate(ErrorStrings.UsernameInvalid) : this.Translate(ErrorStrings.EmailInvalid);
|
||||||
return this.Page();
|
return this.Page();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,23 @@ public class LoginForm : BaseLayout
|
||||||
return this.Page();
|
return this.Page();
|
||||||
}
|
}
|
||||||
|
|
||||||
User? user = await this.Database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
User? user;
|
||||||
|
|
||||||
|
if (!ServerConfiguration.Instance.Mail.MailEnabled)
|
||||||
|
{
|
||||||
|
user = await this.Database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
user = await this.Database.Users.FirstOrDefaultAsync(u => u.EmailAddress == username);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
User? noEmailUser = await this.Database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
||||||
|
if (noEmailUser != null && noEmailUser.EmailAddress == null) user = noEmailUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
Logger.Warn($"User {username} failed to login on web due to invalid username", LogArea.Login);
|
Logger.Warn($"User {username} failed to login on web due to invalid username", LogArea.Login);
|
||||||
|
|
|
@ -74,6 +74,12 @@
|
||||||
<i class="lock icon"></i>
|
<i class="lock icon"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="inline field">
|
||||||
|
<div class="ui checkbox">
|
||||||
|
<input type="checkbox" id="age-checkbox" required>
|
||||||
|
<label for="age-checkbox">I confirm that I am above 13 years old</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@if (ServerConfiguration.Instance.Captcha.CaptchaEnabled)
|
@if (ServerConfiguration.Instance.Captcha.CaptchaEnabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -67,7 +67,7 @@ function onSubmit(e){
|
||||||
@if (ServerConfiguration.Instance.Mail.MailEnabled && (Model.User == Model.ProfileUser || Model.User!.IsAdmin))
|
@if (ServerConfiguration.Instance.Mail.MailEnabled && (Model.User == Model.ProfileUser || Model.User!.IsAdmin))
|
||||||
{
|
{
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label style="text-align: left" for="email">Email</label>
|
<label style="text-align: left" for="email">@Model.Translate(GeneralStrings.Email)</label>
|
||||||
<input type="text" name="email" id="email" required value="@Model.ProfileUser.EmailAddress" placeholder="Email Address">
|
<input type="text" name="email" id="email" required value="@Model.ProfileUser.EmailAddress" placeholder="Email Address">
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,8 @@ public class RegisterTests : LighthouseWebTest
|
||||||
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
||||||
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password);
|
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password);
|
||||||
|
|
||||||
|
this.Driver.FindElement(By.Id("age-checkbox")).Click();
|
||||||
|
|
||||||
this.Driver.FindElement(By.Id("submit")).Click();
|
this.Driver.FindElement(By.Id("submit")).Click();
|
||||||
|
|
||||||
User? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
User? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
||||||
|
@ -51,6 +53,8 @@ public class RegisterTests : LighthouseWebTest
|
||||||
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
||||||
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password + "a");
|
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password + "a");
|
||||||
|
|
||||||
|
this.Driver.FindElement(By.Id("age-checkbox")).Click();
|
||||||
|
|
||||||
this.Driver.FindElement(By.Id("submit")).Click();
|
this.Driver.FindElement(By.Id("submit")).Click();
|
||||||
|
|
||||||
User? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
User? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
|
||||||
|
@ -76,6 +80,8 @@ public class RegisterTests : LighthouseWebTest
|
||||||
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
this.Driver.FindElement(By.Id("password")).SendKeys(password);
|
||||||
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password);
|
this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password);
|
||||||
|
|
||||||
|
this.Driver.FindElement(By.Id("age-checkbox")).Click();
|
||||||
|
|
||||||
this.Driver.FindElement(By.Id("submit")).Click();
|
this.Driver.FindElement(By.Id("submit")).Click();
|
||||||
|
|
||||||
Assert.Contains("The username you've chosen is already taken.", this.Driver.PageSource);
|
Assert.Contains("The username you've chosen is already taken.", this.Driver.PageSource);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue