@@ -159,31 +159,37 @@ class HDSModel {
159159 * @param {Array<itemKeys> } itemKeys
160160 * @param {Object } [options]
161161 * @param {string } [options.defaultLevel] (default = write) one of 'read', 'write', 'contribute', 'writeOnly'
162+ * @param {boolean } [options.includeDefaultName] (default = true) defaultNames are needed for permission requests but not for access creation
162163 * @param {Array<AuthorizationRequestItem> } [options.preRequest]
163164 * @return {Array<AuthorizationRequestItem> }
164165 */
165166 authorizationForItemKeys ( itemKeys , options = { } ) {
166167 const opts = {
167168 defaultLevel : 'read' ,
168- preRequest : [ ]
169+ preRequest : [ ] ,
170+ includeDefaultName : true
169171 } ;
170172 Object . assign ( opts , options ) ;
171173 const streamsRequested = { } ;
172174 for ( const pre of opts . preRequest ) {
173175 if ( ! pre . streamId ) throw new Error ( `Missing streamId in options.preRequest item: ${ JSON . stringify ( pre ) } ` ) ;
174176 // complete pre with defaultName if missing
175- if ( ! pre . defaultName ) {
177+ if ( opts . includeDefaultName && ! pre . defaultName ) {
176178 // try to get it from streams Data
177179 const stream = this . streamDataGetById ( pre . streamId , false ) ;
178180 if ( stream ) {
179181 pre . defaultName = stream . name ;
180182 } else {
181183 throw new Error ( `No "defaultName" in options.preRequest item: ${ JSON . stringify ( pre ) } and cannot find matching streams in default list` ) ;
182184 }
183- // add default level
184- if ( ! pre . level ) {
185- pre . level = opts . defaultLevel ;
186- }
185+ }
186+ // check there is no defaultName if not required
187+ if ( ! opts . includeDefaultName ) {
188+ if ( pre . defaultName ) throw new Error ( `Do not include defaultName when not included explicitely on ${ JSON . stringify ( pre ) } ` ) ;
189+ }
190+ // add default level
191+ if ( ! pre . level ) {
192+ pre . level = opts . defaultLevel ;
187193 }
188194 streamsRequested [ pre . streamId ] = pre ;
189195 }
@@ -192,8 +198,12 @@ class HDSModel {
192198 const itemDef = this . itemDefForKey ( itemKey ) ;
193199 const streamId = itemDef . data . streamId ;
194200 if ( ! streamsRequested [ streamId ] ) { // new streamId
195- const stream = this . streamDataGetById ( streamId ) ;
196- streamsRequested [ streamId ] = { streamId, defaultName : stream . name , level : opts . defaultLevel } ;
201+ const auth = { streamId, level : opts . defaultLevel } ;
202+ if ( opts . includeDefaultName ) {
203+ const stream = this . streamDataGetById ( streamId ) ;
204+ auth . defaultName = stream . name ;
205+ }
206+ streamsRequested [ streamId ] = auth ;
197207 } else { // existing just adapt level
198208 streamsRequested [ streamId ] . level = mixAuthorizationLevels ( streamsRequested [ streamId ] . level , opts . defaultLevel ) ;
199209 }
0 commit comments