Browse Source

Admin apps.

pull/613/head
Sebastian 5 years ago
parent
commit
5857b6e840
  1. 7
      backend/src/Squidex.Shared/Permissions.cs
  2. 2
      backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
  3. 19
      backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminHost.cs
  4. 2
      backend/src/Squidex/Config/MyIdentityOptions.cs
  5. 5
      backend/src/Squidex/appsettings.json

7
backend/src/Squidex.Shared/Permissions.cs

@ -51,17 +51,16 @@ namespace Squidex.Shared
public const string App = "squidex.apps.{app}"; public const string App = "squidex.apps.{app}";
public const string AppAdmin = "squidex.apps.{app}.*";
public const string AppDelete = "squidex.apps.{app}.delete"; public const string AppDelete = "squidex.apps.{app}.delete";
public const string AppUpdate = "squidex.apps.{app}.update"; public const string AppUpdate = "squidex.apps.{app}.update";
public const string AppUpdateImage = "squidex.apps.{app}.image"; public const string AppUpdateImage = "squidex.apps.{app}.image";
public const string AppHistory = "squidex.apps.{app}.history"; public const string AppHistory = "squidex.apps.{app}.history";
public const string AppPing = "squidex.apps.{app}.ping"; public const string AppPing = "squidex.apps.{app}.ping";
public const string AppSearch = "squidex.apps.{app}.search"; public const string AppSearch = "squidex.apps.{app}.search";
public const string AppTranslate = "squidex.apps.{app}.translate"; public const string AppTranslate = "squidex.apps.{app}.translate";
public const string AppUsage = "squidex.apps.{app}.usage";
public const string AppComments = "squidex.apps.{app}.comments"; public const string AppComments = "squidex.apps.{app}.comments";
public const string AppCommentsRead = "squidex.apps.{app}.comments.read"; public const string AppCommentsRead = "squidex.apps.{app}.comments.read";
@ -145,8 +144,6 @@ namespace Squidex.Shared
public const string AppContentsVersionDelete = "squidex.apps.{app}.contents.{name}.version.delete"; public const string AppContentsVersionDelete = "squidex.apps.{app}.contents.{name}.version.delete";
public const string AppContentsDelete = "squidex.apps.{app}.contents.{name}.delete"; public const string AppContentsDelete = "squidex.apps.{app}.contents.{name}.delete";
public const string AppUsage = "squidex.apps.{app}.usage";
static Permissions() static Permissions()
{ {
foreach (var field in typeof(Permissions).GetFields(BindingFlags.Public | BindingFlags.Static)) foreach (var field in typeof(Permissions).GetFields(BindingFlags.Public | BindingFlags.Static))

2
backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs

@ -16,7 +16,7 @@ namespace Squidex.Areas.Api.Controllers.News.Service
{ {
public sealed class FeaturesService public sealed class FeaturesService
{ {
private const int FeatureVersion = 13; private const int FeatureVersion = 15;
private readonly QueryContext flatten = QueryContext.Default.Flatten(); private readonly QueryContext flatten = QueryContext.Default.Flatten();
private readonly IContentsClient<NewsEntity, FeatureDto> client; private readonly IContentsClient<NewsEntity, FeatureDto> client;

19
backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminHost.cs

@ -16,6 +16,7 @@ using Microsoft.IdentityModel.Logging;
using Squidex.Config; using Squidex.Config;
using Squidex.Config.Startup; using Squidex.Config.Startup;
using Squidex.Domain.Users; using Squidex.Domain.Users;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Security; using Squidex.Infrastructure.Security;
using Squidex.Log; using Squidex.Log;
using Squidex.Shared; using Squidex.Shared;
@ -62,7 +63,7 @@ namespace Squidex.Areas.IdentityServer.Config
{ {
if (identityOptions.AdminRecreate) if (identityOptions.AdminRecreate)
{ {
var permissions = user.Permissions().Add(Permissions.Admin); var permissions = CreatePermissions(user.Permissions());
var values = new UserValues var values = new UserValues
{ {
@ -75,11 +76,13 @@ namespace Squidex.Areas.IdentityServer.Config
} }
else else
{ {
var permissions = CreatePermissions(PermissionSet.Empty);
var values = new UserValues var values = new UserValues
{ {
Email = adminEmail, Email = adminEmail,
Password = adminPass, Password = adminPass,
Permissions = new PermissionSet(Permissions.Admin), Permissions = permissions,
DisplayName = adminEmail DisplayName = adminEmail
}; };
@ -97,6 +100,18 @@ namespace Squidex.Areas.IdentityServer.Config
} }
} }
private PermissionSet CreatePermissions(PermissionSet permissions)
{
permissions = permissions.Add(Permissions.Admin);
foreach (var app in identityOptions.AdminApps.OrEmpty())
{
permissions = permissions.Add(Permissions.ForApp(Permissions.AppAdmin, app));
}
return permissions;
}
private static bool IsEmpty(UserManager<IdentityUser> userManager) private static bool IsEmpty(UserManager<IdentityUser> userManager)
{ {
return userManager.SupportsQueryableUsers && !userManager.Users.Any(); return userManager.SupportsQueryableUsers && !userManager.Users.Any();

2
backend/src/Squidex/Config/MyIdentityOptions.cs

@ -19,6 +19,8 @@ namespace Squidex.Config
public string AdminPassword { get; set; } public string AdminPassword { get; set; }
public string[] AdminApps { get; set; }
public string AdminClientId { get; set; } public string AdminClientId { get; set; }
public string AdminClientSecret { get; set; } public string AdminClientSecret { get; set; }

5
backend/src/Squidex/appsettings.json

@ -616,6 +616,11 @@
"adminClientId": "", "adminClientId": "",
"adminClientSecret": "", "adminClientSecret": "",
/*
* The apps which should be visible on the dashboard for the admin.
*/
"adminApps": [],
/* /*
* Settings for Google auth (keep empty to disable). * Settings for Google auth (keep empty to disable).
*/ */

Loading…
Cancel
Save