137 lines
4.1 KiB
C#
137 lines
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using ShiftOS.Engine;
|
|
using Newtonsoft.Json;
|
|
using System.Net;
|
|
using ShiftOS.Objects;
|
|
|
|
namespace ShiftOS.WinForms
|
|
{
|
|
public partial class UniteSignupDialog : UserControl, IShiftOSWindow
|
|
{
|
|
public UniteSignupDialog(Action<string> callback)
|
|
{
|
|
InitializeComponent();
|
|
Callback = callback;
|
|
}
|
|
|
|
private Action<string> Callback { get; set; }
|
|
|
|
|
|
public void OnLoad()
|
|
{
|
|
this.ParentForm.AcceptButton = btnlogin;
|
|
}
|
|
|
|
public void OnSkinLoad()
|
|
{
|
|
}
|
|
|
|
public bool OnUnload()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void OnUpgrade()
|
|
{
|
|
}
|
|
|
|
private void btnlogin_Click(object sender, EventArgs e)
|
|
{
|
|
string u = txtusername.Text;
|
|
string p = txtpassword.Text;
|
|
|
|
if (string.IsNullOrWhiteSpace(u))
|
|
{
|
|
Infobox.Show("Please enter a username.", "You must enter a proper email address.");
|
|
return;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(p))
|
|
{
|
|
Infobox.Show("Please enter a password.", "You must enter a valid password.");
|
|
return;
|
|
}
|
|
|
|
if(p != txtconfirm.Text)
|
|
{
|
|
Infobox.Show("Passwords don't match.", "The \"Password\" and \"Confirm\" boxes must match.");
|
|
return;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(txtdisplay.Text))
|
|
{
|
|
Infobox.Show("Empty display name", "Please choose a proper display name.");
|
|
return;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(txtsysname.Text))
|
|
{
|
|
Infobox.Show("Empty system name", "Please name your computer!");
|
|
return;
|
|
}
|
|
|
|
if(p.Length < 7)
|
|
{
|
|
Infobox.Show("Password error", "Your password must have at least 7 characters.");
|
|
return;
|
|
}
|
|
|
|
if (!(p.Any(char.IsUpper) &&
|
|
p.Any(char.IsLower) &&
|
|
p.Any(char.IsDigit)))
|
|
{
|
|
Infobox.Show("Password error", "Your password must contain at least one uppercase, lowercase, digit and symbol character.");
|
|
return;
|
|
}
|
|
|
|
if (!u.Contains("@"))
|
|
{
|
|
Infobox.Show("Valid email required.", "You must specify a valid email address.");
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
var webrequest = HttpWebRequest.Create(UserConfig.Get().UniteUrl + "/Auth/Register?appname=ShiftOS&appdesc=ShiftOS+client&version=1_0_beta_2_4&displayname=" + txtdisplay.Text + "&sysname=" + txtsysname.Text);
|
|
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{u}:{p}"));
|
|
webrequest.Headers.Add("Authentication: Basic " + base64);
|
|
var response = webrequest.GetResponse();
|
|
var str = response.GetResponseStream();
|
|
var reader = new System.IO.StreamReader(str);
|
|
string result = reader.ReadToEnd();
|
|
if (result.StartsWith("{"))
|
|
{
|
|
var exc = JsonConvert.DeserializeObject<Exception>(result);
|
|
Infobox.Show("Error", exc.Message);
|
|
return;
|
|
}
|
|
reader.Close();
|
|
str.Close();
|
|
str.Dispose();
|
|
response.Dispose();
|
|
Callback?.Invoke(result);
|
|
AppearanceManager.Close(this);
|
|
}
|
|
#if DEBUG
|
|
catch (Exception ex)
|
|
{
|
|
Infobox.Show("Error", ex.ToString());
|
|
}
|
|
#else
|
|
catch
|
|
{
|
|
Infobox.Show("Login failed.", "The login attempt failed due to an incorrect username and password pair.");
|
|
}
|
|
#endif
|
|
|
|
}
|
|
}
|
|
}
|