initial
This commit is contained in:
@@ -0,0 +1,332 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
using C4IT.API;
|
||||
using C4IT.Matrix42.WebClient;
|
||||
|
||||
using C4IT_CustomerPanel.libs;
|
||||
|
||||
using static C4IT_CustomerPanel.libs.ConfigClass;
|
||||
|
||||
namespace C4IT_CustomerPanel.forms.AuthenticationSettings
|
||||
{
|
||||
internal class cAuthenticationSettingsController : INotifyPropertyChanged
|
||||
{
|
||||
#region dependency properties
|
||||
|
||||
#region noPassthrough property
|
||||
private bool _noPassthrough = default;
|
||||
|
||||
public bool noPassthrough
|
||||
{
|
||||
get { return _noPassthrough; }
|
||||
set
|
||||
{
|
||||
if (value != _noPassthrough)
|
||||
{
|
||||
_noPassthrough = value;
|
||||
OnPropertyChanged(nameof(noPassthrough));
|
||||
CheckLogonSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion noPassthrough property
|
||||
|
||||
#region noLogonAtAll property
|
||||
private bool _noLogonAtAll = default;
|
||||
|
||||
public bool noLogonAtAll
|
||||
{
|
||||
get { return _noLogonAtAll; }
|
||||
set
|
||||
{
|
||||
if (value != _noLogonAtAll)
|
||||
{
|
||||
_noLogonAtAll = value;
|
||||
OnPropertyChanged(nameof(noLogonAtAll));
|
||||
CheckLogonSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion noLogonAtAll property
|
||||
|
||||
#region additionalMethod property
|
||||
private enumAlternateAuthMethods _additionalMethod = default;
|
||||
|
||||
public enumAlternateAuthMethods additionalMethod
|
||||
{
|
||||
get { return _additionalMethod; }
|
||||
set
|
||||
{
|
||||
if (value != _additionalMethod)
|
||||
{
|
||||
_additionalMethod = value;
|
||||
OnPropertyChanged(nameof(additionalMethod));
|
||||
CheckAdditionalMethodsSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion additionalMethod property
|
||||
|
||||
#region visibilityLogonMethod property
|
||||
private bool _visibilityLogonMethod = default;
|
||||
|
||||
public bool visibilityLogonMethod
|
||||
{
|
||||
get { return _visibilityLogonMethod; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityLogonMethod)
|
||||
{
|
||||
_visibilityLogonMethod = value;
|
||||
OnPropertyChanged(nameof(visibilityLogonMethod));
|
||||
CheckLogonSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityLogonMethod property
|
||||
|
||||
#region visibilityAdditionalLogonMethodBasic property
|
||||
private bool _visibilityAdditionalLogonMethodBasic = default;
|
||||
|
||||
public bool visibilityAdditionalLogonMethodBasic
|
||||
{
|
||||
get { return _visibilityAdditionalLogonMethodBasic; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityAdditionalLogonMethodBasic)
|
||||
{
|
||||
_visibilityAdditionalLogonMethodBasic = value;
|
||||
OnPropertyChanged(nameof(visibilityAdditionalLogonMethodBasic));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityAdditionalLogonMethodBasic property
|
||||
|
||||
#region visibilityAdditionalLogonMethodToken property
|
||||
private bool _visibilityAdditionalLogonMethodToken = default;
|
||||
|
||||
public bool visibilityAdditionalLogonMethodToken
|
||||
{
|
||||
get { return _visibilityAdditionalLogonMethodToken; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityAdditionalLogonMethodToken)
|
||||
{
|
||||
_visibilityAdditionalLogonMethodToken = value;
|
||||
OnPropertyChanged(nameof(visibilityAdditionalLogonMethodToken));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityAdditionalLogonMethodToken property
|
||||
|
||||
#region visibilityAdditionalLogonMethodForms property
|
||||
private bool _visibilityAdditionalLogonMethodForms = default;
|
||||
|
||||
public bool visibilityAdditionalLogonMethodForms
|
||||
{
|
||||
get { return _visibilityAdditionalLogonMethodForms; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityAdditionalLogonMethodForms)
|
||||
{
|
||||
_visibilityAdditionalLogonMethodForms = value;
|
||||
OnPropertyChanged(nameof(visibilityAdditionalLogonMethodForms));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityAdditionalLogonMethodForms property
|
||||
|
||||
#region visibilityErrorMessage property
|
||||
private bool _visibilityErrorMessage = true;
|
||||
|
||||
public bool visibilityErrorMessage
|
||||
{
|
||||
get { return _visibilityErrorMessage; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityErrorMessage)
|
||||
{
|
||||
_visibilityErrorMessage = value;
|
||||
OnPropertyChanged(nameof(visibilityBlurMask));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityErrorMessage property
|
||||
|
||||
#region visibilityBlurMask property
|
||||
private bool _visibilityBlurMask = false;
|
||||
|
||||
public bool visibilityBlurMask
|
||||
{
|
||||
get { return _visibilityBlurMask; }
|
||||
set
|
||||
{
|
||||
if (value != _visibilityBlurMask)
|
||||
{
|
||||
_visibilityBlurMask = value;
|
||||
OnPropertyChanged(nameof(visibilityBlurMask));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion visibilityBlurMask property
|
||||
|
||||
#region txtBasicUser property
|
||||
private String _txtBasicUser = "imagoverum\\vvogel";
|
||||
|
||||
public String txtBasicUser
|
||||
{
|
||||
get { return _txtBasicUser; }
|
||||
set
|
||||
{
|
||||
if (value != _txtBasicUser)
|
||||
{
|
||||
_txtBasicUser = value;
|
||||
OnPropertyChanged(nameof(txtBasicUser));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion txtErrorMessage property
|
||||
|
||||
#region txtBasicPassword property
|
||||
private String _txtBasicPassword = "Matrix42";
|
||||
|
||||
public String txtBasicPassword
|
||||
{
|
||||
get { return _txtBasicPassword; }
|
||||
set
|
||||
{
|
||||
if (value != _txtBasicPassword)
|
||||
{
|
||||
_txtBasicPassword = value;
|
||||
OnPropertyChanged(nameof(txtBasicPassword));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion txtBasicPassword property
|
||||
|
||||
#region txtTokenSecret property
|
||||
private String _txtTokenSecret = "876543210987";
|
||||
|
||||
public String txtTokenSecret
|
||||
{
|
||||
get { return _txtTokenSecret; }
|
||||
set
|
||||
{
|
||||
if (value != _txtTokenSecret)
|
||||
{
|
||||
_txtTokenSecret = value;
|
||||
OnPropertyChanged(nameof(txtTokenSecret));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion txtTokenSecret property
|
||||
|
||||
#region txtErrorMessage property
|
||||
private String _txtErrorMessage = "You could not be authenticated. Please change your specification to ensure valid authentication.";
|
||||
|
||||
public String txtErrorMessage
|
||||
{
|
||||
get { return _txtErrorMessage; }
|
||||
set
|
||||
{
|
||||
if (value != _txtErrorMessage)
|
||||
{
|
||||
_txtErrorMessage = value;
|
||||
OnPropertyChanged(nameof(txtErrorMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion txtErrorMessage property
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
protected void OnPropertyChanged([CallerMemberName] string name = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||
}
|
||||
|
||||
#endregion dependency properties
|
||||
|
||||
private bool isDesignMode = true;
|
||||
|
||||
public cAuthenticationSettingsController()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
public void Init(bool isDesignMode = true)
|
||||
{
|
||||
this.isDesignMode = isDesignMode;
|
||||
visibilityErrorMessage = isDesignMode;
|
||||
|
||||
if (!isDesignMode)
|
||||
{
|
||||
var authConfig = ConfigClassV2.Instance.Authentication;
|
||||
noPassthrough = authConfig.noPassthrough;
|
||||
noLogonAtAll = authConfig.noLogonAtAll;
|
||||
additionalMethod = authConfig.additionalMethod;
|
||||
|
||||
txtBasicUser = authConfig.BasicUsername;
|
||||
var strDecodedBasicPassword = PrivateCustomerPanelSecurePassword.Instance.Decode(authConfig.BasicPassword);
|
||||
txtBasicPassword = strDecodedBasicPassword;
|
||||
|
||||
txtTokenSecret = PrivateCustomerPanelSecurePassword.Instance.Decode(authConfig.M42AccessToken);
|
||||
}
|
||||
|
||||
CheckLogonSettings();
|
||||
CheckAdditionalMethodsSelection();
|
||||
}
|
||||
|
||||
private void CheckLogonSettings()
|
||||
{
|
||||
visibilityLogonMethod = !noLogonAtAll || isDesignMode;
|
||||
CheckAdditionalMethodsSelection();
|
||||
}
|
||||
|
||||
private void CheckAdditionalMethodsSelection()
|
||||
{
|
||||
visibilityAdditionalLogonMethodBasic = visibilityLogonMethod && (additionalMethod == enumAlternateAuthMethods.authCredentials) || isDesignMode;
|
||||
visibilityAdditionalLogonMethodToken = visibilityLogonMethod && (additionalMethod == enumAlternateAuthMethods.authToken) || isDesignMode;
|
||||
visibilityAdditionalLogonMethodForms = visibilityLogonMethod && (additionalMethod == enumAlternateAuthMethods.authForms) || isDesignMode;
|
||||
}
|
||||
|
||||
public void FormsAuthenticationStart()
|
||||
{
|
||||
visibilityBlurMask = true;
|
||||
}
|
||||
|
||||
public async Task FormsAuthenticationFinished(string AccessToken)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(AccessToken))
|
||||
{
|
||||
var m42WebClient = new cM42WebClientV2(MainWindow.MainInstance.ConfigSettings.GetMatrixServer(false), MainWindow.MainInstance.ConfigSettings.GetCultureName(), DisableDNSCache: true);
|
||||
m42WebClient.RegisterBearerTokenAuthentication(AccessToken);
|
||||
|
||||
var _res = await m42WebClient.LogonAsync();
|
||||
|
||||
}
|
||||
|
||||
visibilityBlurMask = false;
|
||||
}
|
||||
|
||||
public void SaveSettings()
|
||||
{
|
||||
var authConfig = ConfigClassV2.Instance.Authentication;
|
||||
authConfig.noPassthrough = noPassthrough;
|
||||
authConfig.noLogonAtAll = noLogonAtAll;
|
||||
authConfig.additionalMethod = additionalMethod;
|
||||
authConfig.BasicUsername = txtBasicUser;
|
||||
var strEncodedBasicPassword = PrivateCustomerPanelSecurePassword.Instance.Encode(txtBasicPassword);
|
||||
authConfig.BasicPassword = strEncodedBasicPassword;
|
||||
authConfig.M42AccessToken = PrivateCustomerPanelSecurePassword.Instance.Encode(txtTokenSecret);
|
||||
ConfigClassV2.Instance.Save(@"Authentication\*");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user