@@ -59,7 +59,7 @@ export class RoleController {
5959 summary : 'Search roles with given parameters' ,
6060 description : describeAccess ( {
6161 summary :
62- 'Searches existing roles using optional filter parameters (e.g. subjectId).' ,
62+ 'Searches existing roles using optional filter parameters (e.g., subjectId, roleName ).' ,
6363 jwt : 'Requires a JWT with the `administrator` role.' ,
6464 m2m : [ 'read:roles' , 'all:roles' ] ,
6565 notes :
@@ -85,6 +85,7 @@ export class RoleController {
8585 const isAdmin = Boolean ( user ?. isAdmin ) ;
8686 const isMachine = Boolean ( user ?. isMachine ) ;
8787 let subjectId : number | undefined ;
88+ let roleName : string | undefined ;
8889
8990 this . logger . debug ( `findAll received query: ${ JSON . stringify ( query ) } ` ) ;
9091
@@ -95,18 +96,21 @@ export class RoleController {
9596 if ( query . filter ) {
9697 this . logger . debug ( `findAll received filter: ${ query . filter } ` ) ;
9798 const filterParts = query . filter . split ( '=' ) ;
98- if (
99- filterParts . length === 2 &&
100- filterParts [ 0 ] . toLowerCase ( ) === 'subjectid'
101- ) {
102- const parsedId = parseInt ( filterParts [ 1 ] , 10 ) ;
103- // subject id should be > 0 as in v3 java code
104- if ( ! isNaN ( parsedId ) && parsedId > 0 ) {
105- subjectId = parsedId ;
106- } else {
107- throw new BadRequestException (
108- 'Invalid format for subjectId in filter parameter.' ,
109- ) ;
99+ if ( filterParts . length === 2 ) {
100+ const key = filterParts [ 0 ] . toLowerCase ( ) ;
101+ const value = filterParts [ 1 ] ;
102+ if ( key === 'subjectid' ) {
103+ const parsedId = parseInt ( value , 10 ) ;
104+ // subject id should be > 0 as in v3 java code
105+ if ( ! isNaN ( parsedId ) && parsedId > 0 ) {
106+ subjectId = parsedId ;
107+ } else {
108+ throw new BadRequestException (
109+ 'Invalid format for subjectId in filter parameter.' ,
110+ ) ;
111+ }
112+ } else if ( key === 'rolename' ) {
113+ roleName = value ;
110114 }
111115 }
112116 }
@@ -121,7 +125,10 @@ export class RoleController {
121125 ) ;
122126 }
123127
124- const result = await this . roleService . findAll ( subjectId ) ;
128+ const result =
129+ roleName !== undefined
130+ ? await this . roleService . findAll ( subjectId , roleName )
131+ : await this . roleService . findAll ( subjectId ) ;
125132 if ( query . selector && query . selector . trim ( ) . length > 0 ) {
126133 const keys = query . selector . split ( ',' ) ;
127134 return CommonUtils . pickArray ( result , keys ) as RoleResponseDto [ ] ;
0 commit comments