Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FinClip
ligase
提交
b9a93384
ligase
项目概览
FinClip
/
ligase
通知
36
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ligase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b9a93384
编写于
9月 21, 2017
作者:
M
Mark Haines
提交者:
GitHub
9月 21, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow users to join rooms they've been invited to (#253)
上级
ce019738
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
4 deletion
+35
-4
src/github.com/matrix-org/dendrite/clientapi/writers/joinroom.go
...hub.com/matrix-org/dendrite/clientapi/writers/joinroom.go
+35
-4
未找到文件。
src/github.com/matrix-org/dendrite/clientapi/writers/joinroom.go
浏览文件 @
b9a93384
...
...
@@ -69,7 +69,7 @@ func JoinRoomByIDOrAlias(
r
:=
joinRoomReq
{
req
,
content
,
device
.
UserID
,
cfg
,
federation
,
producer
,
queryAPI
,
aliasAPI
,
keyRing
}
if
strings
.
HasPrefix
(
roomIDOrAlias
,
"!"
)
{
return
r
.
joinRoomByID
()
return
r
.
joinRoomByID
(
roomIDOrAlias
)
}
if
strings
.
HasPrefix
(
roomIDOrAlias
,
"#"
)
{
return
r
.
joinRoomByAlias
(
roomIDOrAlias
)
...
...
@@ -93,15 +93,46 @@ type joinRoomReq struct {
}
// joinRoomByID joins a room by room ID
func
(
r
joinRoomReq
)
joinRoomByID
()
util
.
JSONResponse
{
// TODO: Implement joining rooms by ID.
func
(
r
joinRoomReq
)
joinRoomByID
(
roomID
string
)
util
.
JSONResponse
{
// A client should only join a room by room ID when it has an invite
// to the room. If the server is already in the room then we can
// lookup the invite and process the request as a normal state event.
// If the server is not in the room the we will need to look up the
// remote server the invite came from in order to request a join event
// from that server.
panic
(
fmt
.
Errorf
(
"Joining rooms by ID is not implemented"
))
queryReq
:=
api
.
QueryInvitesForUserRequest
{
RoomID
:
roomID
,
TargetUserID
:
r
.
userID
,
}
var
queryRes
api
.
QueryInvitesForUserResponse
if
err
:=
r
.
queryAPI
.
QueryInvitesForUser
(
r
.
req
.
Context
(),
&
queryReq
,
&
queryRes
);
err
!=
nil
{
return
httputil
.
LogThenError
(
r
.
req
,
err
)
}
if
len
(
queryRes
.
InviteSenderUserIDs
)
==
0
{
// TODO: We might need to support clients which erroneously try to join
// the room by ID even when they are not invited.
// This can be done by removing this check and falling through to
// joinRoomUsingServers passing an empty list since joinRoomUserServers
// will check if we are already in the room first.
return
util
.
JSONResponse
{
Code
:
403
,
JSON
:
jsonerror
.
Forbidden
(
"You are not invited to the room"
),
}
}
servers
:=
[]
gomatrixserverlib
.
ServerName
{}
seenBefore
:=
map
[
gomatrixserverlib
.
ServerName
]
bool
{}
for
_
,
userID
:=
range
queryRes
.
InviteSenderUserIDs
{
_
,
domain
,
err
:=
gomatrixserverlib
.
SplitID
(
'@'
,
userID
)
if
err
!=
nil
{
return
httputil
.
LogThenError
(
r
.
req
,
err
)
}
if
!
seenBefore
[
domain
]
{
servers
=
append
(
servers
,
domain
)
seenBefore
[
domain
]
=
true
}
}
return
r
.
joinRoomUsingServers
(
roomID
,
servers
)
}
// joinRoomByAlias joins a room using a room alias.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录