Files
ravenqbi/AyaNovaQBI/auth.cs
2022-07-09 04:17:38 +00:00

119 lines
3.8 KiB
C#

using System;
using System.Windows.Forms;
namespace AyaNovaQBI
{
public partial class auth : Form
{
public auth()
{
InitializeComponent();
}
private void auth_Load(object sender, EventArgs e)
{
edServerUrl.Text = Properties.Settings.Default.serverurl;
#if (DEBUG)
edUserName.Text = "Accounting";
edPassword.Text = "Accounting";
#endif
}
private async void btnTest_Click(object sender, EventArgs e)
{
if (!ValidateAndCleanServerAddress()) return;
btnLogin.Enabled = btnTest.Enabled = false;
var result = await util.InitAndConfirmAddressAsync(edServerUrl.Text);
btnLogin.Enabled = btnTest.Enabled = true;
if (result == "OK")
{
MessageBox.Show("Server URL is GOOD!");
}
else
{
MessageBox.Show("Server could not be reached at that URL\n" + result);
}
}
private async void btnLogin_Click(object sender, EventArgs e)
{
if (!ValidateAndCleanServerAddress()) return;
btnLogin.Enabled = btnTest.Enabled = false;
var result = await util.InitAndConfirmAddressAsync(edServerUrl.Text);
if (result != "OK")
{
MessageBox.Show("Server could not be reached at that URL\n" + result);
btnLogin.Enabled = btnTest.Enabled = true;
return;
}
try
{
var res = await util.AuthenticateAsync(edUserName.Text, edPassword.Text);
if (!res)
{
MessageBox.Show("Login failed");
btnLogin.Enabled = btnTest.Enabled = true;
this.DialogResult = DialogResult.Cancel;
return;
}
}
catch (Exception ex)
{
MessageBox.Show("Error attempting to login:\r\n" + ex.Message);
this.DialogResult = DialogResult.Cancel;
return;
}
// MessageBox.Show($@"TEST - LOGIN SUCCEEDED: \r\
//AyaNovaUserName: {util.AyaNovaUserName}\r\n
//JWT: {util.JWT}\r\n
//AyaNovaUserRoles: {util.AyaNovaUserRoles}\r\n
//AyaNovaUserType: {util.AyaNovaUserType}");
btnLogin.Enabled = btnTest.Enabled = true;
//successful login, persist server setting
Properties.Settings.Default.serverurl = edServerUrl.Text;
Properties.Settings.Default.Save();
this.DialogResult = DialogResult.OK;
this.Close();
}
private bool ValidateAndCleanServerAddress()
{
var serverUrl = edServerUrl.Text;
Uri u;
try
{
u = new Uri(serverUrl);
var scheme = u.Scheme;
var host = u.Host;
var port = u.Port;
edServerUrl.Text = scheme + "://" + host + ":" + port + "/" + util.API_BASE_ROUTE;
//client url for notification default links, help links etc
if ((scheme == "https" && port == 443) || (scheme == "http" && port == 80))
util.GuessClientUrl = scheme + "://" + host + "/";
else
util.GuessClientUrl = scheme + "://" + host + ":" + port + "/";
}
catch (Exception ex)
{
MessageBox.Show("Server address not valid\n" + ex.Message);
return false;
}
//ok, it's some kind of url, now format it for api access
return true;
}
}
}