Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
funkwhale
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Andy Balaam
funkwhale
Commits
4ce9f9bf
Verified
Commit
4ce9f9bf
authored
Apr 06, 2018
by
Agate
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Dedicated permission to access library data via activity pub
parent
b7587286
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
0 deletions
+64
-0
api/funkwhale_api/federation/permissions.py
api/funkwhale_api/federation/permissions.py
+19
-0
api/tests/federation/test_permissions.py
api/tests/federation/test_permissions.py
+45
-0
No files found.
api/funkwhale_api/federation/permissions.py
0 → 100644
View file @
4ce9f9bf
from
django.conf
import
settings
from
rest_framework.permissions
import
BasePermission
from
.
import
actors
class
LibraryFollower
(
BasePermission
):
def
has_permission
(
self
,
request
,
view
):
if
not
settings
.
FEDERATION_MUSIC_NEEDS_APPROVAL
:
return
True
actor
=
getattr
(
request
,
'actor'
,
None
)
if
actor
is
None
:
return
False
library
=
actors
.
SYSTEM_ACTORS
[
'library'
].
get_actor_instance
()
return
library
.
followers
.
filter
(
url
=
actor
.
url
).
exists
()
api/tests/federation/test_permissions.py
0 → 100644
View file @
4ce9f9bf
from
rest_framework.views
import
APIView
from
funkwhale_api.federation
import
actors
from
funkwhale_api.federation
import
permissions
def
test_library_follower
(
factories
,
api_request
,
anonymous_user
,
settings
):
settings
.
FEDERATION_MUSIC_NEEDS_APPROVAL
=
True
view
=
APIView
.
as_view
()
permission
=
permissions
.
LibraryFollower
()
request
=
api_request
.
get
(
'/'
)
setattr
(
request
,
'user'
,
anonymous_user
)
check
=
permission
.
has_permission
(
request
,
view
)
assert
check
is
False
def
test_library_follower_actor_non_follower
(
factories
,
api_request
,
anonymous_user
,
settings
):
settings
.
FEDERATION_MUSIC_NEEDS_APPROVAL
=
True
actor
=
factories
[
'federation.Actor'
]()
view
=
APIView
.
as_view
()
permission
=
permissions
.
LibraryFollower
()
request
=
api_request
.
get
(
'/'
)
setattr
(
request
,
'user'
,
anonymous_user
)
setattr
(
request
,
'actor'
,
actor
)
check
=
permission
.
has_permission
(
request
,
view
)
assert
check
is
False
def
test_library_follower_actor_follower
(
factories
,
api_request
,
anonymous_user
,
settings
):
settings
.
FEDERATION_MUSIC_NEEDS_APPROVAL
=
True
library
=
actors
.
SYSTEM_ACTORS
[
'library'
].
get_actor_instance
()
follow
=
factories
[
'federation.Follow'
](
target
=
library
)
view
=
APIView
.
as_view
()
permission
=
permissions
.
LibraryFollower
()
request
=
api_request
.
get
(
'/'
)
setattr
(
request
,
'user'
,
anonymous_user
)
setattr
(
request
,
'actor'
,
follow
.
actor
)
check
=
permission
.
has_permission
(
request
,
view
)
assert
check
is
True
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