P/
PromptTools
選單
資產庫
指令組合
產生指令包
管理資料
Skill asset
編輯 Skill
Skill 是完整資料夾資產;建立後可逐一加入腳本、參考文件、範本、圖片與子資料夾。
Skill 名稱
唯一代稱
簡短說明
主要分類
未分類
標籤
SKILL.md
五種工具預設適用
--- name: employee-auth description: '串接員工登入 / 員工身分驗證 / 取得員工資料 的對接 skill。USE WHEN:要在頁面取得已登入員工資料(員工編號、姓名、單位)、要做需登入的頁面、串接員工身分認證、員工登入、SSO token 免登入、判斷功能權限(查詢/新增/更新/刪除)、依員工編號查員工資料,或詢問「員工來源 / 登入流程 / 怎麼接員工」。基於 WebTemplateV3(ASP.NET Web Forms / .NET Framework)範本。NOT FOR:重新設計登入機制、更換員工資料庫來源的架構決策。' argument-hint: '描述要串什麼,例如:在報表頁取得登入員工 / 做一個需登入頁 / 用 token 免登入' --- # 員工登入與員工資料對接 ## 核心原則(一句話) > 頁面 **繼承 `BasePage`**,框架自動完成「身分驗證 / SSO 轉導 / 權限載入」。 > 驗證通過後,用 `CurrEmpInfo` 取員工資料、用 `CurrPermission` 判斷權限。 > **不要重新設計登入或員工來源**——只在本既有機制上串接。 ## 何時使用此 Skill - 要在頁面取得「目前登入員工」的編號 / 姓名 / 單位 / 成本中心 / 職稱 - 要新增一個「需要登入才能進入」的頁面 - 要做「不需登入的公開頁」 - 要用 SSO `token` 讓外部系統免登入導入 - 要依員工編號主動查員工資料 - 要依權限(查詢/新增/更新/刪除/列印)控制功能顯示或執行 ## 完整背景與規格 詳細的資料流、欄位對照、權限字母、API 規格、導入 Checklist,見: [登入與員工資料對接說明](../../../docs/登入與員工資料對接說明.md) > 需要查欄位對應、API 規格或新專案導入步驟時,先讀上述文件再動手。 ## 標準作法(直接照抄) ### 1. 取得已登入員工資料(最常見) 頁面 code-behind 繼承 `BasePage` 即可,框架已保證進到此頁時員工已登入: ```csharp public partial class MyPage : BasePage { protected void Page_Load(object sender, EventArgs e) { string empId = CurrEmpInfo.EmpID; // 員工編號 string empName = CurrEmpInfo.EmpName; // 員工姓名 string deptId = CurrEmpInfo.DeptID; // 單位代碼 string deptNm = CurrEmpInfo.DeptName; // 單位名稱 string cost = CurrEmpInfo.CostCenterID; string title = CurrEmpInfo.JobTitle; // 職稱 } } ``` `EmpInfo` 可用欄位:`EmpID`、`EmpName`、`DeptID`、`DeptName`、`CostCenterID`、`JobTitle`。 (來源:Sybase `employee` 表 join `subject`,已自動 CP850→Unicode 轉碼。) ### 2. 依權限控制功能 ```csharp if (CurrPermission.IsQuery) { /* 可查詢 */ } if (CurrPermission.IsInsert) { /* 可新增 */ } if (CurrPermission.IsUpdate) { /* 可更新 */ } if (CurrPermission.IsDelete) { /* 可刪除 */ } ``` 權限字母:`Q`查詢 `U`更新 `I`新增 `D`刪除 `P`列印 `A`管理者 `S`主管。 若無 `IsQuery`,框架會自動擋下並轉回登入頁。 ### 3. 做「不需登入」的公開頁 ```csharp protected override void OnPreInit(EventArgs e) { CheckAuthorization = false; // 關閉強制驗證 base.OnPreInit(e); } ``` ### 4. 比照其它頁面的權限 ```csharp protected override void OnPreInit(EventArgs e) { CheckPath = "/Example/Example.aspx"; // 權限比照此路徑 base.OnPreInit(e); } ``` ### 5. SSO token 免登入導入(外部系統) 來源系統取 token:`new BizSSO().GetTokenEC(empId)`,再導向: ``` http://你的系統/目標頁.aspx?token={token}&page=目標頁 ``` `BasePage.CheckSSO()` 會自動解 token、查員工、寫 Session 與登入紀錄。 ### 6. 依員工編號主動查資料(不靠登入流程) ```csharp var biz = new Template.BLL.BizEmployee(); System.Data.DataTable dt = biz.RetrieveFromSybasetable("12345"); // 欄位:employee_id / employee_name / dept_id / cost_center_id / work_title / subject_desc ``` ## 新專案導入 Checklist 1. 設定唯一系統代碼:`Utility.SysID`(權限以此辨識)與 `Utility.SystemTitle`。 2. 設定 `ConnectionStrings.config` 的 `SybaseConnectionString`(加密字串)。 3. 設定 `AppSettings.config`:`Platform`、`SSOWS.WebService`、`ErrorLogFolder`。 4. 新頁面 code-behind 改為 `: BasePage`。 5. 在權限系統以新 `SysID` 建檔,否則所有頁面會因無權限被擋。 ## 關鍵檔案 | 用途 | 檔案 | | --- | --- | | 頁面底層(自動驗證) | `WWWRoot/App_Code/BasePage.cs` | | 員工資料模型 | `WWWRoot/App_Code/EmpInfo.cs` | | 身分驗證邏輯 | `WWWRoot/App_Code/BLL/BizEmployee.cs` | | 員工資料存取 | `WWWRoot/App_Code/DAL/DboEmployeeAseClient.cs` | | 權限邏輯 / 模型 | `WWWRoot/App_Code/BLL/BizPermission.cs`、`WWWRoot/App_Code/Model/Permission.cs` | | 共用常數 / 設定 | `WWWRoot/App_Code/Utility.cs` | ## 注意事項 - 員工資料僅讀 Sybase `employee`(在職 `working_flag='1'`)。若換來源,只需改 `DboEmployeeAseClient` / `BizEmployee.Auth`,**上層頁面與 `EmpInfo` 介面不需更動**。 - 連線字串為加密字串(`CHMC.TripleDES`),勿填明碼。 - Debug 模式(`Platform=debug`)密碼輸入 `webtemp` 可直接通過,方便測試。 - 登出一律導向 `Logout.aspx`(清 Session/Cookie 並寫登入紀錄)。
必須包含 YAML frontmatter 的 name 與 description。
修改說明
保存完整 Skill 版本
取消