diff --git a/.gitignore b/.gitignore index 3631589b0..86c5936ba 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ *.vs *.log +.awCache + .vscode # Build results diff --git a/src/Squidex.Domain.Apps.Core.Model/Apps/RoleExtension.cs b/src/Squidex.Domain.Apps.Core.Model/Apps/RoleExtension.cs index b5a3011ba..c765c6187 100644 --- a/src/Squidex.Domain.Apps.Core.Model/Apps/RoleExtension.cs +++ b/src/Squidex.Domain.Apps.Core.Model/Apps/RoleExtension.cs @@ -38,8 +38,8 @@ namespace Squidex.Domain.Apps.Core.Apps case AppClientPermission.Reader: return new PermissionSet( Permissions.ForApp(Permissions.AppCommon, app), - Permissions.ForSchema(Permissions.AppContentsRead, app, "*"), - Permissions.ForSchema(Permissions.AppContentsGraphQL, app, "*")); + Permissions.ForApp(Permissions.AppContentsRead, app), + Permissions.ForApp(Permissions.AppContentsGraphQL, app)); } return PermissionSet.Empty; @@ -57,9 +57,10 @@ namespace Squidex.Domain.Apps.Core.Apps Permissions.ForApp(Permissions.App, app)); case AppContributorPermission.Developer: return new PermissionSet( + Permissions.ForApp(Permissions.AppApi, app), + Permissions.ForApp(Permissions.AppAssets, app), Permissions.ForApp(Permissions.AppCommon, app), Permissions.ForApp(Permissions.AppContents, app), - Permissions.ForApp(Permissions.AppAssets, app), Permissions.ForApp(Permissions.AppPatterns, app), Permissions.ForApp(Permissions.AppRules, app), Permissions.ForApp(Permissions.AppSchemas, app)); diff --git a/src/Squidex.Shared/Permissions.cs b/src/Squidex.Shared/Permissions.cs index 28bb43a6d..a2dea3c59 100644 --- a/src/Squidex.Shared/Permissions.cs +++ b/src/Squidex.Shared/Permissions.cs @@ -35,9 +35,13 @@ namespace Squidex.Shared public const string AdminUsersLock = "squidex.admin.users.lock"; public const string App = "squidex.apps.{app}"; + public const string AppDelete = "squidex.apps.{app}.delete"; + public const string AppCommon = "squidex.apps.{app}.common"; + public const string AppApi = "squidex.apps.{app}.api"; + public const string AppClients = "squidex.apps.{app}.clients"; public const string AppClientsRead = "squidex.apps.{app}.clients.read"; public const string AppClientsCreate = "squidex.apps.{app}.clients.create"; @@ -103,14 +107,7 @@ namespace Squidex.Shared public const string AppContentsUnpublish = "squidex.apps.{app}.contents.{name}.unpublish"; public const string AppContentsDelete = "squidex.apps.{app}.contents.{name}.delete"; - public static Permission ForApp(string id, string app = "*") - { - Guard.NotNull(id, nameof(id)); - - return new Permission(id.Replace("{app}", app ?? "*")); - } - - public static Permission ForSchema(string id, string app = "*", string schema = "*") + public static Permission ForApp(string id, string app = "*", string schema = "*") { Guard.NotNull(id, nameof(id)); diff --git a/src/Squidex/.vscode/settings.json b/src/Squidex/.vscode/settings.json index db7ccea68..a01abcae5 100644 --- a/src/Squidex/.vscode/settings.json +++ b/src/Squidex/.vscode/settings.json @@ -23,6 +23,7 @@ "**/*.user": true, "**/*.xproj": true, "**/*.gitattributes": true, + ".awcache": true, ".vs:": true, ".vscode:": true } diff --git a/src/Squidex/app-config/webpack.config.js b/src/Squidex/app-config/webpack.config.js index f78e351eb..f796a66f0 100644 --- a/src/Squidex/app-config/webpack.config.js +++ b/src/Squidex/app-config/webpack.config.js @@ -51,7 +51,7 @@ module.exports = { },{ test: /\.ts$/, use: [{ - loader: 'awesome-typescript-loader' + loader: 'awesome-typescript-loader', options: { useCache: true, useBabel: true } }, { loader: 'angular-router-loader' }, { diff --git a/src/Squidex/app/shared/state/comments.state.ts b/src/Squidex/app/shared/state/comments.state.ts index 9d730314d..1e45dab85 100644 --- a/src/Squidex/app/shared/state/comments.state.ts +++ b/src/Squidex/app/shared/state/comments.state.ts @@ -5,7 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { distinctUntilChanged, map, tap } from 'rxjs/operators'; @@ -34,7 +33,6 @@ interface Snapshot { isLoaded?: boolean; } -@Injectable() export class CommentsState extends State { public comments = this.changes.pipe(map(x => x.comments), diff --git a/src/Squidex/package.json b/src/Squidex/package.json index 51343c343..bfd638c35 100644 --- a/src/Squidex/package.json +++ b/src/Squidex/package.json @@ -34,7 +34,7 @@ "moment": "2.22.2", "mousetrap": "1.6.2", "ng2-dnd": "5.0.2", - "ngx-color-picker": "^6.7.0", + "ngx-color-picker": "6.7.0", "oidc-client": "1.5.2", "pikaday": "1.7.0", "progressbar.js": "1.0.1", @@ -43,7 +43,7 @@ "rxjs": "6.3.2", "slugify": "1.3.1", "sortablejs": "1.7.0", - "tslib": "^1.9.3", + "tslib": "1.9.3", "zone.js": "0.8.26" }, "devDependencies": { @@ -60,6 +60,7 @@ "angular-router-loader": "0.8.5", "angular2-template-loader": "0.6.2", "awesome-typescript-loader": "5.2.1", + "babel-core": "^6.26.3", "codelyzer": "4.5.0", "cpx": "1.5.0", "css-loader": "1.0.0", diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/RoleExtensionTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/RoleExtensionTests.cs deleted file mode 100644 index ee5272ea6..000000000 --- a/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/RoleExtensionTests.cs +++ /dev/null @@ -1,46 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschränkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -// using System; -// using Squidex.Domain.Apps.Core.Apps; -// using Xunit; - -namespace Squidex.Domain.Apps.Core.Model.Apps -{ - public class RoleExtensionTests - { - /* - [Fact] - public void Should_convert_from_client_permission_to_app_permission() - { - Assert.Equal(AppPermission.Developer, AppClientPermission.Developer.ToAppPermission()); - Assert.Equal(AppPermission.Editor, AppClientPermission.Editor.ToAppPermission()); - Assert.Equal(AppPermission.Reader, AppClientPermission.Reader.ToAppPermission()); - } - - [Fact] - public void Should_throw_when_converting_from_invalid_client_permission() - { - Assert.Throws(() => ((AppClientPermission)10).ToAppPermission()); - } - - [Fact] - public void Should_convert_from_contributor_permission_to_app_permission() - { - Assert.Equal(AppPermission.Developer, AppContributorPermission.Developer.ToAppPermission()); - Assert.Equal(AppPermission.Editor, AppContributorPermission.Editor.ToAppPermission()); - Assert.Equal(AppPermission.Owner, AppContributorPermission.Owner.ToAppPermission()); - } - - [Fact] - public void Should_throw_when_converting_from_invalid_contributor_permission() - { - Assert.Throws(() => ((AppContributorPermission)10).ToAppPermission()); - } - */ - } -}