田 富 國
(泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院慈山分院, 福建 安溪 362411)
為了給消防安全管理工作人員提供一個共享數(shù)據(jù)處理的平臺,學(xué)院建設(shè)了消防安全管理信息系統(tǒng)。該系統(tǒng)平臺是基于客戶端/服務(wù)器設(shè)計的,通過消防檔案管理子系統(tǒng)對消防檔案實現(xiàn)統(tǒng)一管理。在服務(wù)對象上,除了消防安全管理部門工作人員外,還有一般用戶。為了防止一般用戶對檔案數(shù)據(jù)造成破壞,需要進行用戶權(quán)限設(shè)置。另外,一些重要的檔案數(shù)據(jù)可能不宜對所有用戶開放,因此也需要對檔案數(shù)據(jù)的訪問權(quán)限進行設(shè)置[1-2]。
系統(tǒng)功能:建立消防文檔電子檔案,統(tǒng)一存儲在中央服務(wù)器中;能夠?qū)ο牢臋n資料進行修改和刪除;可以自動導(dǎo)入消防文檔;可以對用戶和消防檔案資料進行權(quán)限設(shè)置,以防止對檔案數(shù)據(jù)造成破壞和對重要檔案數(shù)據(jù)造成泄密。
消防檔案管理子系統(tǒng)的數(shù)據(jù)流如圖1所示。
圖1 系統(tǒng)的數(shù)據(jù)流圖
消防檔案管理子系統(tǒng)的結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)的結(jié)構(gòu)
系統(tǒng)的用戶有5種類型:系統(tǒng)管理員、消防主管、消防檔案管理員、消防設(shè)施管理員和一般用戶。設(shè)計的用戶表(usertable)如表1所示。
表1 系統(tǒng)用戶
對系統(tǒng)用戶的權(quán)限進行如下設(shè)置:
權(quán)限(authority)為0,表示系統(tǒng)管理員;權(quán)限為1,表示消防主管;權(quán)限為2,表示消防檔案管理員;權(quán)限為3,表示消防設(shè)施管理員;權(quán)限為4,表示一般用戶。系統(tǒng)管理員可以設(shè)置用戶權(quán)限允許,以控制用戶對系統(tǒng)的使用。消防檔案管理員有查看檔案、錄入檔案和修改檔案的權(quán)限,其他用戶只有查看檔案的權(quán)限。
權(quán)限允許(permission)為0,表示允許該用戶使用系統(tǒng);權(quán)限允許為其他,表示該用戶還未被允許使用系統(tǒng)。
檔案資料內(nèi)容,以image類型字段存入數(shù)據(jù)庫。在數(shù)據(jù)庫中,同時保存檔案編號、檔案名、檔案類型、建檔時間、建檔人等信息。設(shè)計的檔案表(archive)如表2所示。
表2 檔案表
對檔案訪問權(quán)限進行如下設(shè)置:
權(quán)限為0,屬于最高訪問級別。此類檔案資料僅供系統(tǒng)管理員、消防主管、消防檔案管理員查看,不允許消防設(shè)施管理員和一般用戶查看。
權(quán)限為1,屬于中等訪問級別。此類檔案資料可供系統(tǒng)管理員、消防主管、消防檔案管理員和消防設(shè)施管理員查看,不允許一般用戶查看。
權(quán)限為2,屬于最低訪問級別。此類檔案資料允許所有用戶查看。
系統(tǒng)對檔案的安全管理主要是從2個方面進行控制:(1) 在系統(tǒng)菜單上,限制不同用戶類型使用系統(tǒng)的功能;(2) 在子模塊中,控制某些用戶使用系統(tǒng)的查詢功能。根據(jù)檔案的級別和用戶的類型,通過程序進行限制。
系統(tǒng)管理員可以對用戶的權(quán)限允許進行設(shè)置,以控制用戶對系統(tǒng)的使用。消防檔案管理員具有查看檔案的權(quán)限,同時具有錄入和修改檔案的權(quán)限;其他用戶只有查看檔案的權(quán)限。
要求用戶以某個身份登錄系統(tǒng)。依據(jù)用戶身份類型,通過程序設(shè)置系統(tǒng)菜單,限制用戶使用系統(tǒng)功能。這里要設(shè)計2個模塊,即用戶注冊模塊和系統(tǒng)菜單設(shè)置模塊。
4.1.1 用戶注冊模塊設(shè)計
在用戶注冊窗口,用戶選擇用戶身份,輸入用戶名和密碼,點擊“確定”按鈕,進行用戶注冊。
檢索數(shù)據(jù)庫中的用戶表,查看用戶名是否已經(jīng)注冊。若該用戶名未被注冊,則根據(jù)用戶選擇的用戶身份設(shè)置用戶權(quán)限和權(quán)限允許。最后將用戶信息(用戶名、密碼、用戶權(quán)限和權(quán)限允許)存入用戶表中?!按_定”按鈕的clicked事件代碼如下:
string name, qx,qxyx
if ddplb_1.text="" then
messagebox("錯誤!","請選擇用戶身份!",exclamation!,ok!,2)
else
if sle_1.text="" or sle_2.text="" then ∥判斷用戶輸入的用戶名和密碼是否為空
messagebox("錯誤!","用戶名或密碼不能為空!",exclamation!,ok!,2)
else
SELECT username ∥檢索用戶名記錄
INTO :name
FROMusertable
WHERE username= :sle_1.text;
If name<>"" then
messagebox("錯誤!","該用戶已經(jīng)存在,請選擇另外的用戶名!",exclamation!,ok!,2)
else
∥注冊用戶
choose case ddplb_1.text
case "系統(tǒng)管理員"
qx="0"
qxyx="1"
case "消防主管"
qx="1"
qxyx="1"
case "消防檔案管理員"
qx="2"
qxyx="1"
case "消防設(shè)施管理員"
qx="3"
qxyx="1"
case "一般用戶"
qx="4"
qxyx="0"
end choose
insert into usertable(username,password,authority,permission)
values(:sle_1.text,:sle_2.text,:qx,:qxyx);
commit;
choose case ddplb_1.text
case "系統(tǒng)管理員","消防主管","消防檔案管理員","消防設(shè)施管理員"
messagebox("注冊申請?zhí)峤唬?,"注冊用戶申請已提交!請您等待系統(tǒng)管理員的充許,并請記住您的用戶名和密碼!",Information!,ok!,2)
case "一般用戶"
messagebox("注冊用戶成功!","請記住您的用戶名和密碼!",Information!,ok!,2)
end choose
end if
end if
end if
4.1.2 系統(tǒng)菜單設(shè)置模塊設(shè)計
用戶類型和系統(tǒng)功能匹配表如表3所示。其中,√表示某種用戶類型允許使用某項功能,×表示某種用戶類型不允許使用某項功能。
表3 用戶類型與系統(tǒng)功能匹配
聲明一個全局變量right,用來存放用戶的權(quán)限。在密碼登錄模塊中,用戶登入系統(tǒng)時,判斷用戶類型,并對全局變量right進行設(shè)置。在主窗口w_main的open事件中,根據(jù)全局變量right的值,設(shè)置菜單項的可用性。這樣就可以根據(jù)登錄用戶的類型,限制用戶對系統(tǒng)某些功能的使用,從而避免檔案數(shù)據(jù)遭到有意或無意的破壞。
主窗口w_main的open事件代碼如下:
If right=0 then
m_main.m_消防檔案管理.m_消防檔案錄入.enabled=false
m_main.m_消防檔案管理.m_消防檔案修改.enabled=false
m_main.m_消防檔案管理.m_消防檔案打印.enabled=false
m_main.m_消防檔案管理.m_檔案自動導(dǎo)入.enabled=false
m_main.m_消防檔案管理.m_檔案權(quán)限設(shè)置.enabled=false
end if
if right=1 then
m_main.m_消防檔案管理.m_消防檔案錄入.enabled=false
m_main.m_消防檔案管理.m_消防檔案修改.enabled=false
m_main.m_消防檔案管理.m_檔案自動導(dǎo)入.enabled=false
m_main.m_消防檔案管理.m_用戶權(quán)限設(shè)置.enabled=false
end if
if right=2 then
m_main.m_消防檔案管理.m_檔案權(quán)限設(shè)置.enabled=false
m_main.m_消防檔案管理.m_用戶權(quán)限設(shè)置.enabled=false
end if
if right=3 or right=4 then
m_main.m_消防檔案管理.m_消防檔案錄入.enabled=false
m_main.m_消防檔案管理.m_消防檔案修改.enabled=false
m_main.m_消防檔案管理.m_消防檔案打印.enabled=false
m_main.m_消防檔案管理.m_檔案自動導(dǎo)入.enabled=false
m_main.m_消防檔案管理.m_檔案權(quán)限設(shè)置.enabled=false
m_main.m_消防檔案管理.m_用戶權(quán)限設(shè)置.enabled=false
end if
檔案訪問權(quán)限有3個級別:低級(權(quán)限為2)、中級(權(quán)限為1)和高級(權(quán)限為0)。訪問權(quán)限屬于低級別的檔案,允許所有用戶查看;中級別的檔案,不允許一般用戶查看;高級別的檔案,僅供系統(tǒng)管理員、消防主管、消防檔案管理員查看,不允許消防設(shè)施管理員和一般用戶查看。
用戶類型和檔案訪問權(quán)限匹配如表4所示。其中,▲表示某種用戶類型被允許訪問某種級別的檔案,-表示某種用戶類型不被允許訪問某種級別的檔案。
表4 用戶檔案訪問匹配表
在檔案查詢子模塊中,根據(jù)檔案的級別和用戶類型,通過程序進行控制,限制某些用戶對中級別和高級別檔案的訪問。程序中,right是全局變量,存放用戶的權(quán)限。在用戶登錄系統(tǒng)時,已對它賦過值。設(shè)置過濾查詢的代碼如下:
string expression
dw_1.settransobject(sqlca)
dw_1.retrieve()
if right=3 then
expression="accessauthority like 1 or accessauthority like 2"
end if
if right=4 then
expression="accessauthority like 2 "
end if
dw_1.setfilter(expression)
dw_1.filter()
在消防安全管理信息系統(tǒng)中,對消防檔案權(quán)限和用戶權(quán)限進行設(shè)置,并通過程序進行控制,限制用戶對檔案的訪問,有助于防止一般用戶對檔案數(shù)據(jù)造成破壞,避免重要檔案數(shù)據(jù)被泄密。通過在系統(tǒng)菜單和子模塊上采取安全限制措施,系統(tǒng)中的消防檔案管理更加科學(xué)、合理,檔案數(shù)據(jù)的安全性也有了更好的保障。