10
10
using Foundatio . Repositories ;
11
11
using Microsoft . AspNetCore . Authorization ;
12
12
using Microsoft . AspNetCore . Mvc ;
13
+ using Microsoft . AspNetCore . Mvc . ModelBinding ;
13
14
14
15
namespace Exceptionless . App . Controllers . API ;
15
16
@@ -279,26 +280,41 @@ protected override async Task<PermissionResult> CanAddAsync(Token value)
279
280
}
280
281
281
282
if ( ! AuthorizationRoles . AllScopes . Contains ( lowerCaseScoped ) )
282
- return PermissionResult . DenyWithMessage ( "Invalid token scope requested." ) ;
283
+ {
284
+ ModelState . AddModelError < Token > ( m => m . Scopes , "Invalid token scope requested." ) ;
285
+ return PermissionResult . DenyWithValidationProblem ( ) ;
286
+ }
283
287
}
284
288
285
289
if ( value . Scopes . Count == 0 )
286
290
value . Scopes . Add ( AuthorizationRoles . Client ) ;
287
291
288
292
if ( value . Scopes . Contains ( AuthorizationRoles . Client ) && ! hasUserRole )
289
- return PermissionResult . Deny ;
293
+ {
294
+ ModelState . AddModelError < Token > ( m => m . Scopes , "Invalid token scope requested." ) ;
295
+ return PermissionResult . DenyWithValidationProblem ( ) ;
296
+ }
290
297
291
298
if ( value . Scopes . Contains ( AuthorizationRoles . User ) && ! hasUserRole )
292
- return PermissionResult . Deny ;
299
+ {
300
+ ModelState . AddModelError < Token > ( m => m . Scopes , "Invalid token scope requested." ) ;
301
+ return PermissionResult . DenyWithValidationProblem ( ) ;
302
+ }
293
303
294
304
if ( value . Scopes . Contains ( AuthorizationRoles . GlobalAdmin ) && ! hasGlobalAdminRole )
295
- return PermissionResult . Deny ;
305
+ {
306
+ ModelState . AddModelError < Token > ( m => m . Scopes , "Invalid token scope requested." ) ;
307
+ return PermissionResult . DenyWithValidationProblem ( ) ;
308
+ }
296
309
297
310
if ( ! String . IsNullOrEmpty ( value . ProjectId ) )
298
311
{
299
312
var project = await GetProjectAsync ( value . ProjectId ) ;
300
313
if ( project is null )
301
- return PermissionResult . Deny ;
314
+ {
315
+ ModelState . AddModelError < Token > ( m => m . ProjectId , "Please specify a valid project id." ) ;
316
+ return PermissionResult . DenyWithValidationProblem ( ) ;
317
+ }
302
318
303
319
value . OrganizationId = project . OrganizationId ;
304
320
value . DefaultProjectId = null ;
@@ -308,7 +324,10 @@ protected override async Task<PermissionResult> CanAddAsync(Token value)
308
324
{
309
325
var project = await GetProjectAsync ( value . DefaultProjectId ) ;
310
326
if ( project is null )
311
- return PermissionResult . Deny ;
327
+ {
328
+ ModelState . AddModelError < Token > ( m => m . DefaultProjectId , "Please specify a valid default project id." ) ;
329
+ return PermissionResult . DenyWithValidationProblem ( ) ;
330
+ }
312
331
}
313
332
314
333
return await base . CanAddAsync ( value ) ;
0 commit comments