diff --git a/Controllers/LoginController.cs b/Controllers/LoginController.cs index 9d1d489..3fe0439 100644 --- a/Controllers/LoginController.cs +++ b/Controllers/LoginController.cs @@ -49,21 +49,31 @@ namespace CarCareTracker.Controllers } return View(model: redirectURL); } - public IActionResult Registration() + public IActionResult Registration(string token = "", string email = "") { if (_config.GetServerDisabledRegistration()) { return RedirectToAction("Index"); } - return View(); + var viewModel = new LoginModel + { + EmailAddress = string.IsNullOrWhiteSpace(email) ? string.Empty : email, + Token = string.IsNullOrWhiteSpace(token) ? string.Empty : token + }; + return View(viewModel); } public IActionResult ForgotPassword() { return View(); } - public IActionResult ResetPassword() + public IActionResult ResetPassword(string token = "", string email = "") { - return View(); + var viewModel = new LoginModel + { + EmailAddress = string.IsNullOrWhiteSpace(email) ? string.Empty : email, + Token = string.IsNullOrWhiteSpace(token) ? string.Empty : token + }; + return View(viewModel); } public IActionResult GetRemoteLoginLink() { diff --git a/Helper/ConfigHelper.cs b/Helper/ConfigHelper.cs index 7a0c9ba..0ed3165 100644 --- a/Helper/ConfigHelper.cs +++ b/Helper/ConfigHelper.cs @@ -24,6 +24,7 @@ namespace CarCareTracker.Helper bool GetServerEnableShopSupplies(); string GetServerPostgresConnection(); string GetAllowedFileUploadExtensions(); + string GetServerDomain(); bool DeleteUserConfig(int userId); bool GetInvariantApi(); bool GetServerOpenRegistration(); @@ -62,6 +63,11 @@ namespace CarCareTracker.Helper var motd = CheckString("LUBELOGGER_MOTD"); return motd; } + public string GetServerDomain() + { + var domain = CheckString("LUBELOGGER_DOMAIN"); + return domain; + } public bool GetServerOpenRegistration() { return CheckBool(CheckString("LUBELOGGER_OPEN_REGISTRATION")); diff --git a/Helper/MailHelper.cs b/Helper/MailHelper.cs index 00e6fa0..66cfbd3 100644 --- a/Helper/MailHelper.cs +++ b/Helper/MailHelper.cs @@ -17,6 +17,7 @@ namespace CarCareTracker.Helper { private readonly MailConfig mailConfig; private readonly string serverLanguage; + private readonly string serverDomain; private readonly IFileHelper _fileHelper; private readonly ITranslationHelper _translator; private readonly ILogger _logger; @@ -29,6 +30,7 @@ namespace CarCareTracker.Helper //load mailConfig from Configuration mailConfig = config.GetMailConfig(); serverLanguage = config.GetServerLanguage(); + serverDomain = config.GetServerDomain(); _fileHelper = fileHelper; _translator = translationHelper; _logger = logger; @@ -43,7 +45,14 @@ namespace CarCareTracker.Helper return OperationResponse.Failed("Email Address or Token is invalid"); } string emailSubject = _translator.Translate(serverLanguage, "Your Registration Token for LubeLogger"); - string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please complete your registration for LubeLogger using the token")}: {token}"; + string tokenHtml = token; + if (!string.IsNullOrWhiteSpace(serverDomain)) + { + string cleanedURL = serverDomain.EndsWith('/') ? serverDomain.TrimEnd('/') : serverDomain; + //construct registration URL. + tokenHtml = $"{token}"; + } + string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please complete your registration for LubeLogger using the token")}: {tokenHtml}"; var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); if (result) { @@ -64,7 +73,14 @@ namespace CarCareTracker.Helper return OperationResponse.Failed("Email Address or Token is invalid"); } string emailSubject = _translator.Translate(serverLanguage, "Your Password Reset Token for LubeLogger"); - string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please reset your password for LubeLogger using the token")}: {token}"; + string tokenHtml = token; + if (!string.IsNullOrWhiteSpace(serverDomain)) + { + string cleanedURL = serverDomain.EndsWith('/') ? serverDomain.TrimEnd('/') : serverDomain; + //construct registration URL. + tokenHtml = $"{token}"; + } + string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please reset your password for LubeLogger using the token")}: {tokenHtml}"; var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); if (result) { diff --git a/Views/Login/Registration.cshtml b/Views/Login/Registration.cshtml index 4d3d7f3..86f47db 100644 --- a/Views/Login/Registration.cshtml +++ b/Views/Login/Registration.cshtml @@ -5,6 +5,7 @@ var userLanguage = config.GetServerLanguage(); var openRegistrationEnabled = config.GetServerOpenRegistration(); } +@model LoginModel @{ ViewData["Title"] = "Register"; } @@ -19,18 +20,18 @@ @if (openRegistrationEnabled) {
- +
} else { - + }
- +
diff --git a/Views/Login/ResetPassword.cshtml b/Views/Login/ResetPassword.cshtml index 4480df3..e66e330 100644 --- a/Views/Login/ResetPassword.cshtml +++ b/Views/Login/ResetPassword.cshtml @@ -4,6 +4,7 @@ @{ var userLanguage = config.GetServerLanguage(); } +@model LoginModel @{ ViewData["Title"] = "Reset Password"; } @@ -16,11 +17,11 @@
- +
- +