From 1eddc9a74f9a80fa5d0cb25fceb3fc47a1a3c14a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 Apr 2019 10:49:46 +0200 Subject: Add user adminFlags --- shared/models/users/user-create.model.ts | 2 ++ shared/models/users/user-flag.model.ts | 4 +++ shared/models/users/user-update.model.ts | 2 ++ shared/models/users/user.model.ts | 5 ++++ shared/utils/users/users.ts | 33 ++++++++++++++++----- shared/utils/videos/video-blacklist.ts | 51 +++++++++++--------------------- 6 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 shared/models/users/user-flag.model.ts (limited to 'shared') diff --git a/shared/models/users/user-create.model.ts b/shared/models/users/user-create.model.ts index 08be4db05..6677b42aa 100644 --- a/shared/models/users/user-create.model.ts +++ b/shared/models/users/user-create.model.ts @@ -1,4 +1,5 @@ import { UserRole } from './user-role' +import { UserAdminFlag } from './user-flag.model' export interface UserCreate { username: string @@ -7,4 +8,5 @@ export interface UserCreate { videoQuota: number videoQuotaDaily: number role: UserRole + adminFlags?: UserAdminFlag } diff --git a/shared/models/users/user-flag.model.ts b/shared/models/users/user-flag.model.ts new file mode 100644 index 000000000..f5759f18f --- /dev/null +++ b/shared/models/users/user-flag.model.ts @@ -0,0 +1,4 @@ +export enum UserAdminFlag { + NONE = 0, + BY_PASS_VIDEO_AUTO_BLACKLIST = 1 << 0 +} diff --git a/shared/models/users/user-update.model.ts b/shared/models/users/user-update.model.ts index cd215bab3..fa43487ac 100644 --- a/shared/models/users/user-update.model.ts +++ b/shared/models/users/user-update.model.ts @@ -1,4 +1,5 @@ import { UserRole } from './user-role' +import { UserAdminFlag } from './user-flag.model' export interface UserUpdate { password?: string @@ -7,4 +8,5 @@ export interface UserUpdate { videoQuota?: number videoQuotaDaily?: number role?: UserRole + adminFlags?: UserAdminFlag } diff --git a/shared/models/users/user.model.ts b/shared/models/users/user.model.ts index af783d389..2f6a3c719 100644 --- a/shared/models/users/user.model.ts +++ b/shared/models/users/user.model.ts @@ -3,6 +3,7 @@ import { VideoChannel } from '../videos/channel/video-channel.model' import { UserRole } from './user-role' import { NSFWPolicyType } from '../videos/nsfw-policy.type' import { UserNotificationSetting } from './user-notification-setting.model' +import { UserAdminFlag } from './user-flag.model' export interface User { id: number @@ -11,11 +12,15 @@ export interface User { emailVerified: boolean nsfwPolicy: NSFWPolicyType + adminFlags?: UserAdminFlag + autoPlayVideo: boolean webTorrentEnabled: boolean videosHistoryEnabled: boolean role: UserRole + roleLabel: string + videoQuota: number videoQuotaDaily: number createdAt: Date diff --git a/shared/utils/users/users.ts b/shared/utils/users/users.ts index e3c14a4a3..2bd37b8be 100644 --- a/shared/utils/users/users.ts +++ b/shared/utils/users/users.ts @@ -4,22 +4,37 @@ import { makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '.. import { UserRole } from '../../index' import { NSFWPolicyType } from '../../models/videos/nsfw-policy.type' import { ServerInfo, userLogin } from '..' +import { UserAdminFlag } from '../../models/users/user-flag.model' -function createUser ( - url: string, +type CreateUserArgs = { url: string, accessToken: string, username: string, password: string, - videoQuota = 1000000, - videoQuotaDaily = -1, - role: UserRole = UserRole.USER, - specialStatus = 200 -) { + videoQuota?: number, + videoQuotaDaily?: number, + role?: UserRole, + adminFlags?: UserAdminFlag, + specialStatus?: number +} +function createUser (parameters: CreateUserArgs) { + const { + url, + accessToken, + username, + adminFlags, + password = 'password', + videoQuota = 1000000, + videoQuotaDaily = -1, + role = UserRole.USER, + specialStatus = 200 + } = parameters + const path = '/api/v1/users' const body = { username, password, role, + adminFlags, email: username + '@example.com', videoQuota, videoQuotaDaily @@ -35,7 +50,7 @@ function createUser ( async function generateUserAccessToken (server: ServerInfo, username: string) { const password = 'my super password' - await createUser(server.url, server.accessToken, username, password) + await createUser({ url: server.url, accessToken: server.accessToken, username: username, password: password }) return userLogin(server, { username, password }) } @@ -222,6 +237,7 @@ function updateUser (options: { videoQuota?: number, videoQuotaDaily?: number, password?: string, + adminFlags?: UserAdminFlag, role?: UserRole }) { const path = '/api/v1/users/' + options.userId @@ -233,6 +249,7 @@ function updateUser (options: { if (options.videoQuota !== undefined && options.videoQuota !== null) toSend['videoQuota'] = options.videoQuota if (options.videoQuotaDaily !== undefined && options.videoQuotaDaily !== null) toSend['videoQuotaDaily'] = options.videoQuotaDaily if (options.role !== undefined && options.role !== null) toSend['role'] = options.role + if (options.adminFlags !== undefined && options.adminFlags !== null) toSend['adminFlags'] = options.adminFlags return makePutBodyRequest({ url: options.url, diff --git a/shared/utils/videos/video-blacklist.ts b/shared/utils/videos/video-blacklist.ts index 82d5b7e31..e25a292fc 100644 --- a/shared/utils/videos/video-blacklist.ts +++ b/shared/utils/videos/video-blacklist.ts @@ -1,4 +1,6 @@ import * as request from 'supertest' +import { VideoBlacklistType } from '../../models/videos' +import { makeGetRequest } from '..' function addVideoToBlacklist ( url: string, @@ -39,40 +41,25 @@ function removeVideoFromBlacklist (url: string, token: string, videoId: number | .expect(specialStatus) } -function getBlacklistedVideosList (url: string, token: string, specialStatus = 200) { +function getBlacklistedVideosList (parameters: { + url: string, + token: string, + sort?: string, + type?: VideoBlacklistType, + specialStatus?: number +}) { + let { url, token, sort, type, specialStatus = 200 } = parameters const path = '/api/v1/videos/blacklist/' - return request(url) - .get(path) - .query({ sort: 'createdAt' }) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + token) - .expect(specialStatus) - .expect('Content-Type', /json/) -} - -function getBlacklistedVideosListWithTypeFilter (url: string, token: string, type: number, specialStatus = 200) { - const path = '/api/v1/videos/blacklist/' + const query = { sort, type } - return request(url) - .get(path) - .query({ sort: 'createdAt', type }) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + token) - .expect(specialStatus) - .expect('Content-Type', /json/) -} - -function getSortedBlacklistedVideosList (url: string, token: string, sort: string, specialStatus = 200) { - const path = '/api/v1/videos/blacklist/' - - return request(url) - .get(path) - .query({ sort: sort }) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + token) - .expect(specialStatus) - .expect('Content-Type', /json/) + return makeGetRequest({ + url, + path, + query, + token, + statusCodeExpected: specialStatus + }) } // --------------------------------------------------------------------------- @@ -81,7 +68,5 @@ export { addVideoToBlacklist, removeVideoFromBlacklist, getBlacklistedVideosList, - getBlacklistedVideosListWithTypeFilter, - getSortedBlacklistedVideosList, updateVideoBlacklist } -- cgit v1.2.3