田 富 国
(泉州经贸职业技术学院慈山分院, 福建 安溪 362411)
为了给消防安全管理工作人员提供一个共享数据处理的平台,学院建设了消防安全管理信息系统。该系统平台是基于客户端/服务器设计的,通过消防档案管理子系统对消防档案实现统一管理。在服务对象上,除了消防安全管理部门工作人员外,还有一般用户。为了防止一般用户对档案数据造成破坏,需要进行用户权限设置。另外,一些重要的档案数据可能不宜对所有用户开放,因此也需要对档案数据的访问权限进行设置[1-2]。
系统功能:建立消防文档电子档案,统一存储在中央服务器中;能够对消防文档资料进行修改和删除;可以自动导入消防文档;可以对用户和消防档案资料进行权限设置,以防止对档案数据造成破坏和对重要档案数据造成泄密。
消防档案管理子系统的数据流如图1所示。
图1 系统的数据流图
消防档案管理子系统的结构如图2所示。
图2 系统的结构
系统的用户有5种类型:系统管理员、消防主管、消防档案管理员、消防设施管理员和一般用户。设计的用户表(usertable)如表1所示。
表1 系统用户
对系统用户的权限进行如下设置:
权限(authority)为0,表示系统管理员;权限为1,表示消防主管;权限为2,表示消防档案管理员;权限为3,表示消防设施管理员;权限为4,表示一般用户。系统管理员可以设置用户权限允许,以控制用户对系统的使用。消防档案管理员有查看档案、录入档案和修改档案的权限,其他用户只有查看档案的权限。
权限允许(permission)为0,表示允许该用户使用系统;权限允许为其他,表示该用户还未被允许使用系统。
档案资料内容,以image类型字段存入数据库。在数据库中,同时保存档案编号、档案名、档案类型、建档时间、建档人等信息。设计的档案表(archive)如表2所示。
表2 档案表
对档案访问权限进行如下设置:
权限为0,属于最高访问级别。此类档案资料仅供系统管理员、消防主管、消防档案管理员查看,不允许消防设施管理员和一般用户查看。
权限为1,属于中等访问级别。此类档案资料可供系统管理员、消防主管、消防档案管理员和消防设施管理员查看,不允许一般用户查看。
权限为2,属于最低访问级别。此类档案资料允许所有用户查看。
系统对档案的安全管理主要是从2个方面进行控制:(1) 在系统菜单上,限制不同用户类型使用系统的功能;(2) 在子模块中,控制某些用户使用系统的查询功能。根据档案的级别和用户的类型,通过程序进行限制。
系统管理员可以对用户的权限允许进行设置,以控制用户对系统的使用。消防档案管理员具有查看档案的权限,同时具有录入和修改档案的权限;其他用户只有查看档案的权限。
要求用户以某个身份登录系统。依据用户身份类型,通过程序设置系统菜单,限制用户使用系统功能。这里要设计2个模块,即用户注册模块和系统菜单设置模块。
4.1.1 用户注册模块设计
在用户注册窗口,用户选择用户身份,输入用户名和密码,点击“确定”按钮,进行用户注册。
检索数据库中的用户表,查看用户名是否已经注册。若该用户名未被注册,则根据用户选择的用户身份设置用户权限和权限允许。最后将用户信息(用户名、密码、用户权限和权限允许)存入用户表中。“确定”按钮的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("错误!","该用户已经存在,请选择另外的用户名!",exclamation!,ok!,2)
else
∥注册用户
choose case ddplb_1.text
case "系统管理员"
qx="0"
qxyx="1"
case "消防主管"
qx="1"
qxyx="1"
case "消防档案管理员"
qx="2"
qxyx="1"
case "消防设施管理员"
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 "系统管理员","消防主管","消防档案管理员","消防设施管理员"
messagebox("注册申请提交!","注册用户申请已提交!请您等待系统管理员的充许,并请记住您的用户名和密码!",Information!,ok!,2)
case "一般用户"
messagebox("注册用户成功!","请记住您的用户名和密码!",Information!,ok!,2)
end choose
end if
end if
end if
4.1.2 系统菜单设置模块设计
用户类型和系统功能匹配表如表3所示。其中,√表示某种用户类型允许使用某项功能,×表示某种用户类型不允许使用某项功能。
表3 用户类型与系统功能匹配
声明一个全局变量right,用来存放用户的权限。在密码登录模块中,用户登入系统时,判断用户类型,并对全局变量right进行设置。在主窗口w_main的open事件中,根据全局变量right的值,设置菜单项的可用性。这样就可以根据登录用户的类型,限制用户对系统某些功能的使用,从而避免档案数据遭到有意或无意的破坏。
主窗口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_档案自动导入.enabled=false
m_main.m_消防档案管理.m_档案权限设置.enabled=false
end if
if right=1 then
m_main.m_消防档案管理.m_消防档案录入.enabled=false
m_main.m_消防档案管理.m_消防档案修改.enabled=false
m_main.m_消防档案管理.m_档案自动导入.enabled=false
m_main.m_消防档案管理.m_用户权限设置.enabled=false
end if
if right=2 then
m_main.m_消防档案管理.m_档案权限设置.enabled=false
m_main.m_消防档案管理.m_用户权限设置.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_档案自动导入.enabled=false
m_main.m_消防档案管理.m_档案权限设置.enabled=false
m_main.m_消防档案管理.m_用户权限设置.enabled=false
end if
档案访问权限有3个级别:低级(权限为2)、中级(权限为1)和高级(权限为0)。访问权限属于低级别的档案,允许所有用户查看;中级别的档案,不允许一般用户查看;高级别的档案,仅供系统管理员、消防主管、消防档案管理员查看,不允许消防设施管理员和一般用户查看。
用户类型和档案访问权限匹配如表4所示。其中,▲表示某种用户类型被允许访问某种级别的档案,-表示某种用户类型不被允许访问某种级别的档案。
表4 用户档案访问匹配表
在档案查询子模块中,根据档案的级别和用户类型,通过程序进行控制,限制某些用户对中级别和高级别档案的访问。程序中,right是全局变量,存放用户的权限。在用户登录系统时,已对它赋过值。设置过滤查询的代码如下:
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()
在消防安全管理信息系统中,对消防档案权限和用户权限进行设置,并通过程序进行控制,限制用户对档案的访问,有助于防止一般用户对档案数据造成破坏,避免重要档案数据被泄密。通过在系统菜单和子模块上采取安全限制措施,系统中的消防档案管理更加科学、合理,档案数据的安全性也有了更好的保障。