221 lines
6.6 KiB
C#
221 lines
6.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Text;
|
|
using WebLib;
|
|
|
|
namespace Education
|
|
{
|
|
/// <summary>
|
|
/// 取得權限設定
|
|
/// </summary>
|
|
public class MWEB: DAC
|
|
{
|
|
public MWEB()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 檢查目前登入的員工是否有某程式的權限
|
|
/// </summary>
|
|
/// <param name="programId">程式編號</param>
|
|
/// <param name="rightName">權限名稱</param>
|
|
/// <param name="employeeId">員工編號</param>
|
|
/// <returns></returns>
|
|
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";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取員工權限
|
|
/// </summary>
|
|
/// <param name="rightId">權限編號</param>
|
|
/// <param name="employId">員工編號</param>
|
|
/// <param name="functionName">功能名稱</param>
|
|
/// <returns></returns>
|
|
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 "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取員工所屬群組
|
|
/// </summary>
|
|
/// <param name="employeeId"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取群組權限
|
|
/// </summary>
|
|
/// <param name="rightId">權限編號</param>
|
|
/// <param name="groupId">群組編號</param>
|
|
/// <param name="functionName">功能名稱</param>
|
|
/// <returns></returns>
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// 主檔
|
|
/// </summary>
|
|
Execute,
|
|
/// <summary>
|
|
/// 新增
|
|
/// </summary>
|
|
Insert,
|
|
/// <summary>
|
|
/// 更正
|
|
/// </summary>
|
|
Update,
|
|
/// <summary>
|
|
/// 刪除
|
|
/// </summary>
|
|
Delete,
|
|
/// <summary>
|
|
/// 查詢
|
|
/// </summary>
|
|
Search,
|
|
/// <summary>
|
|
/// 印表
|
|
/// </summary>
|
|
Print
|
|
}
|
|
|
|
public class ProgramID
|
|
{
|
|
public const string 匯出基本資料 = "TR_EXPORT";
|
|
}
|
|
}
|