Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
297 commits
Select commit Hold shift + click to select a range
675cf7d
implement interface
iOvergaard Jul 19, 2023
bce23c8
add build targets for login screen
iOvergaard Jul 19, 2023
57754a3
package lock
JesmoDev Jul 20, 2023
2c8590e
move components to pages folder
JesmoDev Jul 20, 2023
9536793
load logo and background from property
JesmoDev Jul 20, 2023
6a13a88
styling
JesmoDev Jul 20, 2023
78181c2
move mocks around
iOvergaard Jul 20, 2023
684c9ea
remove unused vars
iOvergaard Jul 20, 2023
e470feb
add backoffice handlers
iOvergaard Jul 20, 2023
b62e394
install rxjs
iOvergaard Jul 20, 2023
b5eb697
add mock data
iOvergaard Jul 20, 2023
9d68434
add element and context for localization
iOvergaard Jul 20, 2023
c21198d
mock data
iOvergaard Jul 20, 2023
e06deda
use umb-localize
iOvergaard Jul 20, 2023
ac64975
remove the extra logic with check for section_
iOvergaard Jul 20, 2023
4eb4997
change key for login button
iOvergaard Jul 20, 2023
c7914b9
add base to vite environment
JesmoDev Jul 21, 2023
00db825
login styling
JesmoDev Jul 21, 2023
7240587
cleanup and button styling
JesmoDev Jul 24, 2023
9159997
use correct reset url
JesmoDev Jul 25, 2023
7a47154
change body of reset request
JesmoDev Jul 25, 2023
3ee86fa
validate password reset code
JesmoDev Jul 25, 2023
61d8c1e
redirect to /login/new on reset password code verify
iOvergaard Jul 25, 2023
9abcae7
add obsolete messages
iOvergaard Jul 25, 2023
b536aa9
remove inline scripts for old backoffice
iOvergaard Jul 25, 2023
46ae282
remove shadowdom from localize element
iOvergaard Jul 25, 2023
789bd0a
Revert "remove shadowdom from localize element"
iOvergaard Jul 25, 2023
09ee495
hook up reset password to api
JesmoDev Jul 26, 2023
bb39ea2
rename pages to state as it is not actually used as different pages
JesmoDev Jul 26, 2023
c6cd15a
reset password styling
JesmoDev Jul 26, 2023
6d4deca
more styling
JesmoDev Jul 26, 2023
cdf079a
add confirmation page to new password
JesmoDev Jul 26, 2023
272e495
set router to firstUpdated to avoid rAF
iOvergaard Jul 26, 2023
626112e
set a custom baseUrl on the router to make sure it works without trai…
iOvergaard Jul 26, 2023
758fb25
use route parameters to redirect on the login page to ensure correct …
iOvergaard Jul 26, 2023
8c57941
add server variables
iOvergaard Jul 26, 2023
9756ba0
make sure auth layout uses the provided properties for images
iOvergaard Jul 26, 2023
cf68804
format
JesmoDev Jul 27, 2023
431c4bd
redirect to code expired page
JesmoDev Jul 27, 2023
e7077ae
add missing properties
JesmoDev Jul 27, 2023
6561146
use allowPasswordReset and allowInvite properties in routing and layout
JesmoDev Jul 27, 2023
10ee30e
make ts happy
JesmoDev Jul 27, 2023
be6e4eb
cleanup
JesmoDev Jul 27, 2023
181bb94
init invite page
JesmoDev Jul 27, 2023
06cc1a7
hook up usernameIsEmail
JesmoDev Jul 28, 2023
de106c3
init external login providers
JesmoDev Jul 28, 2023
30fda82
add mock provider
JesmoDev Jul 28, 2023
6812064
add padding to buttons
JesmoDev Jul 28, 2023
6915746
replace uui button with normal button
JesmoDev Jul 28, 2023
a32a669
add external login providers as slot
JesmoDev Jul 31, 2023
7fa91d0
add disableLocalLogin property
JesmoDev Jul 31, 2023
7607ed4
add form to external login providers
JesmoDev Jul 31, 2023
9fdd2d3
remove unused method
JesmoDev Jul 31, 2023
16b1b84
fix build errors
iOvergaard Jul 31, 2023
99dea29
add attributes for external login
iOvergaard Jul 31, 2023
d464ae6
add custom view to external login
iOvergaard Jul 31, 2023
733f2c2
add new custom icon registry
iOvergaard Jul 31, 2023
67f9927
attach two icon registries
iOvergaard Jul 31, 2023
518fe5b
use relative paths
iOvergaard Jul 31, 2023
03b2275
use relative paths
iOvergaard Jul 31, 2023
1fafb1c
use main registry instead of providing directly
iOvergaard Jul 31, 2023
b2c64c1
add look and color to external login
iOvergaard Jul 31, 2023
d816b7c
implement getIcons() method
iOvergaard Jul 31, 2023
d794c21
use getIcons() to request icons
iOvergaard Jul 31, 2023
0c6659d
install remixicon to supplement backoffice icons (replacing font-awes…
iOvergaard Jul 31, 2023
57d92f0
move icon registries to auth element
iOvergaard Jul 31, 2023
ec5e62e
Revert "install remixicon to supplement backoffice icons (replacing f…
iOvergaard Jul 31, 2023
1d75287
add icons for common external providers
iOvergaard Jul 31, 2023
096abb2
add more icons
iOvergaard Jul 31, 2023
841bc46
remove resetCode hack as it is no longer needed
JesmoDev Aug 1, 2023
c6d25a1
add validation to new password
JesmoDev Aug 1, 2023
d722a12
get gretting from translation file
JesmoDev Aug 1, 2023
9384808
add hack to get text left aligned in uui-button
JesmoDev Aug 1, 2023
04bc4a6
add custom router
JesmoDev Aug 2, 2023
37b19ae
WIP Use router
JesmoDev Aug 2, 2023
cf89c7c
also change the URL during an action
JesmoDev Aug 3, 2023
dcb8ce8
update login action to redirect to /new when needed
JesmoDev Aug 3, 2023
6d1a2f4
redirect to login from reset and new if not allowed
JesmoDev Aug 3, 2023
a7846ed
fix new password button href
JesmoDev Aug 3, 2023
1965c10
use property on login element instead of context
JesmoDev Aug 3, 2023
fceae4c
check for redirect on invite-user
JesmoDev Aug 3, 2023
11d67af
move fake external login providers to index.html for use in dev server
iOvergaard Aug 4, 2023
891d4f4
allow password reset on dev server
iOvergaard Aug 4, 2023
2088981
add look and color
iOvergaard Aug 4, 2023
ef8577f
only set styles for default view buttons
iOvergaard Aug 4, 2023
cc47fb3
suppress vite import warning
iOvergaard Aug 4, 2023
d4832b2
check and inform for errors and show 'nothing' if a custom view fails…
iOvergaard Aug 4, 2023
6f339e9
fix mock path for localizedtext
iOvergaard Aug 4, 2023
745fa7c
fix build errors
iOvergaard Aug 4, 2023
ddd111e
ensure that msw (and all its dependencies) do not end up in the produ…
iOvergaard Aug 4, 2023
532ffff
Revert AngularValueExternalLoginInfoScriptAsync removal
iOvergaard Aug 4, 2023
00cb2db
forward the providerName to custom views
iOvergaard Aug 4, 2023
a3aaa65
change default icon
iOvergaard Aug 4, 2023
1945b63
add button look and color to external login provider options
iOvergaard Aug 4, 2023
8d846dc
add obsolete to ButtonStyle and add a mapper to new values
iOvergaard Aug 4, 2023
ebb143c
add required xml comments
iOvergaard Aug 4, 2023
b3743e0
map external login providers to <umb-login-external />
iOvergaard Aug 4, 2023
f88b789
fix typo
iOvergaard Aug 4, 2023
b00ef18
only show external login layout if there are slotted children
iOvergaard Aug 4, 2023
eb8f72f
pass on name as "provider"
iOvergaard Aug 4, 2023
cc244dc
send externalLoginUrl to custom views
iOvergaard Aug 4, 2023
f82e304
cleanup
JesmoDev Aug 6, 2023
a097fef
global import
JesmoDev Aug 6, 2023
c841d91
hide external logins completely when empty
JesmoDev Aug 6, 2023
3bd3edb
cleanup
JesmoDev Aug 7, 2023
ee4d809
setup redirect to invite
JesmoDev Aug 7, 2023
d43f5d4
rename pages to name-page
JesmoDev Aug 7, 2023
03d6637
fix names and paths
JesmoDev Aug 7, 2023
f4f7d7a
use new password layout for invite and new password
JesmoDev Aug 7, 2023
748bb1a
add comments
JesmoDev Aug 7, 2023
d04af57
cleanup and use confirmation element
JesmoDev Aug 7, 2023
ccaac10
set parameters after successful verifyinvite
iOvergaard Aug 7, 2023
201df58
map display-name and provider-name to the external element
iOvergaard Aug 7, 2023
9e2422e
map display-name
iOvergaard Aug 7, 2023
470d08b
set up external login to handle correct display- and provider-name wi…
iOvergaard Aug 7, 2023
3e65548
add support for disabling local login
iOvergaard Aug 7, 2023
f257b4c
update path to handlers
iOvergaard Aug 7, 2023
856e2c7
add more localization
iOvergaard Aug 7, 2023
c36bb28
add handlers for 2fa
iOvergaard Aug 7, 2023
725f0eb
router should support a factory for component
iOvergaard Aug 7, 2023
2bc3de4
push login to ?flow=mfa on 402 codes
iOvergaard Aug 7, 2023
79c7a76
add page to handle 2fa/mfa
iOvergaard Aug 7, 2023
da77d4f
add support for custom routing
iOvergaard Aug 7, 2023
e66a0fe
add fallback for welcome greeting
iOvergaard Aug 7, 2023
d92dcb7
handle AngularJS silliness
iOvergaard Aug 7, 2023
2d9d4d7
fix typo
JesmoDev Aug 8, 2023
012705e
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Aug 8, 2023
26c9377
fix router and replace custom umbroute:statechange event with native…
JesmoDev Aug 8, 2023
49470ec
simplify code and cleanup
JesmoDev Aug 8, 2023
d79fb6a
a11y improvements
iOvergaard Aug 8, 2023
a60bcf6
you can now navigate to anywhere from anywhere with pushState
JesmoDev Aug 8, 2023
53f3900
access the "twoFactorView" from the backend
iOvergaard Aug 8, 2023
e2d7079
set the default implemented twoFactorView to NULL
iOvergaard Aug 8, 2023
346605b
add initial logic to handle a custom mfa view
iOvergaard Aug 8, 2023
4428848
Merge remote-tracking branch 'origin/v13/feature/new-login-screen' in…
iOvergaard Aug 8, 2023
957258e
roll back custom pushState changes
JesmoDev Aug 8, 2023
b614764
add mocks for 2fa custom view
iOvergaard Aug 8, 2023
5516f04
Merge remote-tracking branch 'origin/v13/feature/new-login-screen' in…
JesmoDev Aug 8, 2023
02d635e
use router redirect
JesmoDev Aug 8, 2023
ed3f6df
re-enable click url change
JesmoDev Aug 8, 2023
af527ed
cleanup
JesmoDev Aug 8, 2023
9d3b130
remove debug buttons
JesmoDev Aug 8, 2023
6e661f0
Merge branch 'v13/feature/new-login-screen' of github.com:umbraco/umb…
iOvergaard Aug 8, 2023
821698f
add unsafeHTML to localize element
iOvergaard Aug 8, 2023
0bcf200
load mfa custom views
iOvergaard Aug 8, 2023
8b3115a
load custom view
iOvergaard Aug 8, 2023
c3cedb8
improve external login custom views
iOvergaard Aug 8, 2023
7439ad2
using optimisation
iOvergaard Aug 8, 2023
44665cc
add current culture
iOvergaard Aug 8, 2023
93e32f2
only show mfa page if 402 code has been encountered in same session
iOvergaard Aug 8, 2023
937ece2
format
JesmoDev Aug 9, 2023
7c4c8b3
remove unnesesary action
JesmoDev Aug 9, 2023
4ea3aff
add new user invite password
JesmoDev Aug 9, 2023
dfe7e31
remove console log
JesmoDev Aug 9, 2023
e00ffeb
fix getting stuck at new password page if you've triggered custom val…
JesmoDev Aug 9, 2023
17ada45
unify layouts
JesmoDev Aug 9, 2023
9de790d
add styling to buttons in error layout
JesmoDev Aug 9, 2023
ce4558b
remove unused css
JesmoDev Aug 9, 2023
a54daf3
add error message to new password page
JesmoDev Aug 9, 2023
acb63d6
add error message to reset password
JesmoDev Aug 9, 2023
60ff5bb
add error message to invite page
JesmoDev Aug 9, 2023
006f0e5
fix invite page not being rendered
JesmoDev Aug 9, 2023
20cf2eb
cleanup
JesmoDev Aug 9, 2023
8345d90
add obsolete notice to PostSetInvitedUserPassword
iOvergaard Aug 9, 2023
90abcba
add request model to set a new password for an invited user
iOvergaard Aug 9, 2023
4a8d7e0
add new method to handle invited user password
iOvergaard Aug 9, 2023
23f4f54
add get password config api call
JesmoDev Aug 10, 2023
52640df
fix password config parameters and add invite call
JesmoDev Aug 10, 2023
1cdb576
get invited user
JesmoDev Aug 10, 2023
3c72ec6
get password config
JesmoDev Aug 10, 2023
3525041
assign unique guid to login project
iOvergaard Aug 10, 2023
feaf83e
add userId to get password config and use the config as validation
JesmoDev Aug 11, 2023
c0a9934
fix
JesmoDev Aug 11, 2023
01af3d9
add alerts
JesmoDev Aug 11, 2023
52a455e
fix the new password layout
JesmoDev Aug 11, 2023
d38d211
auth redirects invite error to error page
JesmoDev Aug 11, 2023
51a45b7
use password config on new password page
JesmoDev Aug 11, 2023
73adb85
remove console log
JesmoDev Aug 11, 2023
82dc421
move file and remove unused extension
JesmoDev Aug 11, 2023
c7229e0
make ts happy
JesmoDev Aug 11, 2023
ff5f54f
file structure
JesmoDev Aug 11, 2023
5278e83
rename login-extern to external-login-provider
JesmoDev Aug 11, 2023
ce845f0
update element name
iOvergaard Aug 11, 2023
86c9a58
update dependencies
iOvergaard Aug 11, 2023
f37c6a0
export custom-view.element.ts
iOvergaard Aug 11, 2023
67c4db8
remove debug
iOvergaard Aug 11, 2023
714a07c
use umb-custom-view to load custom views
iOvergaard Aug 11, 2023
81a2ece
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Sep 7, 2023
3c5e6d3
build types
iOvergaard Sep 7, 2023
eb4bd67
move @umbraco/uui to the login app and import from there in backoffice
iOvergaard Sep 7, 2023
b07115c
make the ui library and icon registry generally available as exports …
iOvergaard Sep 7, 2023
31819b2
add mock handler for icons
iOvergaard Sep 7, 2023
40b1212
cleanup package
iOvergaard Sep 7, 2023
2906312
use uui for external login providers in the backoffice
iOvergaard Sep 7, 2023
bc2df2b
add imports and enable the backoffice icon registry globally
iOvergaard Sep 7, 2023
889f8ce
disable shadowdom
iOvergaard Sep 7, 2023
938ba33
default background image
iOvergaard Sep 7, 2023
cc38d7c
use undefined
iOvergaard Sep 7, 2023
11e5bba
revert angular values
iOvergaard Sep 7, 2023
3b51fae
remove legacy sys variables
iOvergaard Sep 7, 2023
d55e5fe
add logic to handle mfa in an overlay scenario without routing
iOvergaard Sep 8, 2023
b51017a
add new login screen to replace the overlay when logged in to the bac…
iOvergaard Sep 8, 2023
5a986b1
update spec to work with locators
iOvergaard Sep 8, 2023
c77da35
cleanup of legacy context
iOvergaard Sep 8, 2023
8a60ba6
ViewData is not always required
iOvergaard Sep 8, 2023
ae775b0
add method to solely return the default view of the backoffice to sim…
iOvergaard Sep 8, 2023
d7ac2de
add test for the login view
iOvergaard Sep 8, 2023
557ebf8
cleanup usings
iOvergaard Sep 8, 2023
fb6dd61
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Sep 14, 2023
f67ea40
Apply suggestions from code review
iOvergaard Sep 14, 2023
19a7a7f
remove 'remember me'
iOvergaard Sep 15, 2023
f395d5c
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Sep 29, 2023
9b3f9bb
add more contrast to external login divider
iOvergaard Sep 29, 2023
a5bb285
update dependencies
iOvergaard Sep 29, 2023
e28376a
set "lang" attribute to lowercase
iOvergaard Sep 29, 2023
bf09982
remove default headline
iOvergaard Sep 29, 2023
3e4bd49
localize the "Or" divider and add aria-hidden
iOvergaard Sep 29, 2023
0b171ad
remove Umbraco reference from logo and add aria-hidden
iOvergaard Sep 29, 2023
320906c
add aria-hidden to uui-icon inside external login buttons
iOvergaard Sep 29, 2023
729816a
format code
iOvergaard Sep 29, 2023
5d7f8b5
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Oct 18, 2023
c5352fe
update dependencies
iOvergaard Oct 18, 2023
b93dc91
update dependencies
iOvergaard Oct 18, 2023
ab5b68a
add translations to invite user page
iOvergaard Oct 18, 2023
b5baf78
use back to login button
iOvergaard Oct 18, 2023
60abc04
update localization-context.ts to match api from old LocalizeService …
iOvergaard Oct 18, 2023
a70e46c
add tsc to watch
iOvergaard Oct 18, 2023
4ef622e
formatting
iOvergaard Oct 18, 2023
cbc87bd
add missing localizations
iOvergaard Oct 18, 2023
793a802
fix a11y issues with muted text
iOvergaard Oct 18, 2023
9d4ddba
refresh current user after login
iOvergaard Oct 18, 2023
fd5ccde
remove unused variable
iOvergaard Oct 18, 2023
391b2a1
add localization
iOvergaard Oct 19, 2023
ff04990
add localization for error messages
iOvergaard Oct 19, 2023
031ad9f
remove unused var
iOvergaard Oct 19, 2023
5b8772a
return user after login and set successful auth
iOvergaard Oct 19, 2023
f62bcb7
retry request queue after login
iOvergaard Oct 19, 2023
e0d27a2
add language keys for failed login
iOvergaard Oct 19, 2023
cc63e5c
add language keys for failed login
iOvergaard Oct 19, 2023
ab7d2fc
render the views without a router so that it works inside a modal in …
iOvergaard Oct 19, 2023
587c034
add autocomplete to reset password fields
iOvergaard Oct 19, 2023
24b38b8
add autocomplete to login screen
iOvergaard Oct 19, 2023
0ed62e3
add generic error layout to new-password-page
iOvergaard Oct 19, 2023
361093f
new-password-layout should be able to handle with and without username
iOvergaard Oct 19, 2023
d28dd56
update language keys
iOvergaard Oct 19, 2023
2a95652
check for userId before trying to request invited user
iOvergaard Oct 19, 2023
65635df
show error when no invited user is found
iOvergaard Oct 19, 2023
0f5aea8
place back-to-login button on all error layouts
iOvergaard Oct 19, 2023
d794aed
Merge remote-tracking branch 'origin/v13/dev' into v13/feature/new-lo…
iOvergaard Oct 23, 2023
abb187e
update lockfile
iOvergaard Oct 23, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions build/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ stages:
gulpFile: src/Umbraco.Web.UI.Client/gulpfile.js
targets: coreBuild
workingDirectory: src/Umbraco.Web.UI.Client
- task: npm@1
displayName: Run npm ci
inputs:
command: custom
workingDir: src/Umbraco.Web.UI.Login
verbose: false
customCommand: ci
- task: npm@1
displayName: Run npm build
inputs:
command: custom
workingDir: src/Umbraco.Web.UI.Login
verbose: false
customCommand: run build
- task: UseDotNet@2
displayName: Use .NET $(dotnetVersion)
inputs:
Expand Down
2 changes: 2 additions & 0 deletions src/Umbraco.Cms.StaticAssets/Umbraco.Cms.StaticAssets.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
<Target Name="BuildBelle">
<Exec WorkingDirectory="$(ProjectDir)..\Umbraco.Web.UI.Client\" Command="npm ci --no-fund --no-audit --prefer-offline" />
<Exec WorkingDirectory="$(ProjectDir)..\Umbraco.Web.UI.Client\" Command="npm run build:skip-tests" />
<Exec WorkingDirectory="$(ProjectDir)..\Umbraco.Web.UI.Login\" Command="npm ci --no-fund --no-audit --prefer-offline" />
<Exec WorkingDirectory="$(ProjectDir)..\Umbraco.Web.UI.Login\" Command="npm run build" />
</Target>

<Target Name="CleanBellePreconditions" AfterTargets="Clean" Condition="'$(UmbracoBuild)' == ''">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,6 @@

@await Html.BareMinimumServerVariablesScriptAsync(backOfficeServerVariables)

<script type="text/javascript">
document.angularReady = function (app) {

@await Html.AngularValueExternalLoginInfoScriptAsync(externalLogins, ViewData.GetExternalSignInProviderErrors()!)
@Html.AngularValueResetPasswordCodeInfoScript(ViewData[ViewDataExtensions.TokenPasswordResetCode]!)

}
</script>

@*And finally we can load in our angular app*@
<script type="text/javascript" src="lib/lazyload-js/LazyLoad.min.js"></script>
<script src="@Url.GetUrlWithCacheBust("Application", "BackOffice", null!, hostingEnvironment, umbracoVersion, runtimeMinifier)"></script>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
@using Microsoft.Extensions.Options;
@using System.Globalization
@using Umbraco.Cms.Core
@using Umbraco.Cms.Core.Configuration
@using Umbraco.Cms.Core.Configuration.Models
@using Umbraco.Cms.Core.Hosting
@using Umbraco.Cms.Core.Logging
@using Umbraco.Cms.Core.Routing
@using Umbraco.Cms.Core.Services
@using Umbraco.Cms.Core.WebAssets
@using Umbraco.Cms.Infrastructure.WebAssets
@using Umbraco.Cms.Web.BackOffice.Controllers
Expand All @@ -18,7 +16,6 @@
@inject IOptions<GlobalSettings> globalSettings
@inject IRuntimeMinifier runtimeMinifier
@inject IProfilerHtml profilerHtml
@inject IIconService IconService
@inject IBackOfficeExternalLoginProviders externalLogins
@{
bool.TryParse(Context.Request.Query["umbDebug"], out bool isDebug);
Expand All @@ -27,7 +24,7 @@

<!DOCTYPE html>

<html lang="@CultureInfo.CurrentCulture.Name">
<html lang="@CultureInfo.CurrentCulture.Name.ToLowerInvariant()">
<head>
<base href="@backOfficePath.EnsureEndsWith('/')" />
<meta charset="utf-8">
Expand All @@ -41,9 +38,11 @@

@Html.Raw(await runtimeMinifier.RenderCssHereAsync(BackOfficeWebAssets.UmbracoInitCssBundleName))

<link rel="stylesheet" href="~/umbraco/login/style.css" asp-append-version="true" />
<script type="module" src="~/umbraco/login/external.js" asp-append-version="true"></script>
<script type="module" src="~/umbraco/login/index.js" asp-append-version="true"></script>
</head>
<body ng-class="{'touch':touchDevice, 'emptySection':emptySection, 'umb-drawer-is-visible':drawer.show, 'umb-tour-is-visible': tour.show, 'tabbing-active':tabbingActive}" ng-controller="Umbraco.MainController" id="umbracoMainPageBody">

<noscript>
<div class="flex flex-wrap flex-column items-center justify-center" style="height: 100%">
<h1 class="h3">
Expand All @@ -59,62 +58,64 @@
</div>
</noscript>

<div ng-hide="!authenticated" ng-cloak>

<div style="display: none;" id="mainwrapper" class="clearfix">
<umb-backoffice-icon-registry>
<div ng-hide="!authenticated" ng-cloak>

<umb-app-header></umb-app-header>
<div style="display: none;" id="mainwrapper" class="clearfix">

<div class="umb-app-content">
<umb-app-header></umb-app-header>

<umb-navigation></umb-navigation>
<div class="umb-app-content">

<section id="contentwrapper">
<umb-navigation></umb-navigation>

<div id="contentcolumn">
<div class="umb-editor" ng-view></div>
</div>
<section id="contentwrapper">

</section>
<div id="contentcolumn">
<div class="umb-editor" ng-view></div>
</div>

</div>

</div>
</section>

<umb-tour ng-if="tour.show"
model="tour">
</umb-tour>
</div>

<!-- help dialog controller by the help button - this also forces the backoffice UI to shift 400px -->
<umb-drawer data-element="drawer" ng-if="drawer.show" model="drawer.model" view="drawer.view"></umb-drawer>

<umb-search ng-attr-umb-focus-lock="true" ng-if="search.show" on-close="closeSearch()"></umb-search>

</div>
</div>

<umb-notifications></umb-notifications>
<umb-tour ng-if="tour.show"
model="tour">
</umb-tour>

<umb-backdrop ng-if="backdrop.show || infiniteMode"
backdrop-opacity="backdrop.opacity"
highlight-element="backdrop.element"
highlight-prevent-click="backdrop.elementPreventClick"
disable-events-on-click="backdrop.disableEventsOnClick">
</umb-backdrop>
<!-- help dialog controller by the help button - this also forces the backoffice UI to shift 400px -->
<umb-drawer data-element="drawer" ng-if="drawer.show" model="drawer.model" view="drawer.view"></umb-drawer>

<umb-overlay ng-if="overlay.show"
model="overlay"
position="{{overlay.position}}"
size="overlay.size"
view="overlay.view"
name="overlay.name"
parent-scope="overlay.parentScope">
</umb-overlay>
<umb-search ng-attr-umb-focus-lock="true" ng-if="search.show" on-close="closeSearch()"></umb-search>

<umb-editors ng-show="infiniteMode"></umb-editors>
</div>

<umb-login ng-if="login.show"
on-login="hideLoginScreen()">
</umb-login>
<umb-notifications></umb-notifications>

<umb-backdrop ng-if="backdrop.show || infiniteMode"
backdrop-opacity="backdrop.opacity"
highlight-element="backdrop.element"
highlight-prevent-click="backdrop.elementPreventClick"
disable-events-on-click="backdrop.disableEventsOnClick">
</umb-backdrop>

<umb-overlay ng-if="overlay.show"
model="overlay"
position="{{overlay.position}}"
size="overlay.size"
view="overlay.view"
name="overlay.name"
parent-scope="overlay.parentScope">
</umb-overlay>

<umb-editors ng-show="infiniteMode"></umb-editors>

<umb-login ng-if="login.show"
on-login="hideLoginScreen()">
</umb-login>
</umb-backoffice-icon-registry>

@await Html.BareMinimumServerVariablesScriptAsync(backOfficeServerVariables)

Expand Down
76 changes: 76 additions & 0 deletions src/Umbraco.Cms.StaticAssets/umbraco/UmbracoLogin/Index.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
@using System.Globalization
@using Microsoft.AspNetCore.Routing
@using Microsoft.Extensions.Options;
@using Umbraco.Cms.Core
@using Umbraco.Cms.Core.Configuration.Models
@using Umbraco.Cms.Core.Hosting
@using Umbraco.Cms.Core.Mail
@using Umbraco.Cms.Web.BackOffice.Controllers
@using Umbraco.Cms.Web.BackOffice.Security
@using Umbraco.Extensions
@inject IOptions<ContentSettings> ContentSettings
@inject IOptions<SecuritySettings> SecuritySettings
@inject IEmailSender EmailSender
@inject IHostingEnvironment HostingEnvironment
@inject IOptions<GlobalSettings> GlobalSettings
@inject IBackOfficeExternalLoginProviders ExternalLogins
@inject LinkGenerator LinkGenerator
@{
var backOfficePath = GlobalSettings.Value.GetBackOfficePath(HostingEnvironment);
var loginLogoImage = ContentSettings.Value.LoginLogoImage;
var loginBackgroundImage = ContentSettings.Value.LoginBackgroundImage;
var usernameIsEmail = SecuritySettings.Value.UsernameIsEmail;
var allowUserInvite = EmailSender.CanSendRequiredEmail();
var allowPasswordReset = SecuritySettings.Value.AllowPasswordReset && EmailSender.CanSendRequiredEmail();
var disableLocalLogin = ExternalLogins.HasDenyLocalLogin();
var externalLoginsUrl = LinkGenerator.GetPathByAction(nameof(BackOfficeController.ExternalLogin), ControllerExtensions.GetControllerName<BackOfficeController>(), new { area = Constants.Web.Mvc.BackOfficeArea });
var externalLoginProviders = await ExternalLogins.GetBackOfficeProvidersAsync();
}
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name.ToLowerInvariant()">
<head>
<meta charset="UTF-8"/>
<base href="@backOfficePath.EnsureEndsWith('/')"/>
<link rel="icon" type="image/svg+xml" href="~/umbraco/login/favicon.svg"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Umbraco</title>
<link rel="stylesheet" href="~/umbraco/login/style.css" asp-append-version="true" />
<script type="module" src="~/umbraco/login/external.js" asp-append-version="true"></script>
<script type="module" src="~/umbraco/login/index.js" asp-append-version="true"></script>
<style>
body {
margin: 0;
padding: 0;
}
</style>
</head>

<body class="uui-font uui-text" style="margin: 0; padding: 0; overflow: hidden">
<umb-backoffice-icon-registry>
<umb-auth
return-url="@backOfficePath"
logo-image="@loginLogoImage"
background-image="@loginBackgroundImage"
username-is-email="@usernameIsEmail"
allow-user-invite="@allowUserInvite"
allow-password-reset="@allowPasswordReset"
disable-local-login="@disableLocalLogin">
@foreach (var provider in externalLoginProviders)
{
<umb-external-login-provider
slot="external"
display-name="@provider.AuthenticationScheme.DisplayName"
provider-name="@provider.ExternalLoginProvider.AuthenticationType"
icon="@provider.ExternalLoginProvider.Options.Icon"
external-login-url="@externalLoginsUrl"
button-look="@provider.ExternalLoginProvider.Options.ButtonLook.ToString().ToLowerInvariant()"
button-color="@provider.ExternalLoginProvider.Options.ButtonColor.ToString().ToLowerInvariant()"
custom-view="@provider.ExternalLoginProvider.Options.CustomBackOfficeView">
</umb-external-login-provider>
}
</umb-auth>
</umb-backoffice-icon-registry>
</body>
</html>
1 change: 1 addition & 0 deletions src/Umbraco.Core/Constants-Web.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public const string
public const string BackOfficeArea = "UmbracoBackOffice"; // Used for area routes of non-api controllers
public const string BackOfficeApiArea = "UmbracoApi"; // Same name as v8 so all routing remains the same
public const string BackOfficeTreeArea = "UmbracoTrees"; // Same name as v8 so all routing remains the same
public const string BackOfficeLoginArea = "UmbracoLogin"; // Used for area routes of non-api controllers for login
}

public static class Routing
Expand Down
2 changes: 2 additions & 0 deletions src/Umbraco.Core/EmbeddedResources/Lang/da.xml
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,7 @@
<key alias="sort">Sortér</key>
<key alias="status">Status</key>
<key alias="submit">Indsend</key>
<key alias="success">Succes</key>
<key alias="type">Type</key>
<key alias="typeToSearch">Skriv for at søge...</key>
<key alias="under">under</key>
Expand Down Expand Up @@ -1022,6 +1023,7 @@
<key alias="instruction">Log ind nedenfor</key>
<key alias="signInWith">Log ind med</key>
<key alias="timeout">Din session er udløbet</key>
<key alias="userFailedLogin">Ups! Vi kunne ikke logge dig ind. Tjek at dit brugernavn og adgangskode er korrekt og prøv igen.</key>
<key alias="bottomText">
<![CDATA[<p style="text-align:right;">&copy; 2001 - %0% <br /><a href="https://umbraco.com" style="text-decoration: none" target="_blank" rel="noopener">umbraco.com</a></p> ]]></key>
<key alias="forgottenPassword">Glemt adgangskode?</key>
Expand Down
1 change: 1 addition & 0 deletions src/Umbraco.Core/EmbeddedResources/Lang/en.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1075,6 +1075,7 @@ To manage your website, simply open the Umbraco backoffice and start adding cont
<key alias="instruction">Log in below</key>
<key alias="signInWith">Sign in with</key>
<key alias="timeout">Session timed out</key>
<key alias="userFailedLogin">Oops! We couldn't log you in. Please check your credentials and try again.</key>
<key alias="bottomText">
<![CDATA[<p style="text-align:right;">&copy; 2001 - %0% <br /><a href="https://umbraco.com" style="text-decoration: none" target="_blank" rel="noopener">Umbraco.com</a></p> ]]></key>
<key alias="forgottenPassword">Forgotten password?</key>
Expand Down
1 change: 1 addition & 0 deletions src/Umbraco.Core/EmbeddedResources/Lang/en_us.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,7 @@ To manage your website, simply open the Umbraco backoffice and start adding cont
<key alias="instruction">Log in below</key>
<key alias="signInWith">Sign in with</key>
<key alias="timeout">Session timed out</key>
<key alias="userFailedLogin">Oops! We couldn't log you in. Please check your credentials and try again.</key>
<key alias="bottomText">
<![CDATA[<p style="text-align:right;">&copy; 2001 - %0% <br /><a href="https://umbraco.com" style="text-decoration: none" target="_blank" rel="noopener">Umbraco.com</a></p> ]]></key>
<key alias="forgottenPassword">Forgotten password?</key>
Expand Down
15 changes: 15 additions & 0 deletions src/Umbraco.Core/Models/UuiButtonColor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace Umbraco.Cms.Core.Models;

/// <summary>
/// Option to set the color of a uui-button element.
/// </summary>
/// <remarks>
/// See the UUI documentation for more details: https://uui.umbraco.com/?path=/story/uui-button--looks-and-colors.
/// </remarks>
public enum UuiButtonColor
{
Default,
Positive,
Warning,
Danger
}
16 changes: 16 additions & 0 deletions src/Umbraco.Core/Models/UuiButtonLook.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace Umbraco.Cms.Core.Models;

/// <summary>
/// Option to set the look of a uui-button element.
/// </summary>
/// <remarks>
/// See the UUI documentation for more details: https://uui.umbraco.com/?path=/story/uui-button--looks-and-colors.
/// </remarks>
public enum UuiButtonLook
{
Default,
Primary,
Secondary,
Outline,
Placeholder
}
2 changes: 0 additions & 2 deletions src/Umbraco.Infrastructure/WebAssets/BackOfficeWebAssets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ public void CreateBundles()
BundlingOptions.NotOptimizedAndComposite,
FormatPaths(
"assets/css/umbraco.min.css",
"lib/umbraco-ui/uui-css/dist/custom-properties.css",
"lib/umbraco-ui/uui-css/dist/uui-text.css",
"lib/bootstrap-social/bootstrap-social.css",
"lib/font-awesome/css/font-awesome.min.css"));

Expand Down
6 changes: 2 additions & 4 deletions src/Umbraco.Infrastructure/WebAssets/JsInitialize.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[

'lib/jquery/jquery.min.js',
'lib/jquery-ui/jquery-ui.min.js',
'lib/jquery-ui-touch-punch/jquery.ui.touch-punch.min.js',
Expand Down Expand Up @@ -35,8 +35,6 @@
'lib/umbraco/NamespaceManager.js',
'lib/umbraco/LegacySpeechBubble.js',

'lib/umbraco-ui/uui/dist/uui.min.js',

'js/utilities.min.js',

'js/app.min.js',
Expand All @@ -48,5 +46,5 @@
'js/umbraco.interceptors.min.js',
'js/umbraco.controllers.min.js',
'js/routes.min.js',
'js/init.min.js'
'js/init.min.js'
]
Loading