* Started work on service
* temp work
* temp commit
* Temp commit
* Added more routing logic
* Fixed tests
* Refactor and prepare for isdraft
* Work on drafts
* Fixed tests
* Move to enlistment to ensure caches is only updated on scope complete
* Clean up and handle null cultures
* Added functionality to the INavigationQueryService to get root keys
* Added migration
* Fixed issue with navigation
* Added migration
* Temp commit, move to cache refreshers.
* Fixed issues
* List urls
* fix build
* Fixed integration tests
* Refactor to create new content finder instead of changing the old
* rollback wrong commited line
* Clean up, and use docuemnt url service for index
* Fixed List endpoin
* Do not use Navigation service in methods intended by management api
* Fixed examine tests
* Make methods virtual
* Use domain from published request
* Use hybrid cache from new content finder
* Eliminate nucache usage
* Fixed issue with delivery api and url generation
* Fixed linux tests
* Added hybrid cache to all integration tests
* Tests
* Remove props and use local vars
* Adding preliminary navigation service and content implementation
* Adding preliminary unit tests
* Change from async methods
* Refactor GetParentKey to TryGetParentKey
* Refactor GetChildrenKeys to TryGetChildrenKeys
* Refactor GetDescendantsKeys to TryGetDescendantsKeys
* Refactor GetAncestorsKeys to TryGetAncestorsKeys
* Refactor GetSiblingsKeys to TryGetSiblingsKeys
* Refactor TryGetChildrenKeys
* Initial integration tests
* Use ContentEditingService instead of ContentService
* Remove INavigationService.Copy implementation and unit tests
* Rename var
* Adding clarification
* Initial ContentNavigationRepository
* Initial NavigationFactory
* Remove filtering from factory
* NavigationRepository and implementation
* InitializationService responsible for seeding the in-memory structure
* Register repository and service
* Adding NavigationDto and NavigationNode
* Adding INavigationService dependency and Enlist updating navigation structure actions
* Documentation
* Adding tests for removing descendants as well
* Changed to ConcurrentDictionary
* Remove keys comments for tests
* Adding documentation
* Forgotten ConcurrentDictionary change
* Isolating the operations on the model
* Splitting the INavigationService to separate the querying from the managing functionality
* Introducing specific navigation services for document, document recycle bin, media and media recycle bin
* Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services
* Adding the implementations of document, document recycle bin, media and media recycle bin navigation services
* Fixing comments
* Initializing all 4 collections
* Adapting the navigation unit tests to the base now
* Adapting integration tests to specific navigation service
* Adding test for rebuilding the structure
* Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests
* Updating the document navigation structure from the ContentService
* Fix typo
* Adding trashed items implementation in base - currently managing 2 structures
* Removing no longer relevant GetNavigationNode and AddNavigationNode
* Fix removing parent when child is removed supporting methods
* Added restoring functionality
* Adding Bin functionality to DocumentNavigationService
* Removing Move signature from IDocumentNavigationService
* Adding RecycleBin query and management services
* Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface
* Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService
* Fixing test name
* Adding more tests for remove
* Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode
* Remove comments
* Removing document and media RecycleBinNavigationService and their interfaces
* Adding media rebuild bin
* Fixing initialization with correct interfaces
* Removing RecycleBinNavigationServices' registration
* Remove IDocumentRecycleBinNavigationService dependency
* Updating in-memory nav structure when content updates happen
* Adding the rest of the integration tests
* Clean up IMediaNavigationService
* Fix comments
* Remove CustomTestSetup in integration tests as the structure is updated when content updates happen
* Adding and fixing comments
* Making RebuildBinAsync abstract as well
* Adding DocumentNavigationServiceTestsBase
* Splitting DocumentNavigationServiceTests into partial test classes
* Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes
* Reuse a method for creating content in tests
* Change type in test base
* Adding navigation structure updates in media service
* Adding MediaNavigationServiceTestsBase
* Adding integration tests for media nav str
* Remove services as we will have more concrete ones
* Add document and media IXNavigationQueryService and IXNavigationManagementService
* Inject ManagementService in ContentService.cs and MediaService.cs
* Change implementation to implement the new services + registration
* Make classes sealed
* Inject correct services in InitializationService
* Using the right services in integration tests
* Adding comments
* Removing bin interfaces from main navigation ones
* Rename Remove to MoveToBin
* V14 QA added block list editor tests (#16862)
* Added tests for blocklistEditor
* Added more tets
* Removed faker
* Added blockTest
* Updates
* Added tests
* Removed dependencies
* Fixes
* Clean up
* Fixed naming
* Cleaned up
* Bumped version
* Added missing semicolons
* Added tags
* Only runs the new tests
* Updates
* Bumped version
* Fixed tests
* Cleaned up
* Updated version
* Fixes, not done
* Fixed tests
* Bumped helpers
* Bumped helpers
* Fixed conflict
* Fixed comment
* Reverted to run smokeTests
* Updated helpers
* improve missingProperties data returned for missing propertie values (#16910)
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* update backoffice submodule
* Rename initialization service to initialization hosted service
* Refactor repository to return a collection
* Add interface for the NavigationDto
* Add constants to bind property names between DTOs
* Move factory and fix input type
* Use constants for column names
* Use factory from base
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Added Element <-> Document type switch validation
* Apply HasElementconfigured to block grid and block list
Fix smalle bug + optimization
* Moved some of the logic into warnings trough notifcationhandlers and eventmessages
* Cleanup
* Update openApi spec (merge changes)
* Add IsElement check between parent and child on creation
* Typos
* Transformed HasElementConfigured into HasElementConfigured
* Typo
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* IsElement Validation refactor
Moved validation logic regarding doctype IsElement switch into its own service as it will be consumed by more things down the line
* commit missing services...
* Naming improvements
* Bugfix
* First batch of integration tests for ElementSwitchValidator
* More integration tests!
* Little reformatting
* Changed the default values of block based configuration to match expected values.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* AB40660 - untangle the preview cookie from the auth cookie
* Clean up
* Allow anonymous to end preview sessions
* Some refinements
* update OpenApi.json
* Fix enter preview test
* correct tests to match new expectations of the preview cookie
* sync preview tests with correct expectations of access level
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Working import/export media/document types
* WIP
* Refactoring of import doctype/media types
- added analyze endpoint to extract relevant data without fully processing the file
- split up import endpoints into POST & PUT
- removed availableAtAction as the new endpoint allows clients to call the POST/PUT endpoints with confidence
- Added a new service that is responsible for turning temp files into Import compatible XML and being able to extracty partial information from it
* Wrap persistance access in scopes
* Typos, formatting, clean-up
* PR feedback
* update openapi spec
* Changed deleteFile flag to _temporaryFileService.EnlistDeleteIfScopeCompletes
* Itty bitty typo
* Moved magic cleanup into its own method so orchestration can decide when.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Added UserData and migrated tours data into it
* Remove tourdata from user
* Removed tour definition/manipulation classes
Fixed a userData error typo
* Removed toursettings
* Update openapi spec
* V13: Align database schemas of migrated and new database (#15934)
* Drop default constraint umbracoCacheInstruction table
* Align umbracoContentVersion table
* Update indexes on external login table
* Align node table
* Make relation type index unique
* Remove user-group default constraint
* Re-order methods
* Make webhook url not nullable
* Cleanup
* Cleanup
* Update OpenApi.json
* Update src/Umbraco.Cms.Api.Management/Controllers/UserData/UserDataControllerBase.cs
* Remove tour settings from schema
* Add cancelation tokens
* Dont inject, but take as parameter
* Remove some from injection
* Update schema
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
* Support containers for blueprints
* Update OpenApi.json
* Fix tree ordering
* Add CancellationToken to new endpoints
* Change to doc blueprint specific things
* Fix policies
* Cleanup
* Use ContentBlueprintEditingService methods instead of underlying ContentService
* Review comments
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Get blueprint by key
* Renaming
* Implementing DeleteBlueprintAsync
* Fixing tests to use the new method
* Making ContentControllerBase abstract
* Cleanup
* Implementing Delete blueprint endpoint
* Revert obsoletion in ContentService.cs
* More reverting
* Remove usings
* Introducing IContentBlueprintEditingService
* Refactor Get and Delete blueprint endpoints to use the new IContentBlueprintEditingService
* Fix base inheritance case in SchemaIdSelector
* Creating RequestModelBase for UpdateDocument to be reused in both document and blueprint models
* Creating DocumentResponseModelBase to be reused in both document and blueprint models
* Renamed blueprint response model for item endpoint to be aligned with the rest of the item models
* More renaming changes of the DocumentBlueprintItemResponseModel
* Refactor ByKeyDocumentBlueprintController to make use of the new blueprint models
* New blueprint models and mapping
* Adding UpdateAsync to ContentBlueprintEditingService
* Adding IDocumentBlueprintEditingPresentationFactory.cs
* Adding UpdateDocumentBlueprintController.cs
* Adding methods required from the base
* Fixing bug in document type mapping - mapping incorrect key
* Cleanup
* Fix item endpoint
* Adding MapCreateModel
* Adding create model
* Creating request model base + related classes
* Another request model
* Blueprint editing service
* Adding create controllers
* Adding DuplicateName operation status for blueprints and handling it
* Updating OpenApi.json
* Fix comment
* Fix mapping
* Adding comments
* Passing in id for create blueprint from document model
* Mapping default state to Draft - no need to calculate it, it will always be that for blueprints
* Cleanup
* Update OpenApi.json
* Review comments
* Fix policies
* More policy updates
* Fix FIXMEs
* Bring AuthorizationPolicies.DenyLocalLoginIfConfigured authz policy to an action level as it doesn't apply to all
* Remove unnecessary policy
* Remove AuthorizationPolicies.DenyLocalLoginIfConfigured from base and apply to specific controllers
* Fix comment
* AllowAnonymous as it doesn't get it from the base anymore
* Reorder
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Refactored the Authorizers to be reuseable from core by now knowing about principal but only the IUser. Also moved them to core
* Fix multiple enumeration
* Fix more multiple enumerations
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Removes lots of files used by the old backoffice and that is not needed for the management api
* A little clean-up
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Move magical route to management api
* Move auth around
* Remove "New" cookies, as they are no longer needed
* Move all installer related
* Remove BackOfficeServerVariables.cs and trees
* Move webhooks to management api
* Remove remainting controllers
* Remove last services
* Move preview to management api
* Remove mroe extensions
* Remove tours
* Remove old Auth handlers
* Remove server variables entirely
* Remove old backoffice controller
* Remove controllers namespace entirely
* Move rest of preview
* move last services
* Move language file extension
* Remove old backoffice entirely (Backoffice and Web.UI projects)
* Clean up unused security classes
* Fix up installer route
* Remove obsolete tests
* Fix up DI in integration test
* Add missing property mapping
* Move core mapping into core
* Add composers to integration test
* remove identity
* Fix up DI
* Outcomment failing test :)
* Fix up remaining test
* Update mapper
* Remove the actual project files
* Remove backoffice cs proj
* Remove old backoffice from yml
* Run belissima before login
* Remove caching
* Refactor file paths
* Remove belle from static assets
* Dont refer to old project in templates
* update gitignore
* Add missing files
* Remove install view as its no longer used
* Fix up failing test
* Remove outcommented code
* Update submodule to latest
* fix build
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Added Endpoint to get Document restore information
* Add media version of original paent recycle bin
update document permission
regisered interfaces
* Added restore endpoints
* PR feedback and other cleanup
* Update orignal root parent logic & shrank return model
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Introduced IDataTypeConfigurationCache
* Applied IDataTypeConfigurationCache to Property Editors and display mapping
* Invalidate new cache trough DataTypeConfigurationCacheRefresher
* Improve IDatatype service to use cached int path when fetching by guid (using idkeymap)
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Members and member types in the Management API
* Add validation endpoints for members
* Include validation result in service response + add unit tests
* Regenerate OpenApi.json
* Regenerate OpenApi.json after merge
* Don't throw an exception when trying to set valid variation levels for member types
* Added missing ProducesResponseType
* Remove TODO, as that works
* Allow creation of member with explicit key
* Do not feature "parent" for member creation + add missing response type
* Do not feature a "Folder" in create member type (folders are not supported)
* Added missing build methods
* Fixed issue with mapping
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Property level validation for content - initial implementation
* Always succeed create/update regardless of property level validation errors
* Move old complex editor validation classes to Web.BackOffice so they will be deleted
* Include operation status and property validation errors in ProblemDetails
* Refactor property validation to its own service(s)
* Make the problem details builder a little more generic towards extensions
* Validation for item and branch publish
* Moved malplaced test
* Get rid of a TODO
* Integration tests for content validation service
* Simplify validation service
* Add missing response types to create and update for document and media
* Remove test that no longer applies
* Use "errors" for model validation errors (property validation errors)
* Split create/update and validation into their own endpoints
* Fix forward merge
* Correct wrong assumption for missing properties
* Remove localization from validation error messages - decreases dependencies, adds a lot of obsolete constructors
* Reuse existing validation service + support custom error messages
* Fix merge errors
* Review comments
* First take at new models for improved mapping between client and server
* Add variants to Media
* Re-introduced lost names
* Start breaking apart "Id" reference properties in request models as well
* Refactor to fix OpenAPI spec
* Discard TODO (not relevant)
* Split recycle bin response models
* Delete unused marker interface
* Use reference properties for content and media type handling
* Rework document and media types to be explicit in relations (do not expose "content type", it is an implementation detail)
* Mapping for document and media type copy + move
* Ensure correct response model for Media
* Regenerate OpenAPI JSON after forward merge
* Fix forward merge issues
* Fix forward merge + regenerate OpenApi.json
* Added unit tests for content state helper
* Move "allowed document types" endpoint to document type silo, refactored services and added "allowed media types"
* Regenerate OpenApi.json after forward merge
* Do not include content state for media items
* Review fix
* Added 2FA management endpoints
* Ensure not found do not lead to forbidden results
* Do not inherit the requirement to have access to users, from the current user base class
* Updated OpenApi.json
* Handle 2FA in login scenario (only backend)
* Added the endpoint to use for client to post 2FA code
* Fixed tests and allow injecting the authentication type settings
* fix test build
* Fallback to use Constants.Security.BackOfficeAuthenticationType
* remove unused variable
* Review fixes
* Build fix
* Update src/Umbraco.Cms.Api.Management/Controllers/User/Current/DisableTwoFactorProviderCurrentUserController.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Handle case where 2fa provider is already setup
---------
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Implemented culture based authorization for content
* Implemented culture auth for create/update of documents
* Applied culture authorization to dictionary create/update
* Added an integration test to test an assumption about the ContentTypeEditingService.CreateAsync method
* Fix processing when result is already false;
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Refactor method to async + clarify and consilidate comments regarding dictionary locks
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* First stab at a massive remake of file system based endpoints
* Do not prefix system paths with directory separator char
* Ensure correct and consistent response types
* Fix partial view snippets endpoints
* Clean up IO (path) operations
* Update OpenAPI JSON to match new endpoints
* Return 201 when renaming file system resources
* Add "IsFolder" to file system item endpoints
* Replace "parentPath" with a "parent" object for file system creation endpoints
* Update OpenAPI JSON
* Rewrite snippets
* Regenerate OpenAPI JSON after forward merge
* Remove stylesheet overview endpoint
* Regenerate OpenAPI JSON after forward merge
* add server-file-system module to importmap
* Expose generated resource identifier in 201 responses
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Making ProblemDetails details more generic
* Adding authorizer that can be replaces for external authz in handlers. Adding handler and requirement for UserBelongsToUserGroupInRequest policy
* Adding method to get the GUID from claims
* Adding service methods to check user group authz
* Porting MustSatisfyRequirementAuthorizationHandler
* Adding controllers authz
* Fix return status code + produced response type
* Moving to folder
* Adding DenyLocalLogin policy scaffold
* Implement a temp DenyLocalLoginHandler
* Introducing a new Fobidden result
* Fix comment
* Introducing a helper class for authorizers
* Changed nullability for GetCurrentUser
* Changes from Attempt to Status + FIXME comments
* Create a UserGroupAuthorizationStatus to be used in the future
* Introduces a new authz status for checking media acess
* Introducing a new permission service for media
* Adding fixme
* Adding more policy configurations
* Adding Media policy requirement and handler
* Adding media authorizer
* Fix order of params
* Adding duplicate code comment
* Adding authz to media controllers
* Migrating more logic from MediaPermissions.cs
* Adding more MediaAuthorizationStatus-es
* Handling of new authorization status
* Fix comment
* Adding NotFound case
* Adding NewDenyLocalLoginIfConfigured policy && commenting [AllowAnonymous] where the policy is applied since it is already handled
* Changed Forbid() to Forbidden() to get the correct status code
* Remove policy that is applied on the base controller already
* Implement and apply NewUmbracoFeatureEnabled policy
* Renaming classes to add Permission in the name
* Register permission services
* Add FIXME
* Introduce new IUserGroupPermissionService and refactor accordingly
* Add single overload with default implementation
* Adding user permission policy and related
* Applying admin policy
* Register all new policies
* Better wording
* Add default implementation for a single overload
* Adding remarks to IContentPermissionService.cs
* Supporting null as key in ContentPermissionService
* Fix namespace
* Reverting back to not supporting null as content key, but having dedicated implementation
* Adding content authorizer with null values to represent root item
* Removing null key support and adding dedicated implementation
* Removing remarks
* Adding content resource with null support
* Removing null support
* Adding requirement and status
* Adding content authorizer + handlers
* Applying policies to content controllers
* Update comment
* Handling of Authorization Statuses
* More authz in controllers
* Fix comments
* New branch handler
* Obsolete old implementation
* Adding dedicated policies to root and bin
* Adding a branch specific namespace
* Bin specific requirement and namespace
* Root specific requirement and namespace
* Changing to new root policy
* Refactoring
* Save policies
* Fix null check/reference
* Add TODO comment
* Create media root- and bin-specific policies, handlers, etc.
* Apply correct policy in create and update media controllers
* Apply root policy to move and sort controllers
* Fix wording
* Adding UserGroupAuthorizationStatusResult
* Remove all AuthorizationStatusResult as we cannot get the specific AuthorizationStatus
* Fixing Umbraco feature policy
* Fix allow anonymous endpoints - the value returned from DenyLocalLoginHandler wasn't enough, we need to succeed DenyAnonymousAuthorizationRequirement as it is required for some of the endpoints that had the attribute
* Apply DenyLocalLoginIfConfigured policy to corresponding re-implementation of PostSetInvitedUserPassword
* Fix comment
* Renaming performingUser to user and fixing comments
* Rename helper method
* Fix references
* Re-add merge conflict deletion
* Adding Backoffice requirement and relevant
* Registering
* Added a simple policy test
* Fixed small test things and clean up
* Temp solution
* Added one more test and fix another static issue
* Fix another merge conflict
* Remove BackOfficePermissionRequirement and handler as they might not be necessary
* Comment out again [AllowAnonymous]
* Remove AuthorizationPolicies.BackOfficeAccessWithoutApproval policy as it might not be necessary
* Fix temp implementation
* Fix reference to correct handler
* Apply authz policy to new publish/unpublish controllers
* Fix comments
* Removing duplicate ProducesResponseTypes
* Added swagger documentation about the 401 and 403
* Added Resources to Media, User and UserGroup
* Handle root, recycle bin and branch in the same handler
* Handle both parent and target when moving
* Check Ids for all sort requests
* Xml docs
* Clean up
* Clean up
* Fix build
* Cleanup
* Remove TODO
* Added missing overload
* Use yield
* Adding some keys to check
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* make CoreScopeProvider available for derived classes
* Create publish controller
* Add publish functionality
* Remove unneeded using
* Implement publish for multiple cultures
* support multiple cultures in controler
* Dont validate properties
* Refactor to use PublishingOperationStatus
* refactor to use proper publish async methods
* Refactor publish logic into own service
* Commit some demo code
* Add notes about what errors can happen when publishing
* Rework ContentPublishingService and introduce explicit Publish and PublishBranch methods in ContentService
* Fix merge
* Allow the publishing strategy to do its job
* Improved check for unsaved changes
* Make the old content controller work (as best possible)
* Remove SaveAndPublish (SaveAndPublishBranch) from all tests
* Proper guards for invalid cultures when publishing
* Fix edge cases for property validation and content unpublishing + add unpublishing to ContentPublishingService
* Clear out a few TODOs - we'll accept the behavior for now
* Unpublish controller
* Fix merge
* Fix branch publish notifications
* Added extra test for publishing unpublished cultures and added FIXME comments for when we fix the state of published cultures in content
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Adding a replacement to IUserGroupAuthorizationService
* Replacement for the implementation as well
* Adding AuthorizationStatus & mapping it to the corresponding OperationStatus
* Fix references
* Fix another reference
* Fix statuses
* Fix status result messages
* Fix wording
* Moving check for user part of user group earlier
* Review suggestion
* Fix section name
* Implement persistence
* Start implementing repository
* Implement repository
* Implement request service
* Dont run WebhookFiring if not in runtime mode run
* Refactor repository and service to have full CRUD
* add tests for Request service
* Implement WebhookRequest lock
* Register hosted service
* Add try catch when firing HttpRequest
* Add migration
* Refactor to use renamed IWebhookService
* Refactor tests too
* Add setting to configure webhook firing period
* Update docs
* Review fixes
* Add column renaming migration
* Remove unused service
* run request in parralel
* Refactor to fire parallel in background
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Temp commit.. Initial work on XPath alternative for dymamically finding start nodes
* First commit that goes all the way from ui to db for NearestAncestorOrSelf
* Added more filters + return null from controller instead of not found
* Bugfix
* rewrite query to make sqlserver happy?
* Added more tests
* clean up initial step
* Added tests and refactor
* Update endpoint to take model instead of json
* pick origin
* Use model for config instead of string
* append add filter button
* fix
* default filter
* rename json fields
* correct field names
* minor corrections
* Renaming..
* Rename endpoint
* initial work for appending query steps
* query steps ui
* more localization
* query step UI
* Use doc type keys instead of alias
* only for Documents
* change to send keys to anyOfDocTypeKeys
* Fix potential bug
* Fix when level is impossible to get
* correct prop to dynamicRoot
* noValidStartNode dialog
* custom query step
* Renaming
* Rollback unintended file change
* Fixed issue if no doc type is chosen
* Remove unintended file changes
* More unintended changes
* Renaming
* Optimizations
- IDE Recommendation for better source
- Renaming for better clarity
- Improving spacing/formatting
- Typo corrections
- Remove warnings concerning IEnumerable
* Fix failed attempt bug
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Create webhook models
* Define interfaces for service and repository
* Create Webhook dto and corresponding factory
* implement WebhookRepository.cs
* Remove entity name from models, as that should be resolved in mapping instead
* Add new table to schema creator
* Register repo for DI
* Remove more mentions of entityname
* Refactor repository to guids
* Implement WebhookService
* Use scopes in service
* Start creating tests for service
* Refactor delete to use Id and not entire entity
* Rework Webhooks to be able to have multiple entity keys
* Implement GetAll functionality
* Implement webhook controller
* Imeplement get all events action
* Add equalityComparer deletegate to Webhook
* Add datacontract attirbutes to properties
* Implement backoffice webhooks tree
* Implement first webhooks menu
* Make WebHookController authorized
* Update to have tabs with webhooks and logs
* Enable create overlay
* Push to entityKeys array
* Fix up pagination
* Implement delete functionality
* remove pagination
* add log view
* Fix create to be able to select more than one content type
* implement type name resolving for content
* Refactor to use less duplication
* Implement update functionality in frontend
* Rename database table
* Make multiple events possible
* create new event picker
* Refactor to actually add new database table with proper name
* Make it possible to select multiple events
* Fix updating current items
* Fix up update functionality after db rework
* Add webhook icon
* Switch to match heartcore icons
* Refactor to use bases instead of Enum
* Refactor to make IWebhookEvent to Collection, so it can be injected instead of using reflection
* Fix up frontend to match new models
* Fix integration tests
* Remove obsolete entity key from webhookdto
* Introduce constants instead of hard coded strings
* Start implementation of firing mechanism
* Add new GetByEventName method
* Add 1 to many list on WebhookDto
* Implement new repository pattern
* Implement GetByEventName
* Fix up repository to use all async
* Refactor events to fire
* Refactor WebhookEvents to be more DRY
* Add custom header
* Start implementing log repository
* Implement GetPaged
* Implement WebhookLogService
* Implement GetLogs
* Add url to webhook log
* Implement log overview
* Formatting
* Implement details view
* Refactor to get actual retry count
* Refactor firing to fire only when Enabled
* Add Status code to detailed view
* Add configuration to disable webhooks entirely
* Implement custom headers frontend
* Implement persistence of custom headers
* Refactor retry service to also retry on non success status codes.
* Refactor registration of Webhooks, to also register as NotificationHandler
* Add webhooks migration
* Add key for adding webhook headers
* Fix up test
* Change event icon to flag
* Remember event, when editing what events you have chosen
* Refactor reflection to check if INotificationAsyncHandler instead
* Formatting
* Refactor webhook model to no longer derive from EntityBase
* Rename entityKeys to content keys
* Rename controller to lowercase H
* Add null check before trying to access selectedEvents
* Add configuration for maximum number of retries
* Add index to date
* Add webhook Key to logs
* Check for SchedulingPublisher before sending webhooks
* rename requestObject to payload
* Refactor event to send appropriate payloads
* Refactor logging to happen for every try.
* Order date by descending
* Add todo
* Change firing service to use String not ByteContent
* Update Headers to Interface instead of concrete implementation
* Dont return if a table exists already
* Rename updateModel to webhook
* Annotate WebhookController.cs with PluginController attribute
* Add danish translations
* Do not check if fail
* Dont filter when selecting custom items
* Remove delay from WebhookFiringService
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add content and media sorting to the Management API
* Rename "id" to "key" throughout the ContentEditingService
* Update Open API json file
* Use "key" instead of "id" in ContentEditingServiceBase
* Use "key" instead of "id" in IMediaEditingService and MediaEditingService
* Turn delegates into abstracts + fix bug that allowed deleting items outside of the recycle bin
* Use PUT instead of POST
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Update Open API JSON
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* CRUD for content and media type folders + refactor data type folder CRUD controllers and services to match
* Correct response types + update OpenAPI JSON
* Review changes
* Review changes
* Update OpenAPI JSON after merge
* Implemented modular architecture for filestream security sanitization with an svg-html example
* 31440: Refactoring, applied to more entry points and removed test analyzer
* 31440 Added Unittests for FileStreamSecurityValidator
* PR fixes and better unittest mock names
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Add GetAsync method
* Fix up delete document type controller
* Add scope to delete async
* Add some scaffolding
* Add create model
* Start working on validation
* Move validation to its own service
* Use GetAllAsync instead of GetAsync
* Add initial composition support
Still need to figure out some kinks
* Validate compositions when creating
* Add initial folder support
* Initial handling of generic properties
* Add operation status responses
* Move create operation into service
* Add first test
* Fix issued shown by test
* Ensure a specific key can be specified when creating
* Rename container id to container key
Let's try and be consistent
* Create basic composition test
* Ensure new property groups are created with the correct key
* Add test showing property type issue
* Fix property types not using the expected key.
* Validate against model fetched from content type service
Just to make sure nothing explodes on the round trip
* Make helper for creating create models
* Add helper for creating container
* Make helper methods simpler to use
* Add test for compositions using compositions
* Add more composition tests
* Fix bug allowing element types to be composed by non element types
* Remove validators
This can just be a part of the editing service
* Minor cleanup
* Ensure that multiple levels of inheritance is possible
* Ensure doctype cannot be used as both composition and inheritance on the same doctype
* Ensure no duplicate aliases from composition and that compositions exists
* Minor cleanup
* Address todos
* Add SaveAsync method
* Renamed some models
* Rename from DocumentType to ContentType
* Clarify ParentKey as being container only + untangle things a tiny bit
* Clean out another TODO (less duplicate code) + more tests
* Refactor for reuse across different content types + add media type editing service + unit tests
* Refactor in preparation for update handling
* More tests + fixed bugs found while testing
* Simplify things a bit
* Content type update + a lot of unit tests + some refactor + fix bugs found while testing
* Begin building presentation factories for mapping view models to editing models
* Use async save
* Mapping factories and some clean-up
* Rename Key to Id (ParentKey to ParentId)
* Fix slight typo
* Use editing service in document type controllers and introduce media type controllers
* Validate containers and align container aliases with the current backoffice
* Remove ParentId from response
* Fix scope handling in DeleteAsync
* Refactor ContentTypeSort
* A little renaming for clarity + safeguard against changes to inheritance
* Persist allowed content types
* Fix bad merge + update controller response annotations
* Update OpenAPI JSON
* Update src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix review comments
* Update usage of MapCreateAsync to ValidateAndMapForCreationAsync
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Refactor GetPagedLogsAsync to not use ILogViewer
* Refactor GetPagedLogsAsync to not use ILogViewer
* Reorder using statements
* Introduce ILogViewerRepository
* Remove skip and take from repository
* Return IEnumerable instead of pagedModel
* Remove local GetLogs
* Return IEnumerable instead of pagedmodel
* Remove serilog entirely from ILogViewerService
* Move LogViewerService
* Inject LogViewerService as core service instead
* Implement LogViewerServiceTests.cs
* Add more happy path tests
* Add saved query tests
* Refactor private path fields to normal variables in setup method
* Capitalize logs for Unix systems
* Added missing documentation
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Implement allowed children of root
* Allow children by key controller
* Update to be document controlller instead
* Fix AllowedChildrenOfRootDocumentController
* Create GetAllAsync method in ContentTypeServiceBaseOfTRepositoryTItemTService
* Revert "Create GetAllAsync method in ContentTypeServiceBaseOfTRepositoryTItemTService"
This reverts commit b01b5b924099e58bb53246e4b4ba5fa15358d0cd.
* Implement attemp pattern in IContentTypeService
* Create IContentCreatingService
* Use new contentCreatingService in controller
* Revert if statement
* Use total from attempt
* Throw exceptions instead of returning attempt
* Wrap in scope
* Rename to GetAllowedChildrenContentTypesAsync
* Fix summary
* Removed unneccessary await Task.FromResult
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>