diff --git a/zero.Web.UI/App/components/pickers/mediaPicker/mediapicker.vue b/zero.Web.UI/App/components/pickers/mediaPicker/mediapicker.vue index c534e682..43932e12 100644 --- a/zero.Web.UI/App/components/pickers/mediaPicker/mediapicker.vue +++ b/zero.Web.UI/App/components/pickers/mediaPicker/mediapicker.vue @@ -61,7 +61,9 @@ // allowed file extensions fileExtensions: [], // maximum file size in MiB - maxFileSize: 10 + maxFileSize: 10, + // whether to operate on the core database + shared: false }; export default { diff --git a/zero.Web.UI/App/editor/fields/media.vue b/zero.Web.UI/App/editor/fields/media.vue index db19b3a6..18e05821 100644 --- a/zero.Web.UI/App/editor/fields/media.vue +++ b/zero.Web.UI/App/editor/fields/media.vue @@ -1,10 +1,12 @@  \ No newline at end of file diff --git a/zero.Web.UI/App/pages/settings/users.vue b/zero.Web.UI/App/pages/settings/users.vue index aea2f3c8..6af7b37c 100644 --- a/zero.Web.UI/App/pages/settings/users.vue +++ b/zero.Web.UI/App/pages/settings/users.vue @@ -3,7 +3,7 @@ - +
@@ -49,7 +49,7 @@ return { name: 'roles-edit', params: { id: item.id }, - query: { scope: 'shared '} + query: { scope: 'shared' } }; } } diff --git a/zero.Web.UI/App/renderers/editors/user.js b/zero.Web.UI/App/renderers/editors/user.js index a44c53c0..0fda75ab 100644 --- a/zero.Web.UI/App/renderers/editors/user.js +++ b/zero.Web.UI/App/renderers/editors/user.js @@ -12,13 +12,13 @@ const permissionsCount = x => (x.claims || []).filter(claim => }).length; const general = editor.tab('general', '@ui.tab_general'); -const permissions = editor.tab('permissions', '@user.tab_permissions', permissionsCount); +const permissions = editor.tab('permissions', '@user.tab_permissions', permissionsCount, x => !x.id); general.field('name', { label: '@ui.name' }).text(80).required(); general.fieldset(set => { set.field('email').text(120).required(); - set.field('passwordHash').passwordHash().required(); + set.field('passwordHash').when(x => x.id).passwordHash().required(); }); general.field('languageId').culturePicker().required(); general.field('avatarId').image(); diff --git a/zero.Web.UI/App/renderers/lists/users.js b/zero.Web.UI/App/renderers/lists/users.js index 1d2b85cf..6d5d12ff 100644 --- a/zero.Web.UI/App/renderers/lists/users.js +++ b/zero.Web.UI/App/renderers/lists/users.js @@ -6,7 +6,14 @@ const list = new List('users'); const prefix = '@user.fields.'; list.templateLabel = x => prefix + x; -list.link = zero.alias.settings.users + '-edit'; +list.link = x => +{ + return { + name: zero.alias.settings.users + '-edit', + params: { id: x.id }, + query: { scope: 'shared' } + }; +}; list.onFetch(filter => UsersApi.getAll(filter)); diff --git a/zero.Web.UI/app/core/editor.ts b/zero.Web.UI/app/core/editor.ts index 71b50f19..277fb71f 100644 --- a/zero.Web.UI/app/core/editor.ts +++ b/zero.Web.UI/app/core/editor.ts @@ -28,7 +28,7 @@ class Editor options = { disabled: false, display: 'tabs', - coreDatabase: true + coreDatabase: false }; diff --git a/zero.Web/Controllers/ApplicationsController.cs b/zero.Web/Controllers/ApplicationsController.cs index 4f41f704..79faa72d 100644 --- a/zero.Web/Controllers/ApplicationsController.cs +++ b/zero.Web/Controllers/ApplicationsController.cs @@ -16,6 +16,7 @@ namespace zero.Web.Controllers public ApplicationsController(IApplicationsApi api) { Api = api; + IsCoreDatabase = true; } diff --git a/zero.Web/Controllers/BackofficeController.cs b/zero.Web/Controllers/BackofficeController.cs index f090c8ba..3b9afb13 100644 --- a/zero.Web/Controllers/BackofficeController.cs +++ b/zero.Web/Controllers/BackofficeController.cs @@ -24,6 +24,8 @@ namespace zero.Web.Controllers IZeroOptions _options; IToken _token; + public bool IsCoreDatabase { get; protected set; } + protected IZeroOptions Options => _options ?? (_options = HttpContext?.RequestServices?.GetService()); protected IToken Token => _token ?? (_token = HttpContext?.RequestServices?.GetService()); @@ -58,6 +60,7 @@ namespace zero.Web.Controllers //model.Meta.CanCreateShared = canBeShared; model.Meta.CanEdit = true; model.Meta.CanDelete = true; + model.Meta.IsShared = IsCoreDatabase; transform?.Invoke(model); @@ -83,6 +86,7 @@ namespace zero.Web.Controllers //data.Meta.CanCreateShared = canBeShared; data.Meta.CanEdit = true; data.Meta.CanDelete = true; + data.Meta.IsShared = IsCoreDatabase; transform?.Invoke(data); diff --git a/zero.Web/Controllers/UsersController.cs b/zero.Web/Controllers/UsersController.cs index 622e9922..a603ee83 100644 --- a/zero.Web/Controllers/UsersController.cs +++ b/zero.Web/Controllers/UsersController.cs @@ -22,6 +22,7 @@ namespace zero.Web.Controllers Api = api; AuthenticationApi = authenticationApi; PermissionsApi = permissionsApi; + IsCoreDatabase = true; } diff --git a/zero.Web/Models/ObsoleteEditModel.cs b/zero.Web/Models/ObsoleteEditModel.cs index 9743823b..eeac4280 100644 --- a/zero.Web/Models/ObsoleteEditModel.cs +++ b/zero.Web/Models/ObsoleteEditModel.cs @@ -50,6 +50,8 @@ namespace zero.Web.Models /// public bool CanBeShared { get; set; } + public bool IsShared { get; set; } + /// /// The change token maps to a database entity which holds ID and collection of the model to edit /// If these values do not match the entity on save it is rejected