From d7a34a95c4f52142e5d7d49a176cb1d003868f28 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sun, 28 Oct 2018 18:34:00 +0100 Subject: [PATCH] Permission fixes for contents or schemas. --- src/Squidex.Shared/Permissions.cs | 1 - .../Apps/AppLanguagesController.cs | 2 +- src/Squidex/Pipeline/AppResolver.cs | 17 ++++--- src/Squidex/app-config/webpack.config.js | 7 ++- .../app-config/webpack.test.coverage.js | 2 +- .../components/schema-category.component.html | 46 ++++++++++--------- .../components/schema-category.component.ts | 4 ++ .../shell/pages/app/left-menu.component.html | 4 +- src/Squidex/tslint.json | 2 - 9 files changed, 49 insertions(+), 36 deletions(-) diff --git a/src/Squidex.Shared/Permissions.cs b/src/Squidex.Shared/Permissions.cs index 8e339de9d..391f4991d 100644 --- a/src/Squidex.Shared/Permissions.cs +++ b/src/Squidex.Shared/Permissions.cs @@ -53,7 +53,6 @@ namespace Squidex.Shared public const string AppContributorsRevoke = "squidex.apps.{app}.contributors.revoke"; public const string AppLanguages = "squidex.apps.{app}.languages"; - public const string AppLanguagesRead = "squidex.apps.{app}.languages.read"; public const string AppLanguagesCreate = "squidex.apps.{app}.languages.create"; public const string AppLanguagesUpdate = "squidex.apps.{app}.languages.update"; public const string AppLanguagesDelete = "squidex.apps.{app}.languages.delete"; diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs index b41df7217..abb8cc631 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs @@ -39,7 +39,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [HttpGet] [Route("apps/{app}/languages/")] [ProducesResponseType(typeof(AppLanguageDto[]), 200)] - [ApiPermission(Permissions.AppLanguagesRead)] + [ApiPermission(Permissions.AppCommon)] [ApiCosts(0)] public IActionResult GetLanguages(string app) { diff --git a/src/Squidex/Pipeline/AppResolver.cs b/src/Squidex/Pipeline/AppResolver.cs index ab52a55b6..5c25d01c4 100644 --- a/src/Squidex/Pipeline/AppResolver.cs +++ b/src/Squidex/Pipeline/AppResolver.cs @@ -58,7 +58,7 @@ namespace Squidex.Pipeline FindByOpenIdSubject(app, user) ?? FindByOpenIdClient(app, user); - if (permissions.Count == 0) + if (permissions == null || permissions.Count == 0) { var set = user.Permissions(); @@ -69,11 +69,14 @@ namespace Squidex.Pipeline } } - var identity = user.Identities.First(); - - foreach (var permission in permissions) + if (permissions != null) { - identity.AddClaim(new Claim(SquidexClaimTypes.Permissions, permission.Id)); + var identity = user.Identities.First(); + + foreach (var permission in permissions) + { + identity.AddClaim(new Claim(SquidexClaimTypes.Permissions, permission.Id)); + } } context.HttpContext.Features.Set(new AppFeature(app)); @@ -91,7 +94,7 @@ namespace Squidex.Pipeline return role.Permissions; } - return PermissionSet.Empty; + return null; } private static PermissionSet FindByOpenIdSubject(IAppEntity app, ClaimsPrincipal user) @@ -103,7 +106,7 @@ namespace Squidex.Pipeline return role.Permissions; } - return PermissionSet.Empty; + return null; } } } diff --git a/src/Squidex/app-config/webpack.config.js b/src/Squidex/app-config/webpack.config.js index f796a66f0..ca79d87e2 100644 --- a/src/Squidex/app-config/webpack.config.js +++ b/src/Squidex/app-config/webpack.config.js @@ -48,7 +48,11 @@ module.exports = { test: /\.mjs$/, type: "javascript/auto", include: [/node_modules/], - },{ + }, { + test: /[\/\\]@angular[\/\\]core[\/\\].+\.js$/, // Remove warning from angular6 + parser: { system: true }, + include: [/node_modules/], + }, { test: /\.ts$/, use: [{ loader: 'awesome-typescript-loader', options: { useCache: true, useBabel: true } @@ -140,6 +144,7 @@ module.exports = { }), new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en/), + new webpack.ContextReplacementPlugin(/\@angular(\\|\/)core(\\|\/)fesm5/, helpers.root('app')), // Remove warning from angular6 /** * Shim additional libraries diff --git a/src/Squidex/app-config/webpack.test.coverage.js b/src/Squidex/app-config/webpack.test.coverage.js index f91362c67..f4bca1e9f 100644 --- a/src/Squidex/app-config/webpack.test.coverage.js +++ b/src/Squidex/app-config/webpack.test.coverage.js @@ -24,7 +24,7 @@ module.exports = webpackMerge(testConfig, { test: /\.ts$/, use: [{ loader: 'istanbul-instrumenter-loader' - },{ + }, { loader: 'awesome-typescript-loader' }, { loader: 'angular-router-loader' diff --git a/src/Squidex/app/shared/components/schema-category.component.html b/src/Squidex/app/shared/components/schema-category.component.html index f86bc7c42..e0772f06c 100644 --- a/src/Squidex/app/shared/components/schema-category.component.html +++ b/src/Squidex/app/shared/components/schema-category.component.html @@ -15,26 +15,30 @@ diff --git a/src/Squidex/app/shared/components/schema-category.component.ts b/src/Squidex/app/shared/components/schema-category.component.ts index 0feb35bc5..f362d4a90 100644 --- a/src/Squidex/app/shared/components/schema-category.component.ts +++ b/src/Squidex/app/shared/components/schema-category.component.ts @@ -104,6 +104,10 @@ export class SchemaCategoryComponent implements OnInit, OnChanges { this.schemasState.changeCategory(schema, this.name).pipe(onErrorResumeNext()).subscribe(); } + public schemaPermission(schema: SchemaDto) { + return `?squidex.apps.{app}.schemas.${schema.name}.*;squidex.apps.{app}.contents.${schema.name}.*`; + } + public schemaRoute(schema: SchemaDto) { return schema.isSingleton && this.routeSingletonToContent ? [schema.name, schema.id] : [schema.name]; } diff --git a/src/Squidex/app/shell/pages/app/left-menu.component.html b/src/Squidex/app/shell/pages/app/left-menu.component.html index 3a632f819..9936bd574 100644 --- a/src/Squidex/app/shell/pages/app/left-menu.component.html +++ b/src/Squidex/app/shell/pages/app/left-menu.component.html @@ -1,10 +1,10 @@