81 lines
2.5 KiB
C#
81 lines
2.5 KiB
C#
using OwnChar.App.Desktop.Api;
|
|
using OwnChar.App.Desktop.LangRes;
|
|
using OwnChar.Data;
|
|
using Pilz.Cryptography;
|
|
using Pilz.Plugins.Advanced;
|
|
using Pilz.UI;
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using Telerik.WinControls;
|
|
using Telerik.WinControls.UI;
|
|
|
|
namespace OwnChar.App.Desktop.UI.MainTabs;
|
|
|
|
public partial class TabLoginView : UserControl, ILoadContent
|
|
{
|
|
private readonly IMainWindowApi mainApi;
|
|
private IDataManager? dataManager;
|
|
|
|
public TabLoginView(IMainWindowApi mainApi)
|
|
{
|
|
this.mainApi = mainApi;
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void LoadContent()
|
|
{
|
|
LoadProvidersList();
|
|
}
|
|
|
|
private void LoadProvidersList()
|
|
{
|
|
radDropDownList_LoginProvider.BeginUpdate();
|
|
|
|
foreach (var feat in PluginFeatureController.Instance.Features.Get(FeatureCodes.LoginProvider))
|
|
{
|
|
if (feat is LoginProvider provider)
|
|
{
|
|
var item = new RadListDataItem(feat.Name, provider)
|
|
{
|
|
SvgImage = feat.Icon as RadSvgImage,
|
|
Image = feat.Icon as Image,
|
|
};
|
|
radDropDownList_LoginProvider.Items.Add(item);
|
|
}
|
|
}
|
|
|
|
radDropDownList_LoginProvider.EndUpdate();
|
|
|
|
if (radDropDownList_LoginProvider.Items.Count > 0)
|
|
radDropDownList_LoginProvider.SelectedIndex = 0;
|
|
}
|
|
|
|
private void RadDropDownList_LoginProvider_SelectedValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (radDropDownList_LoginProvider.SelectedValue is LoginProvider provider)
|
|
dataManager = provider.GetDefault(mainApi);
|
|
}
|
|
|
|
private void RadButton_Login_Click(object sender, EventArgs e)
|
|
{
|
|
var username = radTextBoxControl_Username.Text.Trim();
|
|
var password = (SecureString)radTextBoxControl_Password.Text;
|
|
|
|
if (mainApi.Manager?.Login(dataManager, username, password) is not bool success || !success)
|
|
{
|
|
RadMessageBox.Show(LoginPageLangRes.MsgBox_LoginFailed, LoginPageLangRes.MsgBox_LoginFailed_Title, MessageBoxButtons.YesNo, RadMessageIcon.Exclamation);
|
|
return;
|
|
}
|
|
|
|
mainApi.OpenTab(new TabUserView(mainApi, mainApi.Manager.CurrentUser), mainApi.Manager.CurrentUser!.Username!);
|
|
mainApi.CloseTab(this);
|
|
}
|
|
|
|
private void RadButton_ConfigureProvider_Click(object sender, EventArgs e)
|
|
{
|
|
if (radDropDownList_LoginProvider.SelectedValue is LoginProvider provider)
|
|
provider.Configure(mainApi, ref dataManager);
|
|
}
|
|
}
|