* Make create user endpoint work with the supplied id
Return 201 instead of 200 with correct resource identifier
* Add ResetPassword endpoint
* Bring changepassword route inline with other resource actions
* Fixed User endpoints not advertising all their possible response codes/ models
Fixed certain endpoints not authorizing targeted user(s) versus the admin needs admin authorization requirement
Fixed a user not found response bug for the update flow
Fix spacing
* Fixed CurrentUser endpoints not advertising all their possible response codes/ models
Fix incorrect responseStatus in UserService.GetPermissionsAsync
* Update OpenApi definition
Fix smal model oversights in previous commits
* Update incorrect Response type
* Check for duplicate id's in user create validation
* Remove unnecasary returnmodel from changepassword
Renamed the model to it's remaining usage
* rename bad constructor parameter
* Renamed method parameters for better readability and usage
* Fixed wrong userkey being passed down because of (refactored) bad naming
Technically doesn't change anything as the two id's should be the same in this case (reset with token is always for self)
* Fixed resetpassword bug
* Update openapi
* Update src/Umbraco.Core/Services/UserService.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Remove old password from change user password request model
Only makes sense when doing it for the logged in user => current endpoint
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* It builds..
* Added granular permissions
* Added granular permissions
* Rename content to document
* Added migration
* Fixed issues causing the migration from v13 was not possible.
* Merged Permissions and Granular Permissions in viewmodel
* Prepared the viewmodel to a future where permissions can be more types.
* OpenApi
* Allow to translate a single char to many strings
* Use frontend friendly values for known permissions
* Validate the documents exist
* Allow setting non-document settings
* Add "$type" when required
* Rename to presentation model and update OpenApi.json
* OpenApi.json
* Fix tests
* OpenAPI
* Fixed issues with upgrades
* Add the discriminator name
* Fixed issues that only happended on SqlServer
* Fixed queries for SqlServer
* Clean up
* More cleanup
* Fix issue when migrating sqlserver
* Split fallback permissions into own concept in view model
* Also split on current user
* Added a extenable pattern for mappers between DTO => Granular Permission => ViewModel and ViewModel => Granular Permission
* Fixed issue with new exists method, that did not take duplicate keys into account.
* Added sections to current user response model
* Formatting fixes
* Move class to its own file
* xml comment
---------
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
* 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>
* 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>
* Now properly checks the lockedoutdate
* Also fix Test (failed constructor)
* Processed feedback
* Added obsolete constructor
---------
Co-authored-by: Ambert van Unen <AvanUnen@ilionx.com>
* Refactor OpenIddict for shared usage between APIs + implement member authentication and handling within the Delivery API
* Make SwaggerRouteTemplatePipelineFilter UI config overridable
* Enable token revocation + rename logout endpoint to signout
* Add default implementation of SwaggerGenOptions configuration for enabling Delivery API member auth in Swagger
* Correct notification handling when (un)protecting content
* Fixing integration test framework
* Cleanup test to not execute some composers twice
* Update paths to match docs
* Return Forbidden when a member is authorized but not allowed to access the requested resource
* Cleanup
* Rename RequestMemberService to RequestMemberAccessService
* Rename badly named variable
* Review comments
* Hide the auth controller from Swagger
* Remove semaphore
* Add security requirements for content API operations in Swagger
* Hide the back-office auth endpoints from Swagger
* Fix merge
* Update back-office API auth endpoint paths + add revoke and sign-out endpoints (as of now they do not exist, a separate task will fix that)
* Swap endpoint order to maintain backwards compat with the current login screen for new back-office (will be swapped back again to ensure correct .well-known endpoints, see FIXME comment)
* Make "items by IDs" endpoint support member auth
* Add 401 and 403 to "items by IDs" endpoint responses
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* chore: Fix XML warnings
* docs: Fix XML warnings
* docs: Fix XML in resource designer
* docs: Fix XML warnings
* Revert "docs: Fix XML in resource designer"
This reverts commit 8ea61c51ac161e1853ae080db7fe1b4d4cb4d2be.
* Added attribute filter to ensure a request is taking a minimum time to response
* Added functionality to management api to send forgot password emails and verify these + do the actual reset using the token
* Renamed UserKey to UserId and updated OpenApi.json
* Update src/Umbraco.Core/Services/IUserService.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Cleanup
* Renaming param
* Fixing send user username instead of email + wrong EmailTypes
* Fixed issue with forgot password functionality after reusing other functionality
* Rename prop
* Adding docs and renaming param
* Handle password validation return types
* More cleanup
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Added functionality to verify user invite tokens and create the initial password
* Add response types
* Fail ValidateCredentialsAsync when user is not approved
* Enable user as part of initial password creating using validation token
* Adds documentation to badrequest and changed nocontent to ok, to align with other APIs
* Fixed tests and added a new one
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* This moves around files and deletes the temp projects with files that are not moved to Core, Infrastructure etc.
Also moves the from new backoffice to static access, and override those with the old views in the legacy executeable
* Removes old files from the new executeable.
* Added missing files
* Added EF Core project to solution file
* fix build
* Add specific not found results
* Add tests for the enable/disable not found tweak
* Cache ids and key in UserIdKeyResolver
* Don't cache null keys
* BackOffice not Backoffice
* Move fetching the user out of the ChangePasswordUsersController
* Move resolving user out of SetAvatar
* Move resolving user out of Update
* Return more specific notfound in bykey
* Use ErrorResult for all endpoints with unknown errors
* Split integration tests
* Add mappers
* Use ?: consistently
* Add reuseable iso code validator
* Validate ISO code
* Update supressions
* Use method from base to get current user key
* Rename ISo to Iso
* Use keys in services instead of user groups + Added a couple of new validations
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Add UserResponseModel
* Add factory to created UserResponseModel
* Add GetByKey controller
* Add GetAllUsers endpoint
* User proper response model
* Make naming consistent
* Order by username in GetAll
* Add user filter endpoint
* Fix includer user states
* Remove gravatar from the backend
* Send user avatars in response
* Add create user model
* start working on create
* Validate the create model
* Add authorization to create
* Use UserRepository instead of UserService to ValidateSessíonId
* Create IBackofficeUserStore interface
This is essentially a core-friendly version of the BackOfficeUserStore, additionally it contains basic methods for managing users, I.E. Get users, save users, create users, etc.
* Remove more usages of user service
* Remove usages of IUserService in BackofficeUserStore
* Add documentation
* Fix tests and DI
* add IBackOfficeUserStoreAccessor to resolve it in singleton services
* Resolve circular dependency
* Remove obsolete constructor
* Add core friendly user manager
* Finish createasync in user service
* Add WIP create endpoint
* Save newly creates users user groups
* Use service scope for user service
* Remove now unnecessary accessors
* Add response types
* Add update user endpoint
* Add EmailUserInviteSender
* Add technology free way of creating confirmation token
* Add invite uri provider
* Add invite user to user service
* Add invite user controller
* Add delete endpoint
* Add operation status responses
* Add operation status responses
* Added temporary file uploads including a repository implementation using local temp folder.
* Add Disable users endpoint
* missing files
* Fixed copy paste error
* Fix create users return type
* Updated OpenApi.json
* Updated OpenApi.json
* Handle if created failed in identity
* Add enable user
* Make users plural in enable/disable
We're doing the operation on multiple entities
* Added file extension check
* Add unlock user endpoint
* Clean up. Removed old TemporaryFileService and UploadFileService and updated dictionary items to use this new items
* Clean up
* Add reset password
* Add UpdateUserGroupsOnUsers method
* Add UpdateUserGroups
* Get rid of stream directly on TemporaryFileModel, and use delegate to open stream instead.
* Fix post merge
* Use keys instead of IDs
* Add ClearAvatar endpoint
* Review changes
* Moved models to their own files
* Reverted launch settings
* Move enlist extension to its own namespace
* Create set avatar endpoint
* Add reponse types
* Remove infrastructure extension after merge
* Add Cmapatibility suppressions
* Add test suppression
* Add integration tests
* Fix issue found in tests
* Add invited user to UserInvitationResult
* Add more tests
* Add update tests
* Hide different tests under parent
* Return DuplicatUserName user operation status if username matches an email
* Add update tests
* Change sorted set to HashSet
It doesn't work if it's not IComparable
* Change ID to Key when checking super
* Add get tests
* Add more GetAllTests
* Move tests to the right namespace
* Add filter test
* Fix including disabled users bug found by test
* Add test to ensure invited user state
* Add test case for UserState.All
* Add more filter tests
* Add enable disable tests
* Add resolver for keys and ids
* Replace usages of IUserService with IUserIdKeyResolver
* Add CompatibilitySuppressions
* Add UserIdKeyResolverTests
* Fix UserIdKeyResolver
* Add missing user operation results
* Updates from review
* ID not key
* Post instead of patch
* Use set instead of params for enable/disable
* Don't call to array
* Use sets for usergroup keys and user keys instead
* LanguageIsoCode instead of Language
* Update CompatibilitySuppressions after changin enumerable to set
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Add MSSQL migration
* Make upgrade possible when user doesn't have a key yet
* Migrate SQLite
* Migrate the external login column
* Fix logging in after migration
* Handle fake GUID correctly
* Make GetByKey async
* Resolve external logins by key instead of id
* Remove usage of naive UserIdToInt
* Dont use ToGuid for property type defaults
* Use constant GUID for user groups
* Ensure that the same GUID is used to create the root user.
* Add migration for two factor logins
* Add default implementations
* Fix unit test
* Remove TODO
* Fix integration tests
* Add default implementation instead of throwing
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Make SQLServer migration idempotent
* Add comment about SQLite
* Fix typo
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Add key to UserGroupDto
* Fix renaming table in sqlite
The SqliteSyntaxProvider needed an overload to use the correct query
* Start work on user group GUID migration
* Add key index to UserGroupDto
* Copy over data when migrating sqlite
* Make sqlite column migration work
* Remove PostMigrations
These should be replaced with Notification usage
* Remove outer scope from Upgrader
* Remove unececary null check
* Add marker base class for migrations
* Enable scopeless migrations
* Remove unnecessary state check
The final state of the migration is no longer necessarily the final state of the plan.
* Extend ExecutedMigrationPlan
* Ensure that MigrationPlanExecutor.Execute always returns a result.
* Always save final state, regardless of errors
* Remove obsolete Execute
* Add Umbraco specific migration notification
* Publish notification after umbraco migration
* Throw the exception that failed a migration after publishing notification
* Handle notification publishing in DatabaseBuilder
* Fix tests
* Remember to complete scope
* Clean up MigrationPlanExecutor
* Run each package migration in a separate scope
* Add PartialMigrationsTests
* Add unhappy path test
* Fix bug shown by test
* Move PartialMigrationsTests into the correct folder
* Comment out refresh cache in data type migration
Need to add this back again as a notification handler or something.
* Start working on a notification test
* Allow migrations to request a cache rebuild
* Set RebuildCache from MigrateDataTypeConfigurations
* Clean MigrationPlanExecutor
* Add comment explaining the need to partial migration success
* Fix tests
* Allow overriding DefinePlan of UmbracoPlan
This is needed to test the DatabaseBuilder
* Fix notification test
* Don't throw exception to be immediately re-caught
* Assert that scopes notification are always published
* Ensure that scopes are created when requested
* Make test classes internal.
It doesn't really matter, but this way it doesn't show up in intellisense
* Add notification handler for clearing cookies
* Add CompatibilitySuppressions
* Use unscoped migration for adding GUID to user group
* Make sqlite migration work
It's really not pretty, square peg, round hole.
* Don't re-enable foreign keys
This will happen automatically next time a connection is started.
* Scope database when using SQLServer
* Don't call complete transaction
* Tidy up a couple of comment
* Only allow scoping the database from UnscopedMigrationBase
* Fix comment
* Remove remark in UnscopedMigrationBase as it's no longer true
* Add keys when creating default user groups
* Map database value from DTO to entity
* Fix migration
Rename also renamed the foreign keys, making it not work
* Make migration idempotent
* Fix unit test
* Update CompatibilitySuppressions.xml
* Add GetUserGroupByKey to UserService
* Add ByKey endpoint
* Add UniqueId to AppendGroupBy
Otherwise MSSQL grenades
* Ensure that languages are returned by PerformGetByQuery
* add POC displaying model
* Clean up by key controller
* Add GetAllEndpoint
* Add delete endpoint
* Use GetKey to get GUID from id
Instead of pulling up the entire entity.
* Add UserGroup2Permission table
* Fetch the new permissions when getting user groups
* Dont ToString int to parse it to a short
I'm pretty sure this is some way old migration type code that doesn't make any sense anymore
* Add new relation to GetDeleteClauses
* Persist the permissions
* Split UserGroupViewModel into multiple models
This is to make it possible to make endpoints more rest-ish
* Bootstrap create and update endpoints
* Make GetAllUserGroupController paged
* Add method to create IUserGroup from UserGroupSaveModel
* Add sanity check version of endpoint
* Fix persisting permissions
* Map section aliases to the name the frontend expects
This is a temporary fix till we find out how we really want to handle this
* Fix up post merge
* Make naming more consistent
* Implement initial update endpoint
* Fix media start node
* Clean name for XSS when mapping to IUserGroup
* Use a set instead of a list for permission names
We don't want dupes
* Make permission column nvarchar max
* Add UserGroupOperationStatuses
* Add IUserGroupAuthorizationService
* Add specific user group creation method to user service
* Move validating and authorizing into its own methods
* Add operation result to action result mapping
* Update create controller to use the create method
* Fix create end point
* Comment out getting current user untill we have auth
* Add usergroup service
* Obsolete usergroup things from IUserService
* Add update to UserGroupService interface
* User IUserGroupService in controllers
* User async notifications overloads
* Move authorize user group creation into its own service
* Add AuthorizeUserGroupUpdate method
* Make new service implementations internal and sealed
* Add update user
* Add GetAll to usergroup service
* Remove or obsolete usages of GetAllUserGroups
* Add usergroup service to DI
* Remove usage of GetGroupsByAlias
* Remove usages of GetUserGroupByAlias
* Remove usage of GetUserGroupById
* Add new table when creating a new database
* Implement Delete
* Add skip and take to getall
* Move skip take into the service
* Fixup suggestions in user group service
* Fixup unit tests
* Allow admins to change user groups they're not a part of
* Add CompatibilitySuppressions
* Update openapi
* Uppdate OpenApi.json
again
* Add missing compatibility suppression
* Added missing type info in ProducesResponseTypeAttribute
* Added INamedEntityViewModel and added on the relevant view models
* Fixed bug, resulting in serialization not being the same as swagger reported. Now all types objects implementing an interface, is serialized with the $type property
* updated OpenApi.json
* Added missing title in notfound response
* Typo
* .Result to .GetAwaiter().GetResult()
* Update comment to mention it should be implemented on CurrentUserController
* Validate that start nodes actually exists
* Handle not found consistently
* Use iso codes instead of ids
* Update OpenAPI
* Automatically infer statuscode in problemdetails
* Ensure that the language exists
* Fix usergroup 2 permission index
* Validate that group name and alias is not too long
* Only return status from validation
We're just returning the same usergroups, and this is less boilerplate code
* Handle empty and null group names
* Remove group prefix from statuses
* Add some basic validation tests
* Don't allow updating a usergroup to having a duplicate alias
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* New backoffice/add system text json configuration attribute (#12998)
* Add SystemTextJsonConfigurationAttribute
* Fix up formatting
* Rename classes for clearer purpose
Co-authored-by: Zeegaan <nge@umbraco.dk>
* UmbracoPath should no longer be configurable (#13032)
* UmbracoPath should no longer be configurable
* Remove UmbracoPath configuration from all tests
* Only contain style instead of full layout (#13033)
* Only contain style instead of full layout (#13033)
* Fix CodeQL duplicate "permissions" node and reformat
* add an extra check to ensure the pips exist before adding a class to them
* improve pip classList add/remove with no intermediary variable
* Only contain style instead of full layout (#13033)
* Ensure consistent margin on headings in tree root (#12992)
* Ensure consistent margin on headings in tree root (#12992)
(cherry picked from commit 88bfef9e0d)
* Bump version to 10.2.1
* Translate "User permissions for languages" feature to dutch (#12971)
* Translate 'sectionsHelp' to Dutch
* Translate 'selectLanguages' to Dutch
* Transkate 'allowAccessToAllLanguages' to Dutch
* Translate "User permissions for languages" feature to español (#12975)
* Translate 'selectLanguages' to Español
* Translate 'languagesHelp' to español
* Translate 'allowAccessToAllLanguages' to spanish
* Updated project references for Forms and Deploy in the JsonSchema project. (#13047)
* Updated project references for Forms and Deploy in the JsonSchema project. (#13047)
* UmbracoPath has been removed from the official schema store, remove temporary workaround from our schema generator as well (#13043)
* add an extra check to ensure the pips exist before adding a class to them
* improve pip classList add/remove with no intermediary variable
* pass in parameters needed to member service (#13020)
* Missing methods from IMemberService (#13022)
* Add back methods to interface
* Add default implementations to avoid breaking changes
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New endpoint for web profiling dashboard (#13038)
* Endpoint for web profiling dashboard
* Add profiling API contract
* New Backoffice: Published cache controller (#13034)
* Add published cache controller (endpoints for the Published Status dashboard)
* Update OpenAPI contract for published cache endpoints
* Fix OpenApi spec
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Bug fix for datepicker with offset time (#12847)
* https://github.com/umbraco/Umbraco-CMS/issues/12844
* remove "X" from ng-attr
Doing the test I killed the ng-if attr. But forgot it was there doing the commit
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
* Make sure swagger tags and operations are sorted alphabetically (#13055)
* Add spellcheck false to password inputs (#13059)
* Add null check for variants in Grid Layout (#13060)
This fixes a regression from 10.2.0 where the `variants` property was removed.
* Add null check for variants in Grid Layout (#13060)
This fixes a regression from 10.2.0 where the `variants` property was removed.
* Fixes#12972 for validating legacy member passwords (#12973)
* Fixes#12972 for validating legacy member passwords
* Removed unused variable
* removed unused variable
* Fix issue toggling boolean between true/false after Save without refreshing
* New backoffice: examine management controller (#12981)
* Add ExamineManagementControllerBase
* Add ExamineIndexModelFactory
* Add IndexesExamineManagementController
* Add proper attributes
* Implement ExamineIndexViewModel.cs
* formatting
* Add comment about it working in .NET 7
* Add SearchersExamineManagementController.cs
* Update comments about why it might throw errors
* Add SearchResultViewModel
* Add SearchExamineManagementController
* Add ExamineSearcherValidationService
* Rename ExamineSearcherValidationService.cs to ExamineSearcherFinderService.cs
* Rename interface aswell
* Add SearchExamineManagementController
* Refactor ExamineSearcherFinderService
* Add HasIndexRebuiltExamineManagementController.cs
* Fix up formatting
* Async actions
* Add RebuildIndexExamineManagementController.cs
* Rename IExamineIndexModelFactory to IExamineIndexViewModelFactory
* Refactor HasIndexRebuilt endpoint to Index endpoint
* Remove unused usings
* Fix up DetailsExplanation
* Create dedicated SearchersViewModel
* Rename action
* Rename RebuildIndex to Rebuild
* Dont have changes in ExamineIndexModel
* Make values strongly typed instead of generic lists of strings
* Rename to non-plural
* Rename to non-plural
* Rename controller
* Introduce ITemporaryIndexingService
* Introduce ITemporaryIndexingService
* Add SearcherName to view model
* Move to new ExamineManagementControllerBase.cs
* Refactor ExamineManagerService
* Use init instead of setters
* Make properties explicitly on models
* Add DI
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Rename to IndexExamineManagementController
* Return ViewModel instead of exception
* Make view models non-nullable
* Add examine management extension point
* Rename to IndexingRebuilderService
* Move rebuild logic to service
* Fix up usages in IIndexingRebuilderService
* Fix up DI
* Fix OpenApi contract
* Implement CanRebuild on IIndexingRebuilderService.cs
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Update build script
* Add BuildProjectReferences=false to dotnet pack
* Internalize Umbraco.Cms.ManagementApi references
* Make Searchers endpoint return ActionResult (#13068)
* New backoffice - trees design (#12963)
* Refactor: Add default versioned back office route attribute
* Tree controller bases and first draft implementations for document, media and doctype
* Move tree item view models to appropriate location
* Fix missing parent
* Refactor user entity access for testability
* A bit of clean-up + handle user start nodes for items endpoint
* Implement foldersOnly for folder tree
* Items endpoint for document type tree
* Strongly typed action results
* Content + media recycle bin
* Correct return type for swagger
* Member type tree
* Rename user start node handling to make a little more sense
* Revert to faked admin start nodes in document tree
* Media type tree
* Data type tree
* Relation type tree
* Remove unused dependency from member type tree
* Correct documentation for member type tree endpoint response types
* Use icon constants
* Add templates tree
* Member group tree
* Document blueprint tree
* Partial views, scripts and stylesheets trees
* Static files tree
* Clarify "folders only" state
* Comments and improved readability
* Rename TreeControllerBase and TreeItemViewModel
* Move recycle bin controller base to its own namespace
* Moved tree base controllers to their own namespace
* Common base class for tree view models
* Remove ProblemDetails response type declaration from all actions
* Add OpenApiTag
* Various review comments
* Dictionary item tree
* Renamed all tree controllers to follow action/feature naming convention
* Handle client culture state for document tree
* Support "ignore user start nodes" for content and media + refactor how tree states work to make things more explicit
* Fix or postpone a few TODOs
* Make entity service able to paginate trashed children
* Handle sorting explicitly
* Re-apply VersionedApiBackOfficeRoute to install and upgrade controllers after merge
* Use PagedViewModel instead of PagedResult for all trees
* Explain the usage of UmbracoObjectTypes.Unknown
* Introduce and apply GetMany pattern for dictionary items
* Add a note about relation type caching
* Fix broken test build + add unit tests for new localization service methods
* Use new management API controller base
* Entity repository should build document entities for document blueprints when getting paged entities (same as it does when getting specific entities)
* Use Media type for Media recycle bin
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Move shared relation service to concrete implementations
* Use inclusive language
* Add 401 response type documentation to applicable trees
* Refactor entity load for folder tree controller base + ensure that folders are only included in the first result page
* Add (in-memory) pagination to dictionary tree
* Make file system controller honor paging parameters
* Support pagination in relation type tree
* Clarify method name a bit for detecting tree root path requests
* Update Open API schema to match new trees
* Move from page number and page size to skip/take (with temporary workaround for lack of property skip/take pagination in current DB implementation)
* Update OpenAPI schema to match skip/take
* Update OpenAPI schema
* Don't return paginated view models from "items" endpoints
* Update OpenApi schema
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Use pattern matching to check if items is not `JArray`
* Bump Smidge up to v4.1.1
* Removing X-XSS-Protection healthcheck
* Redirect to a return URL if one is present on the querystring when logging into the back office
* Fix issue 13023 - Cannot read properties of undefined (reading 'allowedActions')
* Implement playwright acceptance tests instead of cypress (#13069)
* fix up dependencies in package.json
* Change configs to playwright
* update types
* remove cypress
* add playwright
* Fix up imports
* Move up test files
* Fix up scripts
* Update user import
* Remove allowEditInvariantFromNonDefault=True.spec.ts
* Update docker container
* Run playwright on pipelines
* Install playwright
* change urls
* change to run playwright
* Update reporter
* create .env file when installing
* update pipelines
* Remove @in yml
* Update Yaml script to use New-Item
* Pipe object to Value
* Update yaml to use "" not {}
* Update localhost to proper port
* Push package-lock.json
* include dotenv in package.json
* Add back umbraco.config.ts
* Dont change launchSettings.json
* Fix up pipelines
* Change working directory
* Add logging
* Actually name the file
* Remove .env from path
* Add working directory
* Add working directory to script
* check env content
* Update more working dir
* Try making newline in YAML
* add quotes
* Try multiline infront of script
* Move top statement
* use https
* Update to localhost 44331
* ignore https in config
* Change linux to https
* add timeouts for tests
* Fix up url for linux
* Update docker to use port 44331 -> 5000
* increase timeout
* Update yaml
* Remove Cypress references and fix URL/port mapping
* Update umbraco-linux.docker
* Generate ASP.NET HTTPS development certificate
* Enable HTTPS development certificate in Docker
* Dont run failing tests
* Update HTTPS development certificate generation
* Copy nuget.config to correct location in Docker file
* do not run flaky test
* update outputdir
* Remove flaky tests
* Update to dot reporter
* Update to json-models-builders package
* Check if results folder exists
* Remove logging
* Use bash to find folder
* Dont use junit to report
* only publish if folder exists
* Add 5 retries for CI
* search correct folder
* Remove unused json file
* Use line reporter
* Remove umbraco.config.ts
* Remove more flaky test
* Add waits so we dont bombard SQLite
* Add page as parameter
* add page as parameter
* Remove flaky macro test
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Fix comment of view property in `ConfigurationFieldAttribute` (#13077)
* Fix comment of view property in `ConfigurationFieldAttribute`
* Update description of key property as well
* Use char instead of string for DetectJson (#13019)
* Use char instead of string for DetectJson
* Use faster method
* Change DetectIsJon method
* Update acceptance test readme & scripts (#13078)
* Update readme to reflect the change to playwright
* Update test scripts
* update README
* update pipelines to run new script
* update package.json scripts
* dont include demo test in package.json
* Add creation of blueprint test
* Implement create test script
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Refactor event handler away from keyup to ng-change
* Don't use legacy icon for action delete
* Added nullability attribute to IsNullOrWhitespace
* Fixes umbraco/Umbraco-CMS.Accessibility.Issues #63 and #61
* Revert "Removing X-XSS-Protection healthcheck" (#13096)
This reverts commit 696475ebf2.
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: New Api controllers (#12983)
* Create migrate Language controller to Umbraco.Cms:ManagementApi
* Add proper language mapping
* Update mapping to handle if language name is null
* Uncomment code
* Add new language view model
* Add LanguageViewModelMapping
* Add mapper registration
* Fix up AddMappers extension method
* Implement mapping IEnumerable of languages
* Change action signatures to ViewModel instead of model
* Seperate logic from controller into service
* Move LanguageService.cs
* Register service
* Fix up mapping
* Add null check to mapping instead of controller
* Map to ILanguage instead of implementation
* Fix up null check
* Implement ProblemDetailsBuilder.cs
* Rename duplicate method
* Use builder in actions
* Implement new Paged models
* Create language controller base
* Use pagedModel for GetAllLanguages
* Create GetAllLanguagesPaged method
* Split language controller into single APIs
* Fix up controllers with API versions
* Map Total property
* Fix up route and naming for GetLanguageController.cs
* Fix up naming for language controllers
* New folder structure
* Add culture controllers
* Map CultureInfos to paged CultureViewModel
* Remove wierd include in csproj
* Refactor controller to return pagedViewModel instead of dictionary
* Fix up mapping to map single and enumerable
* Register mapping
* Add apiversion to controller
* Add inheritdoc
* Create DictionaryControllerBase.cs
* Add delete controller
* Only use HttpDelete for deletes
* Check also if language exists in service
* Split Save action into Create & Update actions
* Update Http attributes on Create and update controllers
* Proper routing for delete controller
* Add api version
* Make action async
* Implement CreateDictionaryController
* Create DictionaryViewModel.cs
* Use viewmodel instead of values
* Create get by int DictionaryController
* Add view models
* Rename controller
* Rename DictionaryViewModel to DictionaryItemViewModel
* use created instead of ID
* Apply DataContract/Datamember to view model
* change to guid instead of Guid
* Use proper responses instead of return models when creating/updating
* Implement new IDictionaryService
* Implement new MoveController
* Use new service in mapper
* Remove unused method
* Add DictionaryViewModelMapDefinition
* Create MoveOrCopyViewModel
* Proper Http action
* Create UpdateDictionary controller
* Map IDictionaryItem to DictionaryViewModel
* Add JsonPatching
* Add UpdateDictionaryController.cs
* Map DictionaryTranslationsDisplays properly
* ParentId should be nullable
* Add new DictionaryTranslationViewModel.cs
* Remove translationViewModel
* Add Id and Key to DictionaryTranslationDisplay.cs
* Implement IDictionaryFactory.cs
* Create DictionaryViewModels and do not use IEntity
* Map to new view models instead of displays
* Register the factiories in the service container
* Remove newtonsoft
* Add serializing to and from PatchDocs
* Use JsonPatchViewModel instead of object type
* Add JsonPatch.Net to csproj
* Implement JsonPatchService.cs
* Register JsonPatchService
* Make model non-nullable
* Update controllers to use new attributes
* Rename MoveViewModel.cs
* Remove NameIsDirty as that is legacy from how we used to handle updating
* Add GetAllDictionaryController
* Add todo to DictionaryControllerBase
* Add ExportDictionaryController
* Add ImportDictionaryController
* Remove unused umbraco mapper
* Add upload dictionary controller
* Create Dictionary import view models
* Update UploadDictionaryController with view models
* Remove unused using
* Implement pagedviewmodel for GetAllDictionaryController.cs
* Add dictionary overview viewmodels
* Add mapping for DictionaryOverViewModel
* Update Dictionary controller to use new viewmodel
* Fix up attributes for UploadDictionaryController
* Make actions async
* Make controller bases abstract
* Fix after merge
* New backoffice: Analytics controller (#12957)
* Add AnalyticsControllerBase
* Add AnalyticsViewModel
* Add GetAnalyticsController
* Update ViewModel to use System.Text.Json
* Add SetAnalyticsController
* Add AnalyticsLevelViewModel
* Add GetAllAnalyticsController
* Add viewmodel factory
* Register factory for DI
* Use factory for creation of ViewModel
* Fix up AnalyticsLevelViewModel.cs
* Use analyticsLevelViewModel
* Add Enum validation to controller
* Add OpenApi attributes
* Add routing to GetAllAnalyticsController
* Rename IPagedViewModelFactory
* use new renamed PagedViewModelFactory
* Make actions async
* Make controller base abstract
* Fix up after merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Help controller (#12958)
* Add HelpControllerBase
* Add HelpPageViewModel
* Add GetHelpController
* Add viewmodel factory
* Register factory for DI
* Use PagedViewModelFactory for controller
* Update baseurl to be nullable
* Rename IPagedViewModelFactory
* Use new renamed IPagedViewModelFactory
* Dont use httpclient as field
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Relation controller (#12961)
* Add relation controller base
* Add commen about auth
* Add GetRelationController
* Use mapping to viewmodel
* Add RelationViewModel
* Add RelationViewModelsMapDefinition.cs
* Add viewmodel factory
* Register factory for DI
* Rename IPagedViewModelFactory
* Add RelationViewModelFactory
* Remove unused service
* Add GetByChildRelationController
* Add relationViewModelFactory to DI
* Add MappingBuilderExtensions
* Add relationViewModelsMapDefinition to DI
* Use PagedViewModel for child relations
* Add CreateMultiple
* Update GetRelationController to use factory instead of direct mapping
* Update GetByChildRelationController to use relationViewModelFactory
* Fix up after merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Tracked references controller (#12966)
* Add TrackedReferencesControllerBase.cs
* Add GetTrackedReferencesController
* Add relation model
* Add ITrackedReferencesRepository.cs
* Rename relation to RelationModel
* Add RelationMapDefinition.cs
* Add TrackedReferencesSkipTakeRepository
* Rename RelationModelMapDefinition
* Add new services to DI
* Rename RelationModel to RelationItemModel
* Implement TrackedReferencesSkipTakeService
* Formatting
* Add RelationItemViewModel.cs
* Add mapdefition
* Update TrackedReferencesController to use new PagedViewModel
* Add service to DI
* imlement proper routing
* Add async to GetTrackedReferencesController.cs
* Rename action to get
* Add DescendantTrackedReferencesController
* make filterMustBeIsDependency nullable
* Use count instead of capacity
* Rename controller
* Add MultipleTrackedReferencesController.cs
* Refactor TrackedReferencesService to not return pagedViewModel
* Remove TODO untill consensus on convention
* Formatting
* Delete old duplicate controller
* Fix up naming
* Fix up naming and fixed todo
* Fix up mapdefinition registrations
* Rename controllers
* Fix naming
* Fix nullable tree
* Fix up relation controller & action names
* Fix naming
* Fix up multiple to not be post
* Apply suggestions from code review
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Remove [ApiVersion] from each individual controller and added to base instead
* Added missing semi-colon
* Update all "non-async async" endpoints to return Task.FromResult
* Fixed up LanguageViewModels namespace
* Return proper status code
* Update xml documentation
* Rename GetAllCultureController
* Change return type attribute to proper Model
* Change return type attribute to correct model
* Add clarifying comment
* Change return type attribute to proper model
* Rename ById to by key
* Update DictionaryOverviewViewModel to use Key instead of ID
* Implement factory method to create viewModel instead of using services in mapper
* Fix up DictionaryItemViewModel to use Parent GUID instead of ID
* Update return type attribute to correct model
* Update key to actual GUID instead of string
* Update route to not include "delete"
* Remove redundant IActionResult specification
* Update responseType attribute to correct models
* Update OpenApiTag for DictionaryControllerBase
* Update ResponseType attribute to correct models
* update variable name to not be "XD"
* Update ResponseType attribute to correct model
* Update route to not include "update" as it is redundant
* Update produces responsetype attributes to correct models
* Use IJsonSerializer abstraction instead of JsonConvert directly
* Remove unused field
* Change ResponseType attribute to correct model
* change TrackedReferencesSkipTakeService to return pagedModels directly
* Remove duplicate DI
* change to better variable names
* Move RelationItemModel to core
* Remove empty folder
* Remove ITrackedReferencesSkipTakeService and add it to TrackedReferencesService
* remove TrackedReferencesSkipTakeRepository and add to TrackedReferencesRepository.cs
* Fix up TrackedReferencesService to not use SkipTake repository
* Remove AddRepositories from ManagementApiComposer
* Transition to ManagementApiBaseController
* Fixes ResponseType attribute to correct model
* Add loading files to service instead of having logic in controller
* Add todo comment
* Fix up routing for delete language
* Use problem details builder
* Add SystemTextJsonSerializer
* Add SystemTextJsonSerializer
* Remove unused usings
* Remove obsolete MoveDictionaryController
* Remove CreateDate and UpdateDate from DictionaryViewModel
* Change response type to correct model
* Remove PagedViewModelFactory.cs
* Add obsolete message
* Fix installer view models
A setter is required for the modelbinder to be able to do its work
* Update src/Umbraco.Cms.ManagementApi/Controllers/Analytics/SetAnalyticsController.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Update ResponseType to correct Model
* Update comment
* Add FileUploadService
* Add DictionaryFactory.cs to handle creation of viewmodel
* Remove unused DI
* Rename actions & controllers to reflect eachother
* Update OpenApi.json
* Add dictionary to openapi
* Update in proper alphabetical order
* Add trackedReferences to openapi
* Fix open api doc
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Backport project cleanup from #12907
* Remove empty Directory.Build.props
* Fix GenerateAppsettingsSchema target
* Re-add empty Directory.Build.props to prevent inheritance
* Re-add missing JsonPatch.Net dependency
* Fix merge issues (redundant TargetFramework property and appsettings-schema.json generation)
* Fix and improve OpenAPI test assertion
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Erik-Jan Westendorp <erikjanwestendorp@outlook.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Sean <29239704+Bakersbakebread@users.noreply.github.com>
Co-authored-by: Lucas Bach Bisgaard <rammi@rammi.dk>
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Busra Sengul <aysebusrasengul@gmail.com>
Co-authored-by: Justin Neville <justin@nevitech.co.uk>
Co-authored-by: Jeavon Leopold <jeavon@crumpled-dog.com>
Co-authored-by: Austin Gilbert <AGilbert@rbaconsulting.com>
Co-authored-by: patrickdemooij9 <patrickdemooij98@hotmail.com>
Co-authored-by: bakersbakebread <hello@seanthorne.co.uk>
Co-authored-by: Karl Butler <kbutler@carbonsix.digital>
* Update projects to .NET 7
* Fix nullability errors
* Fix up pipelines to run 7.0
* Update langversion to preview
* Revert "Fix up pipelines to run 7.0"
This reverts commit d0fa8d01b8126a4eaa59832a3814a567705419ae.
* Fix up pipelines again, this time without indentation changes
* Include preview versions
* Versions not Version
* Fix ModelTypeTests
* Fix MemberPasswordHasherTests
Microsoft wants to use SHA512 instead of SHA256, so our old hashes will return SuccessRehashNeeded now
* Use dotnet cli instead of nuget restore
* Update src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
* Update dependencies
* Fix nullability issues
* Fix unit test
* Fix nullability in ChangingPasswordModel
OldPassword can be null, if we're changing the password with password reset enabled. Additionally, we might as well use the new required keyword instead of supressing null.
* Use required keyword instead of supressing null
* Fix up pipelines again
* fix up spelling-error
* Use dotnet cli instead of nuget restore
* Fix up another NuGet command
* Use dotnet version 7 before building
* Include preview versions
* Remove condition
* Use dotnet 7 before running powershell script
* Update templates to .net 7
* Download version 7 before running linux container
* Move use dotnet 7 even earlier in E2E process
* Remove dotnet 7
* Reintroduce .NET 7 task
* Update linux docker container and remove dotnet 7 from yml
* Fix up dockerfile with ARG
* Fix up docker file with nightly builds of dotnet 7
* Reintroduce dotnet 7 so windows can use it
* Use aspnet 7 in docker
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Fix some XML docs
* Re add unused using in SqlSyntaxProviderBase to magically fix docfx
I have no idea why this works, but it does
* Fix nullref exception
* Move AuditService to core project
* Move two factor login service to core
* Move ServerRegistrationService to core
* Move BasicAuthService to Core project
* Move IdKeyMap to core project
* Added CacheInstructionService to the infrastructure namespace
* Move DataTypeService to core namespace
* Update CacheInstructionService.cs to use CoreScopeProvider
* Move core editors to core
* Move more Property editors and configuration
* Remove obsoleted constructors in internal classes
* Update PropertyEditors to use new ctors
* Fix propertyEditors to use new ctors
* Use the right property editor constructors
* add DI in the property method
* Update grid to use new ctor
* Fix non-assignment of variable
* Apply suggestions from code review
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix suggestions from code review
Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk>
Co-authored-by: Kevin Jump <kevin@thejumps.co.uk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>