示例#1
0
        public int Register()
        {
            int result = 0;

            if (string.IsNullOrEmpty(UserName))
            {
                result = -1;
            }
            else if (string.IsNullOrEmpty(Email))
            {
                result = -2;
            }
            else if (string.IsNullOrEmpty(Password))
            {
                result = -3;
            }
            else if (string.IsNullOrEmpty(Confirm))
            {
                result = -4;
            }
            else
            {
                string MatchEmailPattern = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
                                            + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
                                            + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                                            + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
                bool checkEmail = System.Text.RegularExpressions.Regex.IsMatch(Email, MatchEmailPattern);
                if (!checkEmail)
                {
                    result = -5;
                }
                else
                {
                    if (Password != Confirm)
                    {
                        result = -6;
                    }
                    else
                    {
                        string publicKey = "";
                        string privateKey = "";

                        CspParameters cspParams = null;
                        RSACryptoServiceProvider rsaProvider = null;

                        cspParams = new CspParameters();
                        cspParams.ProviderType = 1;
                        cspParams.Flags = CspProviderFlags.UseArchivableKey;
                        cspParams.KeyNumber = (int)KeyNumber.Exchange;
                        rsaProvider = new RSACryptoServiceProvider(cspParams);

                        publicKey = rsaProvider.ToXmlString(false);
                        privateKey = rsaProvider.ToXmlString(true);

                        User us = new User();
                        us.UserName = UserName;
                        us.Email = Email;

                        us.PrivateKey = privateKey;
                        us.PublicKey = publicKey;
                        us.Path = Path;

                        byte[] salt = new byte[16];
                        byte[] hashPassword = new byte[16];

                        Security security = new Security();
                        security.HashPassword(Password, out salt, out hashPassword);

                        string s = Convert.ToBase64String(salt);
                        string p = Convert.ToBase64String(hashPassword);

                        us.Password = p;
                        us.Salt = s;

                        if (!System.IO.File.Exists(Path))
                        {

                            security.SaveConnectionConfiguration(Path, "test", "test", "test", "test", "test", "test");
                            security.SaveMailConfiguration(Path, "test", "test", 0, "test", "test");
                            security.SaveAccountsConfiguration(Path, "test", "test", "test", "test");
                            security.SaveUserConfiguration(Path, UserName, Email, p, privateKey, publicKey, s);

                            Login();

                            result = 1;
                        }
                        else
                        {

                            XmlDocument users = security.ReadUserConfiguration(Path);

                            bool check = CheckUserAndEmailExists(UserName, Email, users);
                            if (!check)
                            {
                                XmlNode node = users.SelectSingleNode("/root/users");
                                XmlNode userNode = users.CreateElement("user");

                                node.AppendChild(userNode);

                                XmlNode usernameNode = users.CreateElement("username");
                                usernameNode.AppendChild(users.CreateTextNode(UserName));
                                userNode.AppendChild(usernameNode);

                                XmlNode emailNode = users.CreateElement("email");
                                emailNode.AppendChild(users.CreateTextNode(Email));
                                userNode.AppendChild(emailNode);

                                XmlNode passNode = users.CreateElement("password");
                                passNode.AppendChild(users.CreateTextNode(p));
                                userNode.AppendChild(passNode);

                                XmlNode publickeyNode = users.CreateElement("publickey");
                                publickeyNode.AppendChild(users.CreateCDataSection(PublicKey));
                                userNode.AppendChild(publickeyNode);

                                XmlNode privateNode = users.CreateElement("privatekey");
                                privateNode.AppendChild(users.CreateCDataSection(PrivateKey));
                                userNode.AppendChild(privateNode);

                                XmlNode saltNode = users.CreateElement("salt");
                                saltNode.AppendChild(users.CreateCDataSection(s));
                                userNode.AppendChild(saltNode);

                                security.SaveUserConfiguration(Path, users.InnerXml);

                                Login();

                                result = 1;
                            }
                            else
                            {
                                result = -7;
                            }
                        }
                    }
                }
            }

            return result;
        }
示例#2
0
        public int Update()
        {
            int result = 0;

            if (User.Current != null)
            {
                Security security = new Security();
                XmlDocument accounts = security.ReadAccountConfiguration(User.Current.Path);

                XmlNode node = accounts.SelectSingleNode("/root/accounts/account[name='" + Name + "']");

                if (node != null)
                {
                    node.SelectSingleNode("username").InnerText = Username;
                    node.SelectSingleNode("password").InnerText = Password;
                    node.SelectSingleNode("description").InnerText = Description;
                    //node.SelectSingleNode("name").InnerText = Name;

                    security.SaveAccountsConfiguration(User.Current.Path, accounts);
                    result = 1;
                }
                else
                {
                    result = -2;
                }
            }
            else
            {
                result = -1;
            }

            return result;
        }
示例#3
0
        public int Add()
        {
            int result = 0;

            if (User.Current != null)
            {
                Security security = new Security();

                bool check = CheckExists(Name);

                if (check)
                {
                    result = -2;
                }
                else
                {

                    XmlDocument accounts = security.ReadAccountConfiguration(User.Current.Path);

                    XmlNode node = accounts.SelectSingleNode("/root/accounts");
                    XmlNode accountNode = accounts.CreateElement("account");

                    node.AppendChild(accountNode);

                    XmlNode nameNode = accounts.CreateElement("name");
                    nameNode.AppendChild(accounts.CreateTextNode(Name));
                    accountNode.AppendChild(nameNode);

                    XmlNode userNode = accounts.CreateElement("username");
                    userNode.AppendChild(accounts.CreateTextNode(Username));
                    accountNode.AppendChild(userNode);

                    XmlNode passNode = accounts.CreateElement("password");
                    passNode.AppendChild(accounts.CreateTextNode(Password));
                    accountNode.AppendChild(passNode);

                    XmlNode desNode = accounts.CreateElement("description");
                    desNode.AppendChild(accounts.CreateTextNode(Description));
                    accountNode.AppendChild(desNode);

                    security.SaveAccountsConfiguration(User.Current.Path, accounts);

                    result = 1;
                }
            }
            else
            {
                result = -1;
            }

            return result;
        }
示例#4
0
        public bool Delete()
        {
            bool result = false;

            if (User.Current != null)
            {

                ThangDC.Core.Securities.Security security = new ThangDC.Core.Securities.Security();
                System.Xml.XmlDocument accounts = security.ReadAccountConfiguration(User.Current.Path);

                System.Xml.XmlNode node = accounts.SelectSingleNode("/root/accounts/account[name='" + Name + "']");
                if (node != null)
                {
                    node.ParentNode.RemoveChild(node);
                    security.SaveAccountsConfiguration(User.Current.Path, accounts);
                    result = true;
                }
            }

            return result;
        }