post merge

This commit is contained in:
Bjarke Berg
2023-10-30 15:13:12 +01:00
parent dfe5dfa4c1
commit bd0a8bfdf7
11 changed files with 173 additions and 132 deletions

View File

@@ -9,8 +9,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Asp.Versioning.Mvc" Version="7.0.1" />
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="7.0.1" />
<PackageReference Include="Asp.Versioning.Mvc" Version="7.1.0" />
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="7.1.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="OpenIddict.Abstractions" Version="4.9.0" />
<PackageReference Include="OpenIddict.AspNetCore" Version="4.9.0" />

View File

@@ -5,11 +5,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0-rc.1.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0-rc.1.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.1.*" />
<PackageReference Include="OpenIddict.EntityFrameworkCore" Version="4.7.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0-rc.2.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0-rc.2.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.2.*"/>

View File

@@ -56,6 +56,15 @@
@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>

View File

@@ -1,20 +1,76 @@
@using System.Globalization
@model Umbraco.Cms.Api.Management.BackOfficeLoginModel
@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">
<html lang="@CultureInfo.CurrentCulture.Name.ToLowerInvariant()">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="~/umbraco/login/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<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>
<script type="module" src="~/umbraco/login/main.js" asp-append-version="true"></script>
<link rel="stylesheet" href="~/umbraco/login/style.css" asp-append-version="true" />
<base href="@Model.UmbracoUrl/login/" />
<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-login return-url="@Model.ReturnUrl"></umb-login>
<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>

View File

@@ -25,7 +25,6 @@
<PackageReference Include="ncrontab" Version="3.3.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NPoco" Version="5.7.1" />
<PackageReference Include="OpenIddict.Abstractions" Version="4.2.0" />
<PackageReference Include="Serilog" Version="3.0.1" />
<PackageReference Include="OpenIddict.Abstractions" Version="4.9.0" />
<PackageReference Include="Serilog.Enrichers.Process" Version="2.0.2" />

View File

@@ -11,7 +11,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.1.*">
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.2.*">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

View File

@@ -28,7 +28,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.1.*">
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0-rc.2.*">
<PrivateAssets>all</PrivateAssets>
</PackageReference>

View File

@@ -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
@@ -18,18 +16,15 @@
@inject IOptions<GlobalSettings> globalSettings
@inject IRuntimeMinifier runtimeMinifier
@inject IProfilerHtml profilerHtml
@inject IIconService IconService
@inject IBackOfficeExternalLoginProviders externalLogins
@inject IWebProfilerService WebProfilerService
@{
var webProfilingStatus = await WebProfilerService.GetStatus();
var isDebug = (webProfilingStatus.Success && webProfilingStatus.Result) ? true : false;
bool.TryParse(Context.Request.Query["umbDebug"], out bool isDebug);
var backOfficePath = globalSettings.Value.GetBackOfficePath(hostingEnvironment);
}
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name">
<html lang="@CultureInfo.CurrentCulture.Name.ToLowerInvariant()">
<head>
<base href="@backOfficePath.EnsureEndsWith('/')" />
<meta charset="utf-8">
@@ -43,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">
@@ -61,62 +58,64 @@
</div>
</noscript>
<div ng-hide="!authenticated" ng-cloak>
<umb-backoffice-icon-registry>
<div ng-hide="!authenticated" ng-cloak>
<div style="display: none;" id="mainwrapper" class="clearfix">
<div style="display: none;" id="mainwrapper" class="clearfix">
<umb-app-header></umb-app-header>
<umb-app-header></umb-app-header>
<div class="umb-app-content">
<div class="umb-app-content">
<umb-navigation></umb-navigation>
<umb-navigation></umb-navigation>
<section id="contentwrapper">
<section id="contentwrapper">
<div id="contentcolumn">
<div class="umb-editor" ng-view></div>
</div>
<div id="contentcolumn">
<div class="umb-editor" ng-view></div>
</div>
</section>
</section>
</div>
</div>
<umb-tour ng-if="tour.show"
model="tour">
</umb-tour>
<!-- 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>
<umb-tour ng-if="tour.show"
model="tour">
</umb-tour>
<umb-notifications></umb-notifications>
<!-- 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-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-search ng-attr-umb-focus-lock="true" ng-if="search.show" on-close="closeSearch()"></umb-search>
<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>
</div>
<umb-editors ng-show="infiniteMode"></umb-editors>
<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-login ng-if="login.show"
on-login="hideLoginScreen()">
</umb-login>
</umb-backoffice-icon-registry>
@await Html.BareMinimumServerVariablesScriptAsync(backOfficeServerVariables)

View File

@@ -1,80 +1,64 @@
@using Microsoft.Extensions.Options;
@using Umbraco.Cms.Core
@using Umbraco.Cms.Core.Configuration
@using Umbraco.Cms.Core.Configuration.Models
@using Umbraco.Cms.Core.Hosting
@using Umbraco.Cms.Core.WebAssets
@using Umbraco.Cms.Infrastructure.WebAssets
@using Umbraco.Cms.Web.BackOffice.Controllers
@using Umbraco.Cms.Web.BackOffice.Security
@using Umbraco.Extensions
@inject BackOfficeServerVariables backOfficeServerVariables
@inject IUmbracoVersion umbracoVersion
@inject IHostingEnvironment hostingEnvironment
@inject IOptions<GlobalSettings> globalSettings
@inject IBackOfficeExternalLoginProviders externalLogins
@inject IRuntimeMinifier runtimeMinifier
@{
Layout = null;
var backOfficePath = globalSettings.Value.GetBackOfficePath(hostingEnvironment);
}
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<base href="@ViewData.GetUmbracoBaseFolder()/" />
<base href="@backOfficePath.EnsureEndsWith('/')" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Install Umbraco</title>
<link rel="stylesheet" href="assets/css/installer.min.css" />
<link rel="stylesheet" href="lib/nouislider/nouislider.min.css" />
<title>Umbraco</title>
@Html.Raw(await runtimeMinifier.RenderCssHereAsync(BackOfficeWebAssets.UmbracoUpgradeCssBundleName))
@*Because we're lazy loading angular js, the embedded cloak style will not be loaded initially, but we need it*@
<style>
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important;
}
</style>
</head>
<body id="umbracoMainPageBody" ng-controller="Umbraco.AuthorizeUpgradeController" class="login-only">
<body ng-class="{loading:installer.loading}" ng-controller="Umbraco.InstallerController" id="umbracoInstallPageBody">
<umb-login on-login="loginAndRedirect()"></umb-login>
<img src="assets/img/application/umbraco_logomark_white.svg" width="32" height="32" alt="Umbraco" draggable="false" id="logo" />
<umb-notifications></umb-notifications>
<umb-loader position="bottom"
class="umb-installer-loader"
ng-if="installer.loading"
ng-style="{'width': installer.progress}">
</umb-loader>
@{
var externalLoginUrl = Url.Action("ExternalLogin", "BackOffice", new
{
area = ViewData.GetUmbracoPath(),
//Custom redirect URL since we don't want to just redirect to the back office since this is for authing upgrades
redirectUrl = Url.Action("AuthorizeUpgrade", "BackOffice")
});
}
<div id="overlay" ng-cloak ng-animate="'fade'" ng-show="installer.done"></div>
@await Html.BareMinimumServerVariablesScriptAsync(backOfficeServerVariables)
<div id="installer"
ng-cloak
ng-animate="'fade'"
ng-show="installer.configuring">
@*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>
<div id="contentwrapper" ng-if="installer.current" ng-switch on="installer.current.view">
<div ng-switch-when="ysod">
<h1>A server error occurred</h1>
<p>This is most likely due to an error during application startup</p>
<iframe id="ysod" title="Error details"></iframe>
</div>
<div ng-switch-default>
<div ng-include="installer.current.view"></div>
</div>
</div>
</div>
<div ng-cloak ng-animate="'fade'" id="fact" class="absolute-center clearfix" ng-show="installer.fact">
<h2>Did you know</h2>
<p ng-bind-html="installer.fact"></p>
</div>
<h3 ng-cloak ng-animate="'fade'" id="feedback" ng-show="installer.feedback">{{installer.feedback}}</h3>
<div id="missinglazyload" style="display: none;">
<h3>There has been a problem with the build.</h3>
<p>This might be because you could be offline or on a slow connection. Please try the following steps</p>
<ol>
<li>Make sure you have <a href="https://nodejs.org" target="_blank">Node.js</a> installed.</li>
<li>Open command prompt and cd to \src\Umbraco.Web.UI.Client.</li>
<li>Check to see if \src\Umbraco.Web.UI.Client\node_modules folder exists (this could be hidden); if so, delete it.</li>
<li>Run npm ci; if successfull the node_modules folder should be created in the Umbraco.Web.UI.Client directory.</li>
<li>Run \build\build.ps1.</li>
</ol>
</div>
<script type="text/javascript">
var Umbraco = {};
Umbraco.Sys = {};
Umbraco.Sys.ServerVariables = {
"installApiBaseUrl": "@ViewData.GetInstallApiBaseUrl()",
"umbracoBaseUrl": "@ViewData.GetUmbracoBaseFolder()",
"application": {
version: "@ViewData.GetUmbracoVersion()?.Major"
}
};
</script>
<script src="lib/lazyload-js/LazyLoad.min.js"></script>
<script src="js/install.loader.min.js"></script>
</body>
</html>

View File

@@ -2,7 +2,7 @@
## Build
############################################
FROM mcr.microsoft.com/dotnet/nightly/sdk:8.0.100-rc.1-jammy AS build
FROM mcr.microsoft.com/dotnet/nightly/sdk:8.0.100-rc.2-jammy AS build
COPY nuget.config .
@@ -22,7 +22,7 @@ RUN dotnet publish --configuration Release --no-build --output /dist
## Run
############################################
FROM mcr.microsoft.com/dotnet/nightly/aspnet:8.0.0-rc.1-jammy AS run
FROM mcr.microsoft.com/dotnet/nightly/aspnet:8.0.0-rc.2-jammy AS run
WORKDIR /app
COPY --from=build dist .