added flag to enable root user to login via OIDC
This commit is contained in:
@@ -12,6 +12,7 @@ namespace CarCareTracker.Helper
|
|||||||
UserConfig GetUserConfig(ClaimsPrincipal user);
|
UserConfig GetUserConfig(ClaimsPrincipal user);
|
||||||
bool SaveUserConfig(ClaimsPrincipal user, UserConfig configData);
|
bool SaveUserConfig(ClaimsPrincipal user, UserConfig configData);
|
||||||
bool AuthenticateRootUser(string username, string password);
|
bool AuthenticateRootUser(string username, string password);
|
||||||
|
bool AuthenticateRootUserOIDC(string email);
|
||||||
string GetWebHookUrl();
|
string GetWebHookUrl();
|
||||||
string GetMOTD();
|
string GetMOTD();
|
||||||
string GetLogoUrl();
|
string GetLogoUrl();
|
||||||
@@ -90,6 +91,16 @@ namespace CarCareTracker.Helper
|
|||||||
}
|
}
|
||||||
return username == rootUsername && password == rootPassword;
|
return username == rootUsername && password == rootPassword;
|
||||||
}
|
}
|
||||||
|
public bool AuthenticateRootUserOIDC(string email)
|
||||||
|
{
|
||||||
|
var rootEmail = _config[nameof(UserConfig.DefaultReminderEmail)] ?? string.Empty;
|
||||||
|
var rootUserOIDC = bool.Parse(_config[nameof(UserConfig.EnableRootUserOIDC)]);
|
||||||
|
if (!rootUserOIDC || string.IsNullOrWhiteSpace(rootEmail))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return email == rootEmail;
|
||||||
|
}
|
||||||
public string GetServerLanguage()
|
public string GetServerLanguage()
|
||||||
{
|
{
|
||||||
var serverLanguage = _config[nameof(UserConfig.UserLanguage)] ?? "en_US";
|
var serverLanguage = _config[nameof(UserConfig.UserLanguage)] ?? "en_US";
|
||||||
@@ -171,6 +182,7 @@ namespace CarCareTracker.Helper
|
|||||||
UseMPG = bool.Parse(_config[nameof(UserConfig.UseMPG)]),
|
UseMPG = bool.Parse(_config[nameof(UserConfig.UseMPG)]),
|
||||||
UseDescending = bool.Parse(_config[nameof(UserConfig.UseDescending)]),
|
UseDescending = bool.Parse(_config[nameof(UserConfig.UseDescending)]),
|
||||||
EnableAuth = bool.Parse(_config[nameof(UserConfig.EnableAuth)]),
|
EnableAuth = bool.Parse(_config[nameof(UserConfig.EnableAuth)]),
|
||||||
|
EnableRootUserOIDC = bool.Parse(_config[nameof(UserConfig.EnableRootUserOIDC)]),
|
||||||
HideZero = bool.Parse(_config[nameof(UserConfig.HideZero)]),
|
HideZero = bool.Parse(_config[nameof(UserConfig.HideZero)]),
|
||||||
UseUKMPG = bool.Parse(_config[nameof(UserConfig.UseUKMPG)]),
|
UseUKMPG = bool.Parse(_config[nameof(UserConfig.UseUKMPG)]),
|
||||||
UseMarkDownOnSavedNotes = bool.Parse(_config[nameof(UserConfig.UseMarkDownOnSavedNotes)]),
|
UseMarkDownOnSavedNotes = bool.Parse(_config[nameof(UserConfig.UseMarkDownOnSavedNotes)]),
|
||||||
|
|||||||
@@ -245,14 +245,7 @@ namespace CarCareTracker.Logic
|
|||||||
{
|
{
|
||||||
if (UserIsRoot(credentials))
|
if (UserIsRoot(credentials))
|
||||||
{
|
{
|
||||||
return new UserData()
|
return GetRootUserData(credentials.UserName);
|
||||||
{
|
|
||||||
Id = -1,
|
|
||||||
UserName = credentials.UserName,
|
|
||||||
IsAdmin = true,
|
|
||||||
IsRootUser = true,
|
|
||||||
EmailAddress = string.Empty
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -271,6 +264,13 @@ namespace CarCareTracker.Logic
|
|||||||
}
|
}
|
||||||
public UserData ValidateOpenIDUser(LoginModel credentials)
|
public UserData ValidateOpenIDUser(LoginModel credentials)
|
||||||
{
|
{
|
||||||
|
//validate for root user
|
||||||
|
var isRootUser = _configHelper.AuthenticateRootUserOIDC(credentials.EmailAddress);
|
||||||
|
if (isRootUser)
|
||||||
|
{
|
||||||
|
return GetRootUserData(credentials.EmailAddress);
|
||||||
|
}
|
||||||
|
|
||||||
var result = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress);
|
var result = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress);
|
||||||
if (result.Id != default)
|
if (result.Id != default)
|
||||||
{
|
{
|
||||||
@@ -420,6 +420,17 @@ namespace CarCareTracker.Logic
|
|||||||
var hashedPassword = GetHash(credentials.Password);
|
var hashedPassword = GetHash(credentials.Password);
|
||||||
return _configHelper.AuthenticateRootUser(hashedUserName, hashedPassword);
|
return _configHelper.AuthenticateRootUser(hashedUserName, hashedPassword);
|
||||||
}
|
}
|
||||||
|
private UserData GetRootUserData(string username)
|
||||||
|
{
|
||||||
|
return new UserData()
|
||||||
|
{
|
||||||
|
Id = -1,
|
||||||
|
UserName = username,
|
||||||
|
IsAdmin = true,
|
||||||
|
IsRootUser = true,
|
||||||
|
EmailAddress = string.Empty
|
||||||
|
};
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
private static string GetHash(string value)
|
private static string GetHash(string value)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
public bool UseDescending { get; set; }
|
public bool UseDescending { get; set; }
|
||||||
public bool EnableAuth { get; set; }
|
public bool EnableAuth { get; set; }
|
||||||
public bool DisableRegistration { get; set; }
|
public bool DisableRegistration { get; set; }
|
||||||
|
public bool EnableRootUserOIDC { get; set; }
|
||||||
public bool HideZero { get; set; }
|
public bool HideZero { get; set; }
|
||||||
public bool UseUKMPG {get;set;}
|
public bool UseUKMPG {get;set;}
|
||||||
public bool UseThreeDecimalGasCost { get; set; }
|
public bool UseThreeDecimalGasCost { get; set; }
|
||||||
|
|||||||
@@ -77,6 +77,10 @@
|
|||||||
<input class="form-check-input" onChange="updateSettings()" type="checkbox" role="switch" id="disableRegistration" checked="@Model.UserConfig.DisableRegistration">
|
<input class="form-check-input" onChange="updateSettings()" type="checkbox" role="switch" id="disableRegistration" checked="@Model.UserConfig.DisableRegistration">
|
||||||
<label class="form-check-label" for="disableRegistration">@translator.Translate(userLanguage, "Disable Registration")</label>
|
<label class="form-check-label" for="disableRegistration">@translator.Translate(userLanguage, "Disable Registration")</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-check form-switch">
|
||||||
|
<input class="form-check-input" onChange="updateSettings()" type="checkbox" role="switch" id="enableRootUserOIDC" checked="@Model.UserConfig.EnableRootUserOIDC">
|
||||||
|
<label class="form-check-label" for="enableRootUserOIDC">@translator.Translate(userLanguage, "Enable OIDC for Root User")<br /><small class="text-body-secondary">@translator.Translate(userLanguage, "Enable OIDC Login for Root User using the Default Reminder Email")</small></label>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
"UseMPG": true,
|
"UseMPG": true,
|
||||||
"UseDescending": false,
|
"UseDescending": false,
|
||||||
"EnableAuth": false,
|
"EnableAuth": false,
|
||||||
"DisableRegistration": false,
|
"DisableRegistration": false,
|
||||||
|
"EnableRootUserOIDC": false,
|
||||||
"HideZero": false,
|
"HideZero": false,
|
||||||
"EnableAutoReminderRefresh": false,
|
"EnableAutoReminderRefresh": false,
|
||||||
"EnableAutoOdometerInsert": false,
|
"EnableAutoOdometerInsert": false,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -30,6 +30,7 @@ function updateSettings() {
|
|||||||
//Root User Only Settings that aren't rendered:
|
//Root User Only Settings that aren't rendered:
|
||||||
var defaultReminderEmail = $("#inputDefaultEmail").length > 0 ? $("#inputDefaultEmail").val() : "";
|
var defaultReminderEmail = $("#inputDefaultEmail").length > 0 ? $("#inputDefaultEmail").val() : "";
|
||||||
var disableRegistration = $("#disableRegistration").length > 0 ? $("#disableRegistration").is(":checked") : false;
|
var disableRegistration = $("#disableRegistration").length > 0 ? $("#disableRegistration").is(":checked") : false;
|
||||||
|
var enableRootUserOIDC = $("#enableRootUserOIDC").length > 0 ? $("#enableRootUserOIDC").is(":checked") : false;
|
||||||
|
|
||||||
var userConfigObject = {
|
var userConfigObject = {
|
||||||
useDarkMode: $("#enableDarkMode").is(':checked'),
|
useDarkMode: $("#enableDarkMode").is(':checked'),
|
||||||
@@ -51,7 +52,8 @@ function updateSettings() {
|
|||||||
visibleTabs: visibleTabs,
|
visibleTabs: visibleTabs,
|
||||||
defaultTab: defaultTab,
|
defaultTab: defaultTab,
|
||||||
disableRegistration: disableRegistration,
|
disableRegistration: disableRegistration,
|
||||||
defaultReminderEmail: defaultReminderEmail
|
defaultReminderEmail: defaultReminderEmail,
|
||||||
|
enableRootUserOIDC: enableRootUserOIDC
|
||||||
}
|
}
|
||||||
sloader.show();
|
sloader.show();
|
||||||
$.post('/Home/WriteToSettings', { userConfig: userConfigObject }, function (data) {
|
$.post('/Home/WriteToSettings', { userConfig: userConfigObject }, function (data) {
|
||||||
|
|||||||
Reference in New Issue
Block a user