]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
add check-params test for user list
authorRigel Kent <sendmemail@rigelk.eu>
Fri, 3 Jul 2020 08:28:19 +0000 (10:28 +0200)
committerRigel Kent <sendmemail@rigelk.eu>
Fri, 3 Jul 2020 08:29:03 +0000 (10:29 +0200)
fixes #2918

client/src/app/+admin/admin.component.ts
client/src/app/+admin/follows/following-list/following-list.component.html
client/src/app/+admin/users/user-list/user-list.component.html
client/src/app/shared/shared-icons/global-icon.component.ts
client/src/app/shared/shared-main/buttons/edit-button.component.html
client/src/app/shared/shared-video-miniature/abstract-video-list.html
client/src/assets/images/misc/account-arrow-left.svg [new file with mode: 0644]
client/src/assets/images/misc/account-arrow-right.svg [new file with mode: 0644]
server/controllers/api/users/index.ts
server/middlewares/validators/users.ts
server/tests/api/check-params/users.ts

index 51c64694ff4bb2c4a24eea46178dce5559f6c3d1..6f340884f8d9e0e39360dcb7126543a964a1cbff 100644 (file)
@@ -25,12 +25,12 @@ export class AdminComponent implements OnInit {
         {
           label: this.i18n('Instances you follow'),
           routerLink: '/admin/follows/following-list',
-          iconName: 'sign-out'
+          iconName: 'following'
         },
         {
           label: this.i18n('Instances following you'),
           routerLink: '/admin/follows/followers-list',
-          iconName: 'sign-in'
+          iconName: 'follower'
         },
         {
           label: this.i18n('Video redundancies'),
index a8fbf65d4a325e67c8a9cb3f3958785740ebf0da..500ab13fd9c9ee248c8ad533ee2568ca02948360 100644 (file)
@@ -15,7 +15,7 @@
         <span class="sr-only" i18n>Clear filters</span>
       </div>
       <a class="ml-2 follow-button" (click)="addDomainsToFollow()" (key.enter)="addDomainsToFollow()">
-        <my-global-icon iconName="add" aria-hidden="true"></my-global-icon>
+        <my-global-icon iconName="following" aria-hidden="true"></my-global-icon>
         <ng-container i18n>Follow domain</ng-container>
       </a>
     </div>
index 9580a3c8a1ea4bb3862963aa6ba78f74428757a6..b022331db601e966b793d3c0940affd16902fbbd 100644 (file)
@@ -38,7 +38,7 @@
       </div>
 
       <a class="ml-2 add-button" routerLink="/admin/users/create">
-        <my-global-icon iconName="add" aria-hidden="true"></my-global-icon>
+        <my-global-icon iconName="user-add" aria-hidden="true"></my-global-icon>
         <ng-container i18n>Create user</ng-container>
       </a>
     </div>
index 7f7315f066061151bb9019a6b521969bbbfef6db..6527c27a6c5631cb040d4d8f2ddb6e5e6a213530 100644 (file)
@@ -12,6 +12,8 @@ const icons = {
   'history': require('!!raw-loader?!../../../assets/images/misc/history.svg').default, // material ui
   'subscriptions': require('!!raw-loader?!../../../assets/images/misc/subscriptions.svg').default, // material ui
   'playlist-add': require('!!raw-loader?!../../../assets/images/misc/playlist-add.svg').default, // material ui
+  'follower': require('!!raw-loader?!../../../assets/images/misc/account-arrow-left.svg').default, // material ui
+  'following': require('!!raw-loader?!../../../assets/images/misc/account-arrow-right.svg').default, // material ui
 
   // feather icons
   'flag': require('!!raw-loader?!../../../assets/images/feather/flag.svg').default,
index b852bb38a36f29cdca4f7d57c5a4a3144658f00a..8a97c6c1e98313479e1368865e0d6b5056818f3a 100644 (file)
@@ -1,6 +1,6 @@
-<a class="action-button action-button-edit grey-button" [routerLink]="routerLink" i18n-title title="Edit">
+<a class="action-button action-button-edit grey-button" [routerLink]="routerLink" i18n-title title="Update">
   <my-global-icon iconName="edit" aria-hidden="true"></my-global-icon>
 
   <span class="button-label" *ngIf="label">{{ label }}</span>
-  <span i18n class="button-label" *ngIf="!label">Edit</span>
+  <span i18n class="button-label" *ngIf="!label">Update</span>
 </a>
index 6df589c38186a62faa5d06d58553de26d77837c7..08962dff813b8e146a6e5e36a64913649d59269f 100644 (file)
@@ -14,7 +14,7 @@
     </div>
 
     <div class="moderation-block" *ngIf="displayModerationBlock">
-      <div class="c-hand" ngbDropdown container="body" placement="bottom-right auto">
+      <div class="c-hand" ngbDropdown placement="bottom-right auto">
         <my-global-icon iconName="cog" ngbDropdownToggle></my-global-icon>
 
         <div role="menu" class="dropdown-menu" ngbDropdownMenu>
diff --git a/client/src/assets/images/misc/account-arrow-left.svg b/client/src/assets/images/misc/account-arrow-left.svg
new file mode 100644 (file)
index 0000000..154bce0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M18 21l-3-3l3-3v2h4v2h-4v2M10 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c1.15 0 2.25.12 3.24.34A5.964 5.964 0 0 0 12 18c0 .7.12 1.37.34 2H2v-2c0-2.21 3.58-4 8-4z" fill="currentColor" class="material"/></svg>
diff --git a/client/src/assets/images/misc/account-arrow-right.svg b/client/src/assets/images/misc/account-arrow-right.svg
new file mode 100644 (file)
index 0000000..50de968
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M19 21v-2h-4v-2h4v-2l3 3l-3 3M10 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c1.15 0 2.25.12 3.24.34A5.964 5.964 0 0 0 12 18c0 .7.12 1.37.34 2H2v-2c0-2.21 3.58-4 8-4z" fill="currentColor" class="material"/></svg>
index 839431afb26f5869b633ea454bdfd895fb52270f..fcd828ae346d5df6c5a3b7b19c3c78cf25cc84e6 100644 (file)
@@ -86,7 +86,7 @@ usersRouter.get('/',
   usersSortValidator,
   setDefaultSort,
   setDefaultPagination,
-  asyncMiddleware(usersListValidator),
+  usersListValidator,
   asyncMiddleware(listUsers)
 )
 
index 6860a3bedd258034147000307b0b084d40f189e6..423da9bc093f8240b3809afdb87b63f7849d54fb 100644 (file)
@@ -41,10 +41,9 @@ import { Hooks } from '@server/lib/plugins/hooks'
 const usersListValidator = [
   query('blocked')
     .optional()
-    .customSanitizer(toBooleanOrNull)
     .isBoolean().withMessage('Should be a valid boolean banned state'),
 
-  async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+  (req: express.Request, res: express.Response, next: express.NextFunction) => {
     logger.debug('Checking usersList parameters', { parameters: req.query })
 
     if (areValidationErrors(req, res)) return
index 74f0a2d3f1b3bd4939b3a4751b52945926f2ad70..2fea2cbd5176442b4c219a29fc6555d388ea417d 100644 (file)
@@ -155,6 +155,18 @@ describe('Test users API validators', function () {
       await checkBadSortPagination(server.url, path, server.accessToken)
     })
 
+    it('Should fail with a bad blocked/banned user filter', async function () {
+      await makeGetRequest({
+        url: server.url,
+        path,
+        query: {
+          blocked: 42
+        },
+        token: server.accessToken,
+        statusCodeExpected: 400
+      })
+    })
+
     it('Should fail with a non authenticated user', async function () {
       await makeGetRequest({
         url: server.url,