Commit Graph

64 Commits

Author SHA1 Message Date
Mole
56710d5b5b V13: Eaglery route domains for virtual page controllers (#16635)
* Do domain routing eagerly

* Cleanup

* Fix comment
2024-06-20 11:30:11 +02:00
Mole
100f2c3bcd Add check to ensure that RenderControllers and SurfaceControllers are always routed through the UmbracoRouteValueTransforms (#16540) 2024-06-03 12:03:40 +02:00
Bjarke Berg
696a71166c Ensure ufprt-token requests are handle in the UmbracoRouteValueTransformer (#16347) 2024-05-23 10:14:37 +02:00
Mole
5f082df3ab Ensure there is always at least 1 valid candidate (#16344)
(cherry picked from commit eb6bb99eaf)
2024-05-22 13:30:54 +02:00
Mole
18765465ae V13: Optimize custom MVC routing (#16218)
* Introduce EagerMatcherPolicy to conditionally bypass content routing

* Ensure that the candidate we disable dynamic routing for is valid

* Skip Umbraco endpoints

* Simplify logic a bit

* Move install logic to matcher

* Ensure that dynamic routing is still skipped when in upgrade state

* Fixup comments

* Reduce nesting a bit

* Don't show maintenance page when statically routed controllers are hít

* Remove excess check, since installer requests are statically routed

(cherry picked from commit ba9ddd11da)
2024-05-10 11:37:11 +02:00
Bram Hoven
b8928e9de0 Add IExceptionHandlerFeature check to dynamic route check (#14905)
* Add IExceptionHandlerFeature check to dynamic route check

* Decrease code complexity
2023-10-14 02:01:59 +02:00
Chad
e784cfa960 Improve logging performance by checking Trace/Debug log level is enabled (#12793) 2023-06-07 11:47:05 +02:00
Bjarke Berg
de6e9aeb31 Prioritise surface controller requests highest (#13919)
* Fixed issue mentioned in https://github.com/umbraco/Umbraco-CMS/issues/13836

Now surface controller requests always has higher priority than other. So if this is both a surface controller request and a virtual page request, it will execute the surface controller.

* Moved some login into private methods

* More clean up

* Clean up

* Only handle valid candidates
2023-03-08 13:43:35 +01:00
Bjarke Berg
884793f729 Added fix to maintenance page so it is shown before the content cache is created. (#13767) 2023-02-05 16:47:09 +01:00
Bjarke Berg
2d564a11b9 Maintenance page when in upgrade state (#13551)
* Added functionality to show maintenance page and fixed issues with showing custom api controllers and 404 page, when umbraco had been in install or upgrade state

* Fixed Tests

* Fixed typo

* Fixed issue with login screen redirecting to website when in upgrade state, instead of backoffice
2022-12-14 08:14:19 +01:00
Justin Neville
f28b4c1279 Fix for issue 13017 - BeginUmbracoForm doesn't work with custom umbraco routes (#13103)
* Fix issue with custom Umbraco routes not working after submitting to a Surface controller

* Added comments

* Fixed breaking changes

* Fixed test by using correct new ctor

* Fixed initializtion of UmbracoRouteValueTransformer due to ambiguous ctor

Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2022-12-06 12:42:06 +01:00
vsilvar
b27c03f001 Fixed ContentLastChanceFinder not being called for nodes without template (#12002)
This commit also ensure that the domain and culture is set before the ContentLastChanceFinder executes
2022-07-18 08:47:45 +10:00
Bjarke Berg
b232ff98a0 Fix formatting after merge and fix nullability 2022-06-27 08:31:34 +02:00
Nikolaj Geisle
4f3d680f06 V10: Build warnings in Web.Website (#12332)
* add new rule to globalconfig

* Fix warnings in Web.Website

* Fix more warnings in Web.Website

* Fix more build warnings in Web.Website

* Fix more warnings in Web.Website

* Fix tests

* Fix proper constructor call

* Fix not being able to run project

* Fix Obsolete method

Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk>
2022-05-06 15:06:39 +02:00
Nikolaj Geisle
b67810cc69 Fix new warnings 2022-04-21 11:20:12 +02:00
Nikolaj Geisle
060e0181a7 Merge remote-tracking branch 'origin/v10/dev' into v10/feature/nullable-reference-types-in-Umbraco.Web.Backoffice
# Conflicts:
#	src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Collections.cs
#	src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
#	src/Umbraco.Core/Telemetry/Models/TelemetryReportData.cs
#	src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
#	src/Umbraco.PublishedCache.NuCache/ContentStore.cs
#	src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs
#	src/Umbraco.Web.Common/ModelsBuilder/InMemoryModelFactory.cs
#	src/Umbraco.Web.Common/Security/MemberManager.cs
#	src/Umbraco.Web.Website/Routing/ControllerActionSearcher.cs
#	src/Umbraco.Web.Website/Routing/IControllerActionSearcher.cs
#	src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs
2022-04-21 10:26:51 +02:00
VWA Software internet
7e6e9c7431 Include the PluginController Area when searching for matching surface… (#12218) 2022-04-19 17:58:59 +02:00
Nikolaj Geisle
7994f5c326 Add nullability to Web.Website, Sqlite & SqlServer 2022-04-04 14:47:54 +02:00
Nikolaj Geisle
4ebd20bb66 Merge remote-tracking branch 'origin/v10/dev' into v10/feature/nullable-reference-types-in-Umbraco-Core
# Conflicts:
#	build/build.ps1
#	src/Umbraco.Core/Configuration/ConfigConnectionString.cs
#	src/Umbraco.Core/Configuration/Models/ConnectionStrings.cs
#	src/Umbraco.Core/Install/InstallSteps/TelemetryIdentifierStep.cs
#	src/Umbraco.Core/Models/ContentType.cs
#	src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs
#	tests/Umbraco.Tests.AcceptanceTest/package.json
2022-03-16 13:00:38 +01:00
Matt Brailsford
44e8808079 Check form and querystring when validating ufprt in ValidateUmbracoFormRouteStringAttribute (#11957)
* Check form and querystring when validating ufprt

Checks to see if the request has form data before validating the `ufprt` parameter, and if it doesn't assumes it must be on the querystring

* Create GetUfprt extension method

* Use GetUfprt extension

* Update UmbracoRouteValueTransformer to use GetUfrpt()

* Added missing using statement

* Check for StringValues.Empty
2022-03-03 10:42:14 +00:00
Nikolaj Geisle
224341a533 Merge remote-tracking branch 'origin/v10/dev' into v10/feature/nullable-reference-types-in-Umbraco-Core
# Conflicts:
#	src/Umbraco.Core/Configuration/Models/SecuritySettings.cs
#	src/Umbraco.Core/Events/DeleteEventArgs.cs
#	src/Umbraco.Core/Events/IEventDispatcher.cs
#	src/Umbraco.Core/Events/PassThroughEventDispatcher.cs
#	src/Umbraco.Core/Events/QueuingEventDispatcherBase.cs
#	src/Umbraco.Core/IO/MediaFileManager.cs
#	src/Umbraco.Core/Models/Mapping/MemberTabsAndPropertiesMapper.cs
#	src/Umbraco.Core/PropertyEditors/DataValueEditor.cs
#	src/Umbraco.Core/Routing/DefaultUrlProvider.cs
2022-02-15 09:29:58 +01:00
Nikolaj Geisle
83baba696c Fixed build errors after turning nullability errors off 2022-02-10 10:32:45 +01:00
Bjarke Berg
baba7ffed9 Bugfix - Take ufprt from form data if the request has form content type, otherwise fallback to use the query (#11845) 2022-01-12 13:54:14 +01:00
Nikolaj Geisle
dd7805552f v9: Remove install endpoint as valid endpoint (#11710)
* Remove installer endpoint from valid candidates

* Removed unrelevant change
2021-12-02 10:01:23 +01:00
Shannon Deminick
5bfab13dc5 Fixes #11189 - protected content not working (#11193)
* Fixes #11189

* Fixes #11183

* Fix test Null_When_No_Content_On_PublishedRequest.

Believe this is reasonable.

* Update src/Umbraco.Web.Website/Routing/PublicAccessRequestHandler.cs

Co-authored-by: Paul Johnson <pmj@umbraco.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2021-09-26 12:42:27 +02:00
Shannon
c4fdf808d3 Fixes 10730 - Route hijacking with public access 2021-09-21 10:49:45 -06:00
Shannon
9306861d76 Better candidate checking. 2021-09-17 13:49:12 -06:00
Shannon
57bbbfa7d3 better null checks 2021-09-17 13:35:43 -06:00
Shannon
d27dc05f32 Return null from UmbracoRouteValueTransformer when there is no matches, use a custom IEndpointSelectorPolicy to deal with 404s. 2021-09-17 12:02:04 -06:00
Shannon
494c9f1b42 UmbracoRouteValueTransformer fixes 2021-09-17 10:29:24 -06:00
Zeegaan
6c545a29c7 Fixed missing null checks 2021-08-17 11:33:51 +02:00
Zeegaan
f299c6a93b Updated 15 classes to use the new TryGetUmbracoContext and implemented a Set() method in HybridUmbracoContextAccessor 2021-08-11 13:25:17 +02:00
Warren Buckley
8d936c08da Change RenderController defautl type to be swapped out using the .NETCore options pattern 2021-07-07 12:52:02 +01:00
Mole
0835423e68 Replace surface with area name if surface controller has one 2021-06-30 14:36:34 +02:00
Shannon Deminick
a1624d26a3 Implements Public Access in netcore (#10137)
* Getting new netcore PublicAccessChecker in place

* Adds full test coverage for PublicAccessChecker

* remove PublicAccessComposer

* adjust namespaces, ensure RoleManager works, separate public access controller, reduce content controller

* Implements the required methods on IMemberManager, removes old migrated code

* Updates routing to be able to re-route, Fixes middleware ordering ensuring endpoints are last, refactors pipeline options, adds public access middleware, ensures public access follows all hops

* adds note

* adds note

* Cleans up ext methods, ensures that members identity is added on both front-end and back ends. updates how UmbracoApplicationBuilder works in that it explicitly starts endpoints at the time of calling.

* Changes name to IUmbracoEndpointBuilder

* adds note

* Fixing tests, fixing error describers so there's 2x one for back office, one for members, fixes TryConvertTo, fixes login redirect

* fixing build

* Fixes keepalive, fixes PublicAccessMiddleware to not throw, updates startup code to be more clear and removes magic that registers middleware.

* adds note

* removes unused filter, fixes build

* fixes WebPath and tests

* Looks up entities in one query

* remove usings

* Fix test, remove stylesheet

* Set status code before we write to response to avoid error

* Ensures that users and members are validated when logging in. Shares more code between users and members.

* Fixes RepositoryCacheKeys to ensure the keys are normalized

* oops didn't mean to commit this

* Fix casing issues with caching, stop boxing value types for all cache operations, stop re-creating string keys in DefaultRepositoryCachePolicy

* bah, far out this keeps getting recommitted. sorry

Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2021-04-20 07:11:45 +02:00
Shannon
efb84409f5 kill UmbracoWebsiteSecurityFactory and UmbracoRoutedRequest, simplify all this. 2021-03-04 15:12:58 +11:00
Shannon
70caa227e2 notes 2021-03-01 12:57:04 +11:00
Shannon
6148336d04 Adds new event so we know when umbraco routes a value, ensure the IUmbracoWebsiteSecurity is initialized for front-end requests, cleans up some of the routing middleware, adds lots of notes 2021-03-01 12:51:07 +11:00
Mole
bf41c2eeaa Netcore: Align namespaces (#9801)
* Rename Umbraco.Core namespace to Umbraco.Cms.Core

* Move extension methods in core project to Umbraco.Extensions

* Move extension methods in core project to Umbraco.Extensions

* Rename Umbraco.Examine namespace to Umbraco.Cms.Examine

* Move examine extensions to Umbraco.Extensions namespace

* Reflect changed namespaces in Builder and fix unit tests

* Adjust namespace in Umbraco.ModelsBuilder.Embedded

* Adjust namespace in Umbraco.Persistence.SqlCe

* Adjust namespace in Umbraco.PublishedCache.NuCache

* Align namespaces in Umbraco.Web.BackOffice

* Align namespaces in Umbraco.Web.Common

* Ensure that SqlCeSupport is still enabled after changing the namespace

* Align namespaces in Umbraco.Web.Website

* Align namespaces in Umbraco.Web.UI.NetCore

* Align namespaces in Umbraco.Tests.Common

* Align namespaces in Umbraco.Tests.UnitTests

* Align namespaces in Umbraco.Tests.Integration

* Fix errors caused by changed namespaces

* Fix integration tests

* Undo the Umbraco.Examine.Lucene namespace change

This breaks integration tests on linux, since the namespace wont exists there because it's only used on windows.

* Fix merge

* Fix Merge
2021-02-18 11:06:02 +01:00
Shannon
af42af7425 Simplify UmbracoRouteValues since this is an http request feature which dictates what an Umbraco route is 2021-02-12 16:54:19 +11:00
Shannon
b883ebfd7d Fixing tests, created constants 2021-02-05 13:14:24 +11:00
Shannon
eda98aa41f Changes how controllers are discovered, re-uses aspnetcore to do this, rely directly on the resolved ControllerActionDescriptor since this is how routing works anyways and also saves future lookups (perf), gets the UmbracoPageResult 'working' - at least to proxy a controller execution but now we need to do the model state merging, etc... 2021-02-04 13:09:28 +11:00
Shannon
0c26a82489 Changes the umbraco route values to use http features intead of in route values which is much nicer, fixes the redirect to page result, tests a surface controller POST and it works, ensures the routing takes place before the form check, removes a bunch of old code 2021-02-03 15:47:27 +11:00
Shannon
c024db9d3c gets surface controllers and front-end api controllers auto-routed, adds tests 2021-02-02 14:48:01 +11:00
Shannon
d1df6c4719 less allocations with AbsolutePathDecoded. removes more aspx checks, adds UmbracoRouteValueTransformerTests, adds interface for IRoutableDocumentFilter 2021-01-13 11:08:48 +11:00
Shannon
456cb00a2d Add test for UmbracoRouteValuesFactoryTests 2021-01-12 17:06:37 +11:00
Shannon
a83cbc00ef Adding tests for HijackedRouteEvaluator 2021-01-12 16:28:00 +11:00
Shannon
2feebe7a2c Ensures the routable doc filter is used, adds notes about a small mem leak. 2021-01-08 17:54:21 +11:00
Shannon
0ce90cf359 Moves UrlExtensions methods to new service and reduce the huge amount of allocated strings during routing 2021-01-08 17:21:35 +11:00
Shannon
b801199e7c missing commit 2021-01-08 15:30:35 +11:00