* 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>
* add extension method to rewrite requests meant for backoffice static assets
* add backoffice rewrites to application builder
* embed the umbraco hash into the static assets requested on the backoffice
* Added a IStaticFileHostGenerator so its possible to replace our logic
* add docs and ensure the path is uniform with single slashes
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* 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>
* Bump version
* Add IContextCache to deploy connectors (#13287)
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Add IContextCache to deploy connectors (#13287)
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Parse lockId as invariant (#13284)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Fix Sqlite database locking issue (#13246)
* Add locking for creating scope
* Lock the repository instead
* Add scope in action instead of locking in service
* Fix up post-merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Bump version to next minor
* Fix for UseExceptionHandler no longer working since v10.3 RC (#13218)
* Fix for UseExceptionHandler no longer working since v10.3 RC
* Update the management api path to match the new one
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* New backoffice: Cleanup management API routes (#13296)
* Rename ModelsBuilderDashboard folder to ModelsBuilder
* Fix modelsbuilder paths and related naming
* Rename analytics route to telemetry
* Fix controller bases - routes and tags
* Fix items route
* Fix more controllerbase routes
* Fix route
* Fix OpenApi file
* Merging DictionaryItem and Dictionary
* Fix TrackedReferences naming
* Update OpenApi file
* Rename Analytics* related types to Telemetry*
* New Backoffice: Return AnalyticsLevelViewModel from Telemetry/ (#13298)
* Return TelemetryLevelViewModel instead of TelemetryLevel
* Fix schema
* Change telemetry/current to telemetry/level
(cherry picked from commit f2b8494c669cbbf04b623753abbf1be211973aa9)
* Add contants for tree and recycle-bin subpaths
(cherry picked from commit 4449f56bc00832ea6d357a3854b454791c80e0e2)
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Updated Smidge, Npoco and MailKit (#13310)
* Updated Smidge, Npoco and MailKit
* Added missing command (after breaking interface in npoco)
* OpenId Connect authentication for new management API (#13318)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Routing/UmbracoRequestPaths.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* V11: Using IFileProvider to access assets added from packages (#13141)
* Creating a FileProviderFactory for getting the package.manifest and grid.editors.config.js files through a file provider
* Collecting the package.manifest-s from different sources
* Searching different sources for grid.editors.config.js
* Using an IFileProvider to collect all tours
* Refactoring IconService.cs
* Typo
* Optimizations when looping through the file system
* Moving WebRootFileProviderFactory to Umbraco.Web.Common proj
* Removes double registering
* pluginLangFileSources includes the localPluginFileSources
* Comments
* Remove linq from foreach
* Change workflow for grid.editors.config.js so we check first physical file, then RCL, then Embedded
* Clean up
* Check if config dir exists
* Discover nested package.manifest files
* Fix IFileInfo.PhysicalPath check
* Revert 712810e1fd995720047832ee689f804185ea69d6 as that way files in content root are preferred over those in web root
* Adding comments
* Refactoring
* Remove PhysicalPath check
* Fix registration of WebRootFileProviderFactory
* Use Swashbuckle instead of NSwag (#13350)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Replace NSwag with Swashbuckle and clean up unnecessary client secret workaround
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* A little niceness + export new OpenApi.json and fix path in contract unit test
* Redo after merge with v11/dev + filter out unwanted mime types
* Remove CreatedResult and NotFoundObjectResult where possible
* Custom schema IDs - no more "ViewModel" postfix and make generic lists look less clunky too
* A little more explanation for generic schema ID generation
* Force Swashbuckle to use enum string names
* Update OpenApi.json to match new enum string values
* Add clarifying comment about weird looking construct
* add workflow to schema (#13349)
* add workflow to schema
* add licenses to CMSDefinition - intentionally only adding to schema, not registered as options
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Justin Neville <67802060+justin-nevitech@users.noreply.github.com>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
* Creating a FileProviderFactory for getting the package.manifest and grid.editors.config.js files through a file provider
* Collecting the package.manifest-s from different sources
* Searching different sources for grid.editors.config.js
* Using an IFileProvider to collect all tours
* Refactoring IconService.cs
* Typo
* Optimizations when looping through the file system
* Moving WebRootFileProviderFactory to Umbraco.Web.Common proj
* Removes double registering
* pluginLangFileSources includes the localPluginFileSources
* Comments
* Remove linq from foreach
* Change workflow for grid.editors.config.js so we check first physical file, then RCL, then Embedded
* Clean up
* Check if config dir exists
* Discover nested package.manifest files
* Fix IFileInfo.PhysicalPath check
* Revert 712810e1fd995720047832ee689f804185ea69d6 as that way files in content root are preferred over those in web root
* Adding comments
* Refactoring
* Remove PhysicalPath check
* Fix registration of WebRootFileProviderFactory
* Add migration that adds BlockGrid files to disk
* Add partial views to disk when creating sample
* Refactor upgrade to use IPartialViewPopulator
* Add blockgrid default rendering partial views when creating a new project from template
* Remove views from static assets
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* Collecting new language files from different sources
* Apply suggestions from review
* Adding TODO for merging the language files locations to one when packages are not concerned
* Add runtime mode setting
* Only enable Razor runtime compilation in development modes
* Only enable ModelsBuilder generation in development modes
* Fix disabling ModelsBuilder controllers
* Add IRuntimeModeValidationService and IRuntimeModeValidator
* Add JITOptimizerValidator
* Add UmbracoApplicationUrlValidator
* Add UseHttpsValidator
* Add RuntimeMinificationValidator
* Add ModelsBuilderModeValidator
* Remove .NET 6 preview 1 fix for Razor runtime compilation
* Only allow InMemoryAuto in backoffice development mode
* Make runtime mode validators public, so they can be easily removed if required
* Add comment to highlight removing RazorCompileOnBuild, RazorCompileOnPublish and CopyRazorGenerateFilesToPublishDirectory when using ModelsMode InMemoryAuto
* Add documentation
* Update src/Umbraco.Web.Common/ModelsBuilder/NoopModelsBuilderDashboardProvider.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Add Umbraco specific global usings
* Enable implicit usings
* v10: Wait for updated ConnectionStrings during install (#12536)
* Do not change/reload configuration
* Wait for updated connection string options
* recase assigndomain (#12448)
* Add depth property to ICoreScope (#12540)
* Remove ambient scope stack from httpcontext.items. (#12539)
This change makes it easier to use service calls in parallel whilst
a httpcontext is available.
* v10: Prefer SQLite primitive types to flexible types (#12541)
* Prefer SQLite primitive types to flexible types.
* SQLite - column mappings use TEXT for decimals
Thanks @mattbrailsford for sense check.
* Fix issue where languages files are not found in subdir of package dir (#12543)
* Make FindContent return type nullable (#12545)
* Updated nuget dependencies (07-06-2022) (#12525)
* Updated nuget dependencies
* Move Nerdbank.GitVersioning update to Directory.Build.props
* Updated more dependencies
* Improve FlagOutOfDateModels property behaviour.
(cherry picked from commit 54077725c373495fce0d3fbc5cdb6469aad3b676)
* Fix logic error WRT models builder flag out of date models. (#12548)
(cherry picked from commit 6b0149803a879d1c6902a5f61d1f2e9dc8545aac)
* Fixed issue with expected null value. (#12550)
Fixes https://github.com/umbraco/Umbraco-CMS/issues/12526
* Updated Examine to 3.0.0
* Fixes relation issue, when moving a root item to recycle bin, the "Relate Parent Media Folder On Delete"/"Relate Parent Document On Delete" cannot get the parent node type, because it is a fake root.
* Fix possible null error
* Bump version to 10.0.0 final
* Fix attempting to write lock files to LocalTempPath before it exists (#12563)
* Re fix usage statements
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Paul Johnson <pmj@umbraco.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Update localized to get the physical paths on .net 6
* Update src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilder.LocalizedText.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Minor amends for variable naming and to resolve warnings on use of explicit types.
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added functionality to enable 2FA for users..
* Do not use the obsolete ctor in tests
* cleanup
* Cleanup
* Convert User view from overlay to infinite editor
* Add support for having additional editors on top of the user (2fa) which overlay does not support
* Add controllerAs syntax in the template
* Remove unused dependencies
* Adjustments to 2fa login view
* organize elements
* add translations
* add a11y helpers
* add autocompletion = one-time-code
* change to controllerAs syntax
* add callback to cancel 2fa and fix error where submit button was not reset when all other validations were
* add a cancel/go back button to the 2fa view
* replace header with something less obstrusive
* move logout button to the footer in the new editor view
* change 'edit profile' to an umb-box and move ng-if for password fields out to reduce amount of checks
* Add umb-box to external login provider section
* add umb-box to user history section
* bug: fix bug where notificationsService would not allow new notifications if removeAll had been called
* add styling and a11y to configureTwoFactor view
- also ensure that the view reloads when changes happen in the custom user view to enable 2fa
- ensure that view updates when disabling 2fa
- add extra button to show options (disable) for each 2fa provider
* add notification when 2fa is disabled
* add data-element to support the intro tour
also changed a minor selector in the cypress test
* correct usage of umb-box with umb-box-content
* do not use the .form class twice to prevent double box-shadow
* make tranlastion for 2fa placeholder shorter
* ensure that field with 2fa provider is always visible when more than 1 provider
* move error state of 2fa field to token field
* update translation of multiple 2fa providers
* move CTA buttons to right side to follow general UI practices
* rename options to disable
* add disabled state
* add helper folders to gitignore so you can work with plugins and custom code without committing it accidentally
* move the disable functionality to its own infinite editor view
* use properties from umb-control-group correctly
* add 'track by' to repeater
* make use of umb-control-group
* remove unused functions
* clean up translations
* add Danish translations
* copy translations to english
* Only return enabled 2fa providers as expected
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Added settings for bypassing 2fa for external logins
* Fixed issue with saving roles using member ID before the member had an ID.
* Added missing extension method
* Removed test classes from git
* rollback csproj
* Bugfix - Take ufprt from form data if the request has form content type, otherwise fallback to use the query
* External linking for members
* Changed migration to reuse old table
* removed unnecessary web.config files
* Cleanup
* Extracted class to own file
* Clean up
* Rollback changes to Umbraco.Web.UI.csproj
* Fixed migration for SqlCE
* Change notification handler to be on deleted
* Update src/Umbraco.Infrastructure/Security/MemberUserStore.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fixed issue with errors not shown on member linking
* fixed issue with errors
* clean up
* Fix issue where external logins could not be used to upgrade Umbraco, because the externalLogin table was expected to look different. (Like after the migration)
* Fixed issue in Ignore legacy column now using result column.
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Init commit for examine 2.0 work, most old umb examine tests working, probably a lot that doesn't
* Gets Umbraco Examine tests passing and makes some sense out of them, fixes some underlying issues.
* Large refactor, remove TaskHelper, rename Notifications to be consistent, Gets all examine/lucene indexes building and startup ordered in the correct way, removes old files, creates new IUmbracoIndexingHandler for abstracting out all index operations for umbraco data, abstracts out IIndexRebuilder, Fixes Stack overflow with LiveModelsProvider and loading assemblies, ports some changes from v8 for startup handling with cold boots, refactors out LastSyncedFileManager
* fix up issues with rebuilding and management dashboard.
* removes old files, removes NetworkHelper, fixes LastSyncedFileManager implementation to ensure the machine name is used, fix up logging with cold boot state.
* Makes MainDom safer to use and makes PublishedSnapshotService lazily register with MainDom
* lazily acquire application id (fix unit tests)
* Fixes resource casing and missing test file
* Ensures caches when requiring internal services for PublishedSnapshotService, UseNuCache is a separate call, shouldn't be buried in AddWebComponents, was also causing issues in integration tests since nucache was being used for the Id2Key service.
* For UmbracoTestServerTestBase enable nucache services
* Fixing tests
* Fix another test
* Fixes tests, use TestHostingEnvironment, make Tests.Common use net5, remove old Lucene.Net.Contrib ref.
* Fixes up some review notes
* Fixes issue with doubly registering PublishedSnapshotService meanig there could be 2x instances of it
* Checks for parseexception when executing the query
* Use application root instead of duplicating functionality.
* Added Examine project to netcore only solution file
* Fixed casing issue with LazyLoad, that is not lowercase.
* uses cancellationToken instead of bool flag, fixes always reading lastId from the LastSyncedFileManager, fixes RecurringHostedServiceBase so that there isn't an overlapping thread for the same task type
* Fix tests
* remove legacy test project from solution file
* Fix test
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Gather all notifications in Umbraco.Cms.Core.Notifications
* Rename notifications to match convention
* Move and rename missed notifications
* Move the three remaining public notification into Umbraco.Cms.Core.Notifications