using OwnChar.App.Desktop.Api; using OwnChar.App.Desktop.LangRes; using OwnChar.Data; using Pilz.Cryptography; using Pilz.Plugins.Advanced; using Pilz.UI.Telerik.Dialogs; 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); } }