Newer
Older
GHFX_REFACTOR / FrmLogin.cs
using System;
using System.Data;
using System.Data.OracleClient;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class FrmLogin : Office2007Form
    {

        //登录界面 -- 配置文件的路径
        public static string filename = Application.StartupPath + "\\login.xml";


        public FrmLogin()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 登录按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            bool result = ValidateUser();
//            bool result =ValidateFromUrl();//从平台获取用户角色信息,判断是否能登陆成功
            if (result)
            {
                WriteXml();
                Utility.userName = txtUser.Text.Trim();
                DialogResult = DialogResult.OK;
                Close();
            }
            else
            {
                MessageBox.Show("用户名、密码不正确,请重新输入!", "提示");
                txtUser.Clear();
                textBoxPassWord.Clear();
            }
        }
        /// <summary>
        /// 验证用户名、密码
        /// </summary>
        /// <returns></returns>
        private bool ValidateUser()
        {
            string passWord = Utility.MD5Encrypt2(textBoxPassWord.Text.Trim());           
            string sql = "select * from casic_userinfotest where USERNAME='" + txtUser.Text.Trim() + "' and PASSWORD='" + passWord + "' and sysname='GHFX' ";
            
            DataTable dt = OledbHelper.QueryTable(sql);
            if (dt == null || dt.Rows.Count <= 0) return false;
            if (String.IsNullOrEmpty(dt.Rows[0]["rid"].ToString())) return true;
            sql = "select gid from casic_userroletest where id=" + dt.Rows[0]["rid"] + " and sysname='GHFX' ";
            using (OracleDataReader reader = OracleUtils.ExecuteReader(OracleUtils.ConnectionString, CommandType.Text, sql))
            {
                while (reader.Read())
                {
                    Utility.userRole = reader[0].ToString();
                    break;
                }
            }
            return true;
        }



        private bool ValidateFromUrl()
        {
            string user = txtUser.Text.Trim();
            string pwd = textBoxPassWord.Text.Trim();
            //做成配置的
            string roleserver = Utility.RoleServer;
            if (roleserver == null || roleserver.Trim().Equals(""))
            {
                MessageBox.Show("请在Config.xml中配置roleurl!");
                return false;
            }
            HttpWebRequest request =
                WebRequest.Create(roleserver+"/rs/authority/user?username=" + user + "&password=" + pwd + "&appId=21") as HttpWebRequest;
            if (request == null) return false;
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                try
                {
                    if (response == null || response.GetResponseStream() == null) return false;
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string[] result = reader.ReadToEnd().Split(',');
                    //解析result
                    if (result.Length < 5) return false;
                    StringBuilder userRole = new StringBuilder("");
                    for (int i = 4; i < result.Length; i++)
                    {
                        string[] tmpStrings = result[i].Split('_');
                        if (tmpStrings.Length < 2) continue;
                        userRole.Append(tmpStrings[1].Trim() + ",");
                    }
                    if (userRole.Length < 3) return false;
                    userRole.Remove(userRole.Length - 3, 3);
                    //                    MessageBox.Show(userRole.ToString());
                    Utility.userRole = userRole.ToString();
                    return Utility.userRole != null && !Utility.userRole.Equals("null");
                }
                catch (Exception e)
                {
                    return false;
                }
            }
        }

        private void FrmLogin_Load(object sender, EventArgs e)
        {

            Utility.SetParams();
            
            StartPosition = FormStartPosition.CenterScreen;

            ReadXml();
        }
        /// <summary>
        /// 读取上一次登录的用户名和密码
        /// </summary>
        private void ReadXml()
        {
            if (!File.Exists(filename)) return;
            //初始化XML文档操作类
            XmlDocument myDoc = new XmlDocument();
            {
                //加载XML文件
                try
                {
                    myDoc.Load(filename);
                }
                catch (Exception e)
                {
                    LogError.PublishError(e);
                    return;
                }
                //搜索指定的节点
                XmlNode serverRootNode = myDoc.SelectSingleNode("Params");
                XmlNodeList nodes = null;
                if (serverRootNode != null)
                {
                    nodes = serverRootNode.ChildNodes;
                }
                if (nodes == null) return;
                foreach (XmlNode xn in nodes)
                {
                    if (xn.Name.Equals("username"))
                    {
                        txtUser.Text = xn.InnerText.Trim();
                    }
                    else if (xn.Name.Equals("password"))
                    {
                        textBoxPassWord.Text = xn.InnerText.Trim();
                    }
                    else if (xn.Name.Equals("isremember"))
                    {
                        checkBoxXRememberPassword.Checked = xn.InnerText.Trim().Equals("true");
                    }
                }
            }
        }
        /// <summary>
        /// 记录登录的用户名和密码
        /// </summary>
        private void WriteXml()
        {
            if (!File.Exists(filename))
            {
                return;
            }

            //初始化XML文档操作类
            XmlDocument myDoc = new XmlDocument();
            //加载XML文件
            try
            {
                myDoc.Load(filename);
            }
            catch (Exception e)
            {
                LogError.PublishError(e);
                MessageBox.Show(e.Message, "提示");
                return;
            }
            //搜索指定的节点
            XmlNode serverRootNode = myDoc.SelectSingleNode("Params");
            XmlNodeList nodes = null;
            if (serverRootNode != null)
            {
                nodes = serverRootNode.ChildNodes;
            }
            if (nodes != null)
            {
                foreach (XmlNode xn in nodes)
                {
                    XmlElement xe = (XmlElement)xn;
                    if (xe.Name.Equals("username"))
                    {
                        xe.InnerText = txtUser.Text.Trim();
                    }
                    else if (xe.Name.Equals("password"))
                    {
                        xe.InnerText = checkBoxXRememberPassword.Checked ? textBoxPassWord.Text.Trim() : "";
                    }
                    else if (xe.Name.Equals("isremember"))
                    {
                        xe.InnerText = checkBoxXRememberPassword.Checked ? "true" : "false";
                    }
                }
            }
            myDoc.Save(filename);
        }
        /// <summary>
        /// 关闭按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}