diff options
author | Green-Star <Green-Star@users.noreply.github.com> | 2017-04-26 21:22:10 +0200 |
---|---|---|
committer | Bigard Florian <florian.bigard@gmail.com> | 2017-04-26 21:22:10 +0200 |
commit | 198b205c10dba362b9ae1ef6895b29d7e0dd685f (patch) | |
tree | 3be413139784f7445e775cbecccc6091a738360b /client/src/app/videos/shared | |
parent | 00871a261787ae1ed8446861ba2bd5eea9faca6d (diff) | |
download | PeerTube-198b205c10dba362b9ae1ef6895b29d7e0dd685f.tar.gz PeerTube-198b205c10dba362b9ae1ef6895b29d7e0dd685f.tar.zst PeerTube-198b205c10dba362b9ae1ef6895b29d7e0dd685f.zip |
Add ability for an administrator to remove any video (#61)
* Add ability for an admin to remove every video on the pod.
* Server: add BlacklistedVideos relation.
* Server: Insert in BlacklistedVideos relation upon deletion of a video.
* Server: Modify BlacklistedVideos schema to add Pod id information.
* Server: Moving insertion of a blacklisted video from the `afterDestroy` hook into the process of deletion of a video.
To avoid inserting a video when it is removed on its origin pod.
When a video is removed on its origin pod, the `afterDestroy` hook is fire, but no request is made on the delete('/:videoId') interface.
Hence, we insert into `BlacklistedVideos` only on request on delete('/:videoId') (if requirements for insertion are met).
* Server: Add removeVideoFromBlacklist hook on deletion of a video.
We are going to proceed in another way :).
We will add a new route : /:videoId/blacklist to blacklist a video.
We do not blacklist a video upon its deletion now (to distinguish a video blacklist from a regular video delete)
When we blacklist a video, the video remains in the DB, so we don't have any concern about its update. It just doesn't appear in the video list.
When we remove a video, we then have to remove it from the blacklist too.
We could also remove a video from the blacklist to 'unremove' it and make it appear again in the video list (will be another feature).
* Server: Add handler for new route post(/:videoId/blacklist)
* Client: Add isBlacklistable method
* Client: Update isRemovableBy method.
* Client: Move 'Delete video' feature from the video-list to the video-watch module.
* Server: Exclude blacklisted videos from the video list
* Server: Use findAll() in BlacklistedVideos.list() method
* Server: Fix addVideoToBlacklist function.
* Client: Add blacklist feature.
* Server: Use JavaScript Standard Style.
* Server: In checkUserCanDeleteVideo, move the callback call inside the db callback function
* Server: Modify BlacklistVideo relation
* Server: Modifiy Videos methods.
* Server: Add checkVideoIsBlacklistable method
* Server: Rewrite addVideoToBlacklist method
* Server: Fix checkVideoIsBlacklistable method
* Server: Add return to addVideoToBlacklist method
Diffstat (limited to 'client/src/app/videos/shared')
-rw-r--r-- | client/src/app/videos/shared/video.model.ts | 8 | ||||
-rw-r--r-- | client/src/app/videos/shared/video.service.ts | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/client/src/app/videos/shared/video.model.ts b/client/src/app/videos/shared/video.model.ts index 404e3bf45..1cfb312b6 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts | |||
@@ -85,8 +85,12 @@ export class Video { | |||
85 | this.by = Video.createByString(hash.author, hash.podHost); | 85 | this.by = Video.createByString(hash.author, hash.podHost); |
86 | } | 86 | } |
87 | 87 | ||
88 | isRemovableBy(user: User) { | 88 | isRemovableBy(user) { |
89 | return this.isLocal === true && user && this.author === user.username; | 89 | return user && this.isLocal === true && (this.author === user.username || user.isAdmin() === true); |
90 | } | ||
91 | |||
92 | isBlackistableBy(user) { | ||
93 | return user && user.isAdmin() === true && this.isLocal === false; | ||
90 | } | 94 | } |
91 | 95 | ||
92 | isVideoNSFWForUser(user: User) { | 96 | isVideoNSFWForUser(user: User) { |
diff --git a/client/src/app/videos/shared/video.service.ts b/client/src/app/videos/shared/video.service.ts index ee67bc1ae..a0965e20c 100644 --- a/client/src/app/videos/shared/video.service.ts +++ b/client/src/app/videos/shared/video.service.ts | |||
@@ -150,6 +150,12 @@ export class VideoService { | |||
150 | .catch((res) => this.restExtractor.handleError(res)); | 150 | .catch((res) => this.restExtractor.handleError(res)); |
151 | } | 151 | } |
152 | 152 | ||
153 | blacklistVideo(id: string) { | ||
154 | return this.authHttp.post(VideoService.BASE_VIDEO_URL + id + '/blacklist', {}) | ||
155 | .map(this.restExtractor.extractDataBool) | ||
156 | .catch((res) => this.restExtractor.handleError(res)); | ||
157 | } | ||
158 | |||
153 | private setVideoRate(id: string, rateType: RateType) { | 159 | private setVideoRate(id: string, rateType: RateType) { |
154 | const url = VideoService.BASE_VIDEO_URL + id + '/rate'; | 160 | const url = VideoService.BASE_VIDEO_URL + id + '/rate'; |
155 | const body = { | 161 | const body = { |