Files
thinkyu/教育訓練系統/Web/Common/UNMWEB.cs
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

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";
}
}