Skip to content

Commit

Permalink
Email Hotfix (#1068)
Browse files Browse the repository at this point in the history
* Auto approve migration emails if the password is correct. Change Email Link dump to Critical to ensure it makes it into the logs.

* Bump the version
  • Loading branch information
majora2007 authored Feb 12, 2022
1 parent 6db8168 commit 2193451
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 32 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -526,3 +526,4 @@ API/config/post-metadata/
API.Tests/TestResults/
UI/Web/.vscode/settings.json
/API.Tests/Services/Test Data/ArchiveService/CoverImages/output/*
UI/Web/.angular/
30 changes: 16 additions & 14 deletions API/Controllers/AccountController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ public async Task<ActionResult<string>> InviteUser(InviteUserDto dto)
if (string.IsNullOrEmpty(token)) return BadRequest("There was an issue sending email");

var emailLink = GenerateEmailLink(token, "confirm-email", dto.Email);
_logger.LogInformation("[Invite User]: Email Link for {UserName}: {Link}", user.UserName, emailLink);
_logger.LogCritical("[Invite User]: Email Link for {UserName}: {Link}", user.UserName, emailLink);
if (dto.SendEmail)
{
await _emailService.SendConfirmationEmail(new ConfirmationEmailDto()
Expand Down Expand Up @@ -507,7 +507,7 @@ public async Task<ActionResult<string>> ForgotPassword([FromQuery] string email)
}

var emailLink = GenerateEmailLink(await _userManager.GeneratePasswordResetTokenAsync(user), "confirm-reset-password", user.Email);
_logger.LogInformation("[Forgot Password]: Email Link for {UserName}: {Link}", user.UserName, emailLink);
_logger.LogCritical("[Forgot Password]: Email Link for {UserName}: {Link}", user.UserName, emailLink);
var host = _environment.IsDevelopment() ? "localhost:4200" : Request.Host.ToString();
if (await _emailService.CheckIfAccessible(host))
{
Expand Down Expand Up @@ -561,7 +561,7 @@ public async Task<ActionResult<string>> ResendConfirmationSendEmail([FromQuery]
if (user.EmailConfirmed) return BadRequest("User already confirmed");

var emailLink = GenerateEmailLink(await _userManager.GenerateEmailConfirmationTokenAsync(user), "confirm-email", user.Email);
_logger.LogInformation("[Email Migration]: Email Link: {Link}", emailLink);
_logger.LogCritical("[Email Migration]: Email Link: {Link}", emailLink);
await _emailService.SendMigrationEmail(new EmailMigrationDto()
{
EmailAddress = user.Email,
Expand Down Expand Up @@ -615,21 +615,23 @@ public async Task<ActionResult<string>> MigrateEmail(MigrateUserEmailDto dto)
try
{
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
if (string.IsNullOrEmpty(token)) return BadRequest("There was an issue sending email");
//if (string.IsNullOrEmpty(token)) return BadRequest("There was an issue sending email");
user.Email = dto.Email;
if (!await ConfirmEmailToken(token, user)) return BadRequest("There was a critical error during migration");
_unitOfWork.UserRepository.Update(user);

await _unitOfWork.CommitAsync();

var emailLink = GenerateEmailLink(await _userManager.GenerateEmailConfirmationTokenAsync(user), "confirm-migration-email", user.Email);
_logger.LogInformation("[Email Migration]: Email Link for {UserName}: {Link}", dto.Username, emailLink);
// Always send an email, even if the user can't click it just to get them conformable with the system
await _emailService.SendMigrationEmail(new EmailMigrationDto()
{
EmailAddress = dto.Email,
Username = user.UserName,
ServerConfirmationLink = emailLink
});
return Ok(emailLink);
//var emailLink = GenerateEmailLink(await _userManager.GenerateEmailConfirmationTokenAsync(user), "confirm-migration-email", user.Email);
// _logger.LogCritical("[Email Migration]: Email Link for {UserName}: {Link}", dto.Username, emailLink);
// // Always send an email, even if the user can't click it just to get them conformable with the system
// await _emailService.SendMigrationEmail(new EmailMigrationDto()
// {
// EmailAddress = dto.Email,
// Username = user.UserName,
// ServerConfirmationLink = emailLink
// });
return Ok();
}
catch (Exception ex)
{
Expand Down
Binary file added API/config/kavita.db.dik
Binary file not shown.
Binary file added API/config/kavita.db.new
Binary file not shown.
2 changes: 1 addition & 1 deletion Kavita.Common/Kavita.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>net6.0</TargetFramework>
<Company>kavitareader.com</Company>
<Product>Kavita</Product>
<AssemblyVersion>0.5.1.0</AssemblyVersion>
<AssemblyVersion>0.5.1.1</AssemblyVersion>
<NeutralLanguage>en</NeutralLanguage>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export class AddEmailToAccountMigrationModalComponent implements OnInit {
error: string = '';

constructor(private accountService: AccountService, private modal: NgbActiveModal,
private serverService: ServerService, private confirmService: ConfirmService) {
private serverService: ServerService, private confirmService: ConfirmService, private toastr: ToastrService) {
}

ngOnInit(): void {
Expand All @@ -40,25 +40,23 @@ export class AddEmailToAccountMigrationModalComponent implements OnInit {
}

save() {
this.serverService.isServerAccessible().subscribe(canAccess => {
const model = this.registerForm.getRawValue();
model.sendEmail = canAccess;
this.accountService.migrateUser(model).subscribe(async (email) => {
console.log(email);
if (!canAccess) {
// Display the email to the user
this.emailLink = email;
await this.confirmService.alert('Please click this link to confirm your email. You must confirm to be able to login. The link is in your logs. You may need to log out of the current account before clicking. <br/> <a href="' + this.emailLink + '" target="_blank">' + this.emailLink + '</a>');
this.modal.close(true);
} else {
await this.confirmService.alert('Please check your email (or logs under "Email Link") for the confirmation link. You must confirm to be able to login.');
this.modal.close(true);
}
const model = this.registerForm.getRawValue();
model.sendEmail = false;
this.accountService.migrateUser(model).subscribe(async () => {
// if (!canAccess) {
// // Display the email to the user
// this.emailLink = email;
// await this.confirmService.alert('Please click this link to confirm your email. You must confirm to be able to login. The link is in your logs. You may need to log out of the current account before clicking. <br/> <a href="' + this.emailLink + '" target="_blank">' + this.emailLink + '</a>');
// this.modal.close(true);
// } else {
// await this.confirmService.alert('Please check your email (or logs under "Email Link") for the confirmation link. You must confirm to be able to login.');
// this.modal.close(true);
// }
this.toastr.success('Email has been validated');
this.modal.close(true);
}, err => {
this.error = err;
});
});

}


Expand Down

0 comments on commit 2193451

Please sign in to comment.