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
320ca7b1
Commit
320ca7b1
authored
Jun 19, 2018
by
kaniini
Browse files
user: when processing a block in User.block(), ensure all follow relationships are broken
this is needed for activitypub conformance ref
#213
parent
25946f77
Changes
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
320ca7b1
...
...
@@ -505,12 +505,25 @@ def search(query, resolve) do
Repo
.
all
(
q
)
end
def
block
(
user
,
%{
ap_id:
ap_id
})
do
blocks
=
user
.
info
[
"blocks"
]
||
[]
def
block
(
blocker
,
%
User
{
ap_id:
ap_id
}
=
blocked
)
do
# sever any follow relationships to prevent leaks per activitypub (Pleroma issue #213)
blocker
=
if
following?
(
blocker
,
blocked
)
do
{
:ok
,
blocker
,
_
}
=
unfollow
(
blocker
,
blocked
)
blocker
else
blocker
end
if
following?
(
blocked
,
blocker
)
do
unfollow
(
blocked
,
blocker
)
end
blocks
=
blocker
.
info
[
"blocks"
]
||
[]
new_blocks
=
Enum
.
uniq
([
ap_id
|
blocks
])
new_info
=
Map
.
put
(
us
er
.
info
,
"blocks"
,
new_blocks
)
new_info
=
Map
.
put
(
block
er
.
info
,
"blocks"
,
new_blocks
)
cs
=
User
.
info_changeset
(
us
er
,
%{
info:
new_info
})
cs
=
User
.
info_changeset
(
block
er
,
%{
info:
new_info
})
update_and_set_cache
(
cs
)
end
...
...
Write
Preview
Supports
Markdown
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