设置用户登录事件
本节的内容可以参考CaseStudy目录下的例子:QQServer.Table
有用户登录OpenQQ时,会触发OpenQQ服务端事件UserLogging, 该事件用于验证登录用户身份,并在验证通过后,给用户设置好友。
此事件的e参数有:
UserName: 字符型,返回登录用户名
Password: 字符型,返回登录用户密码
Success: 逻辑型,默认为False,设置为True允许此用户登录
Message: 字符型,通常用于设置返回给用户的欢迎信息或错误信息。
Buddies: 字符型集合,用于设置登录用户的好友名单
在菜单的“管理项目”功能区,单击“网络监视器”,设置UserLogging事件的代码如下:
Dim
pts() As
String = e.UserName.Split(".")
Dim
dr As
DataRow
dr =
DataTables("用户").Find("部门
= '"
& pts(0)
&
"' And
姓名
= '"
& pts(1)
& "'")
If
dr Is
Nothing Then
'判断此用户不存在
e.Message
= "用户名错误!"
'返回给登录者的提示信息
Return
End
If
If
dr("密码")
<> e.Password
Then
'如果密码错误
e.Message
= "登录密码错误!"
'返回给登录者的提示信息
Return
End
If
e.Success
= True
'允许用户登录
'添加存储在好友列的非本部门的好友
If
dr.IsNull("好友")
= False Then
Dim nms()
As String =
dr("好友").Split(",")
e.Buddies.AddRange(nms)
End
If
'最后添加相同部门的同事为好友
For
Each dr
In DataTables("用户").Select("部门
= '" & pts(0)
& "'")
Dim nm
As String =
dr("部门")
& "."
& dr("姓名")
If nm <>
e.UserName
Then '如果不是登录者本人
e.Buddies.Add(nm)
End
If
Next
以上代码判断用户名和密码是否正确,如果正确,将e参数Success设置为True,允许该用户登录,然后将该用户的好友添加到Buddies集合中。
需要注意的是,好友必须是双向的,也就是两个用户必须互为好友,相互之间才能收发信息。
如果企业员工不多,可以直接将所有员工相互加为好友,实际上示例文件QQServer.Table就是这样的:
Dim
pts() As
String = e.UserName.Split(".")
im
dr1 As
DataRow
dr1 =
DataTables("用户").Find("部门
= '" & pts(0)
& "' And 姓名 = '"
& pts(1)
& "'")
If
dr1 Is
Nothing Then
'判断此用户不存在
e.Message
= "用户名错误!"
'返回给登录者的提示信息
Return
End
If
If
dr1("密码") <>
e.Password
Then '如果密码错误
e.Message
= "登录密码错误!"
'返回给登录者的提示信息
Return
End
If
e.Success
= True
'允许用户登录
'添加所有同事为好友
For
Each dr2
As DataRow
In DataTables("用户").DataRows
Dim nm
As String =
dr2("部门")
& "."
& dr2("姓名")
If nm <>
e.UserName
Then '如果不是登录者本人
e.Buddies.Add(nm)
End
If
Next