Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
13ff312c
Verified
Commit
13ff312c
authored
Apr 08, 2019
by
Sadposter
Browse files
Sever subscription in case of block
parent
76fdfd1c
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
13ff312c
...
...
@@ -924,14 +924,23 @@ def unmute(muter, %{ap_id: ap_id}) do
end
def
subscribe
(
subscriber
,
%{
ap_id:
ap_id
})
do
with
%
User
{}
=
user
<-
get_or_fetch_by_ap_id
(
ap_id
)
do
info_cng
=
user
.
info
|>
User
.
Info
.
add_to_subscribers
(
subscriber
.
ap_id
)
user_config
=
Application
.
get_env
(
:pleroma
,
:user
)
deny_follow_blocked
=
Keyword
.
get
(
user_config
,
:deny_follow_blocked
)
change
(
user
)
|>
put_embed
(
:info
,
info_cng
)
|>
update_and_set_cache
()
with
%
User
{}
=
subscribed
<-
get_or_fetch_by_ap_id
(
ap_id
)
do
blocked
=
blocks?
(
subscribed
,
subscriber
)
and
deny_follow_blocked
if
blocked
do
{
:error
,
"Could not subscribe:
#{
subscribed
.
nickname
}
is blocking you"
}
else
info_cng
=
subscribed
.
info
|>
User
.
Info
.
add_to_subscribers
(
subscriber
.
ap_id
)
change
(
subscribed
)
|>
put_embed
(
:info
,
info_cng
)
|>
update_and_set_cache
()
end
end
end
...
...
@@ -957,6 +966,14 @@ def block(blocker, %User{ap_id: ap_id} = blocked) do
blocker
end
blocker
=
if
subscribed_to?
(
blocked
,
blocker
)
do
{
:ok
,
blocker
}
=
unsubscribe
(
blocked
,
blocker
)
blocker
else
blocker
end
if
following?
(
blocked
,
blocker
)
do
unfollow
(
blocked
,
blocker
)
end
...
...
test/user_test.exs
View file @
13ff312c
...
...
@@ -146,6 +146,15 @@ test "can't follow a user who blocked us" do
{
:error
,
_
}
=
User
.
follow
(
blockee
,
blocker
)
end
test
"can't subscribe to a user who blocked us"
do
blocker
=
insert
(
:user
)
blocked
=
insert
(
:user
)
{
:ok
,
blocker
}
=
User
.
block
(
blocker
,
blocked
)
{
:error
,
_
}
=
User
.
subscribe
(
blocked
,
blocker
)
end
test
"local users do not automatically follow local locked accounts"
do
follower
=
insert
(
:user
,
info:
%{
locked:
true
})
followed
=
insert
(
:user
,
info:
%{
locked:
true
})
...
...
@@ -729,6 +738,22 @@ test "blocks tear down blocked->blocker follow relationships" do
refute
User
.
following?
(
blocker
,
blocked
)
refute
User
.
following?
(
blocked
,
blocker
)
end
test
"blocks tear down blocked->blocker subscription relationships"
do
blocker
=
insert
(
:user
)
blocked
=
insert
(
:user
)
{
:ok
,
blocker
}
=
User
.
subscribe
(
blocked
,
blocker
)
assert
User
.
subscribed_to?
(
blocked
,
blocker
)
refute
User
.
subscribed_to?
(
blocker
,
blocked
)
{
:ok
,
blocker
}
=
User
.
block
(
blocker
,
blocked
)
assert
User
.
blocks?
(
blocker
,
blocked
)
refute
User
.
subscribed_to?
(
blocker
,
blocked
)
refute
User
.
subscribed_to?
(
blocked
,
blocker
)
end
end
describe
"domain blocking"
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment