using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Text; using WebLib; namespace Education { /// /// 取得權限設定 /// public class MWEB: DAC { public MWEB() { } /// /// 檢查目前登入的員工是否有某程式的權限 /// /// 程式編號 /// 權限名稱 /// 員工編號 /// public bool CheckRight(string programId, WRightName rightName, string employeeId) { if (programId == null) programId = "NO PROGRAM ID"; if (employeeId == null) employeeId = "NOBODY"; // 取得員工權限 string right1 = BWCPE_GetRight(programId, employeeId, rightName); // 取得這個員工隸屬的群組 string[] bpglps = BWEH_GetBpglpListByBpeno(employeeId); // 取得各群組權限 string[] right2 = new string[bpglps.Length]; for (int i = 0; i < right2.Length; i++) { right2[i] = BWCPG_GetRight(programId, bpglps[i], rightName); } // 綜合判斷權限 string right = ""; if (right1 != "") right = right1; if (right != "Y") for (int i = 0; i < right2.Length; i++) { if (right2[i] != "") { if (right != "Y" && right2[i] == "Y") right = "Y"; else if (right != "Y" && right2[i] == "N") right = "N"; } } return right == "Y"; } /// /// 取員工權限 /// /// 權限編號 /// 員工編號 /// 功能名稱 /// private string BWCPE_GetRight(string rightId, string employId, WRightName functionName) { string funcName = ""; switch (functionName) { case WRightName.Execute: funcName = "BPRT1"; break; case WRightName.Insert: funcName = "BPRTI"; break; case WRightName.Update: funcName = "BPRTM"; break; case WRightName.Delete: funcName = "BPRTD"; break; case WRightName.Search: funcName = "BPRTF"; break; case WRightName.Print: funcName = "BPRTP"; break; } DbCommand cmd = NewCommand(); cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPE WHERE BPPRG=@BPPRG AND BPENO=@BPENO"; AddParam(cmd, "BPPRG", rightId); AddParam(cmd, "BPENO", employId); DataTable data = Select(cmd); if (data.Rows.Count != 0) { return data.Rows[0][funcName].ToString(); } return ""; } /// /// 取員工所屬群組 /// /// /// private string[] BWEH_GetBpglpListByBpeno(string employeeId) { DbCommand cmd = NewCommand(); cmd.CommandText = @"SELECT E.BPGLP AS BPGLP FROM BWEG E, BWEH G WHERE E.BPGLP=G.BPGLP AND G.BPENO=@BPENO ORDER BY E.BPGLP "; AddParam(cmd, "BPENO", employeeId); DataTable inGroup = Select(cmd); if (inGroup.Rows.Count == 0) return new string[0]; else { string[] result = new string[inGroup.Rows.Count]; for (int i = 0; i < inGroup.Rows.Count; i++) { result[i] = inGroup.Rows[i][0].ToString(); } return result; } } /// /// 取群組權限 /// /// 權限編號 /// 群組編號 /// 功能名稱 /// /// private string BWCPG_GetRight(string rightId, string groupId, WRightName functionName) { string funcName = ""; switch (functionName) { case WRightName.Execute: funcName = "BPRT1"; break; case WRightName.Insert: funcName = "BPRTI"; break; case WRightName.Update: funcName = "BPRTM"; break; case WRightName.Delete: funcName = "BPRTD"; break; case WRightName.Search: funcName = "BPRTF"; break; case WRightName.Print: funcName = "BPRTP"; break; } DbCommand cmd = NewCommand(); cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPG WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP"; AddParam(cmd, "BPPRG", rightId); AddParam(cmd, "BPGLP", groupId); DataTable data = Select(cmd); if (data.Rows.Count != 0) { return data.Rows[0][funcName].ToString(); } return ""; } } public enum WRightName { /// /// 主檔 /// Execute, /// /// 新增 /// Insert, /// /// 更正 /// Update, /// /// 刪除 /// Delete, /// /// 查詢 /// Search, /// /// 印表 /// Print } public class ProgramID { public const string 匯出基本資料 = "TR_EXPORT"; } }