一步一步建立我的MIS系統:用戶管理UserMan

using System;
using System.Collections;
using System.Data;

using EwEAI.Data;

namespace EwEAI.Business.Classes.IT
{
    public class UserMan:BusinessObject
    {
        public UserMan()
            : base("Users")
        {
        }

        public static bool IsValidUser()
        {
            DataTable table = DBWR.Instance.ReadData("select * from Users where username='" + UserName
              + "' and password='" + Password + "'");
            if (table.Rows.Count == 0)
                return false;

            if (table.Rows[0]["UserName"].ToString() != UserName
              || table.Rows[0]["Password"].ToString() != Password)
                return false;

            return true;
        }

        public static string UserName
        {
            get
            {
                return _UserName;
            }
            set
            {
                _UserName = value;
            }
        }
        private static string _UserName = null;

        public static string Password
        {
            get
            {
                return _Password;
            }
            set
            {
                _Password = value;
            }
        }
        private static string _Password = null;

        protected override void ProcessBusinessFlow(DataSet set)
        {
 
        }


        public void ModifyPassword(string Password)
        {
            string SQL = "update Users set Password='" + Password + "' where UserName='" + UserName + "'";
            DBWR.Instance.ExecSQL(SQL);
        }

        public DataTable TablePrivileges
        {
            get
            {
                return BusinessData.Tables["V_TablePrivileges"];
            }
        }

        public DataTable ProgramPrivileges
        {
            get
            {
                return BusinessData.Tables["V_ProgramPrivileges"];
            }
        }

        public DataTable FieldPrivileges
        {
            get
            {
                return BusinessData.Tables["V_FieldPrivileges"];
            }
        }

        public bool ProgramHasPrintPrivilege(string ProgramName)
        {
            if (_ProgramPrivileges[ProgramName] == null)
            {
                _ProgramPrivileges[ProgramName] = GetProgramPrivilege(ProgramName);
            }

            ProgramPrivilegeStruct Privilege = (ProgramPrivilegeStruct)_ProgramPrivileges[ProgramName];
            return Privilege.PrintPrivilege == EwEAI.Data.IT.PrivilegeType.GrantPrint;
        }

        private Hashtable _ProgramPrivileges = new Hashtable();

        class ProgramPrivilegeStruct
        {
            public ProgramPrivilegeStruct(string ProgramName, EwEAI.Data.IT.PrivilegeType RunPrv, EwEAI.Data.IT.PrivilegeType PrintPrv)
            {
                _ProgramName = ProgramName;
                _RunPrivilege = RunPrv;
                _PrintPrivilege = PrintPrv;
            }

            public ProgramPrivilegeStruct()
            {
            }

            public string ProgramName
            {
                get
                {
                    return _ProgramName;
                }
                set
                {
                    _ProgramName = value;
                }
            }
            private string _ProgramName = null;

            public EwEAI.Data.IT.PrivilegeType RunPrivilege
            {
                get
                {
                    return _RunPrivilege;
                }
                set
                {
                    _RunPrivilege = value;
                }
            }
            private EwEAI.Data.IT.PrivilegeType _RunPrivilege = EwEAI.Data.IT.PrivilegeType.DenyRun;

            public EwEAI.Data.IT.PrivilegeType PrintPrivilege
            {
                get
                {
                    return _PrintPrivilege;
                }
                set
                {
                    _PrintPrivilege = value;
                }
            }
            private EwEAI.Data.IT.PrivilegeType _PrintPrivilege = EwEAI.Data.IT.PrivilegeType.DenyPrint;
        }


        public bool ProgramHasRunPrivilege(string ProgramName)
        {
            if (_ProgramPrivileges[ProgramName] == null)
            {
                _ProgramPrivileges[ProgramName] = GetProgramPrivilege(ProgramName);
            }

            ProgramPrivilegeStruct Privilege = (ProgramPrivilegeStruct)_ProgramPrivileges[ProgramName];
            return Privilege.RunPrivilege == EwEAI.Data.IT.PrivilegeType.GrantRun;
        }

        private ProgramPrivilegeStruct GetProgramPrivilege(string ProgramName)
        {
            ProgramPrivilegeStruct Result = new ProgramPrivilegeStruct();
            Result.ProgramName = ProgramName;

            string SQL = "select top 1 RunPrivilege,PrintPrivilege from ( "
               + " select P.RunPrivilege,P.PrintPrivilege,U.Level from ProgramPrivileges P "
               + "                join UserTree('" + UserName + "',1) U "
               + "        on P.UserName=U.UserName "
               + " where P.ProgramName='" + ProgramName + "'"
               + " ) a "
               + " order by Level ";

            DataTable table = TempTable.Instance.GetData(SQL);

            if (table == null)
            {
                Result.RunPrivilege = EwEAI.Data.IT.PrivilegeType.DenyRun;
                Result.PrintPrivilege = EwEAI.Data.IT.PrivilegeType.DenyPrint;

                return Result;
            }

            if (table.Rows.Count == 0)
                return Result;

            if (table.Rows[0]["RunPrivilege"] is DBNull)
            {
                Result.RunPrivilege = EwEAI.Data.IT.PrivilegeType.DenyRun;
            }
            else if (Int32.Parse(table.Rows[0]["RunPrivilege"].ToString()) == (int)EwEAI.Data.IT.PrivilegeType.GrantRun)
            {
                Result.RunPrivilege = EwEAI.Data.IT.PrivilegeType.GrantRun;
            }

            if (table.Rows[0]["PrintPrivilege"] is DBNull)
            {
                Result.PrintPrivilege = EwEAI.Data.IT.PrivilegeType.DenyPrint;
            }
            else if (Int32.Parse(table.Rows[0]["PrintPrivilege"].ToString()) == (int)EwEAI.Data.IT.PrivilegeType.GrantPrint)
            {
                Result.PrintPrivilege = EwEAI.Data.IT.PrivilegeType.GrantPrint;
            }

            return Result;
        }

        protected override void AfterFill()
        {
            DataColumn[] Parents = null;
            DataColumn[] Sons = null;

            MasterTable.ChildRelations.Add(new DataRelation("表權限",
                MasterTable.Columns["UserName"],
                TablePrivileges.Columns["UserName"])
                );

            MasterTable.ChildRelations.Add(new DataRelation("程序權限",
                MasterTable.Columns["UserName"],
                ProgramPrivileges.Columns["UserName"])
                );

            Parents = new DataColumn[] { TablePrivileges.Columns["TableName"], TablePrivileges.Columns["UserName"] };
            Sons = new DataColumn[] { FieldPrivileges.Columns["TableName"], FieldPrivileges.Columns["UserName"] };

            TablePrivileges.ChildRelations.Add(new DataRelation("字段權限",
                Parents,
                Sons)
                );

            _TableCaptions.Clear();
            _TableCaptions["Users"] = "用戶管理";
            _TableCaptions["V_ProgramPrivileges"] = "程序權限";
            _TableCaptions["V_FieldPrivileges"] = "字段權限";
            _TableCaptions["V_TablePrivileges"] = "表權限";
        }

        protected override void InializeStruct()
        {
           
            //表權限
            ChildData AChild = new ChildData(new DataObject("V_TablePrivileges", UserName),
                "表權限",
                new string[] { "UserName" },
                new string[] { "UserName" },
                TableName);

            Children[AChild.TableName] = AChild;

            //字段權限
            AChild = new ChildData(new DataObject("V_FieldPrivileges", UserName),
                "字段權限",
                new string[] { "UserName", "TableName" },
                new string[] { "UserName", "TableName" },
                "V_TablePrivileges");

            Children[AChild.TableName] = AChild;

            //程序權限
            AChild = new ChildData(new DataObject("V_ProgramPrivileges", UserName),
                "程序權限",
                new string[] { "UserName" },
                new string[] { "UserName" },
                TableName);

            Children[AChild.TableName] = AChild;

        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章