diff options
Diffstat (limited to 'ShiftOS.WinForms/UniteSignupDialog.cs')
| -rw-r--r-- | ShiftOS.WinForms/UniteSignupDialog.cs | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/UniteSignupDialog.cs b/ShiftOS.WinForms/UniteSignupDialog.cs new file mode 100644 index 0000000..7d0fd33 --- /dev/null +++ b/ShiftOS.WinForms/UniteSignupDialog.cs @@ -0,0 +1,137 @@ +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 + + } + } +} |
