Compare commits
16
Commits
+2
-2
@@ -11,5 +11,5 @@ using System.Resources;
|
||||
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyFileVersion("7.15.4")]
|
||||
[assembly: AssemblyInformationalVersion("7.15.4")]
|
||||
[assembly: AssemblyFileVersion("7.15.5")]
|
||||
[assembly: AssemblyInformationalVersion("7.15.5")]
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
|
||||
{
|
||||
public class UmbracoVersion
|
||||
{
|
||||
private static readonly Version Version = new Version("7.15.4");
|
||||
private static readonly Version Version = new Version("7.15.5");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current version of Umbraco.
|
||||
|
||||
@@ -259,7 +259,7 @@ namespace Umbraco.Core.Models.Identity
|
||||
{
|
||||
get
|
||||
{
|
||||
var isLocked = (LockoutEndDateUtc.HasValue && LockoutEndDateUtc.Value.ToLocalTime() >= DateTime.Now);
|
||||
var isLocked = (LockoutEndDateUtc.HasValue && LockoutEndDateUtc.Value.ToLocalTime() > DateTime.Now);
|
||||
return isLocked;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ using Umbraco.Core.Persistence.SqlSyntax;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenFifteenFour
|
||||
{
|
||||
[Migration("7.15.4", 1, Constants.System.UmbracoMigrationName)]
|
||||
[Migration("7.15.5", 1, Constants.System.UmbracoMigrationName)]
|
||||
public class PopulateMissingSecurityStamps : MigrationBase
|
||||
{
|
||||
public PopulateMissingSecurityStamps(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger)
|
||||
|
||||
@@ -543,7 +543,7 @@ namespace Umbraco.Core.Security
|
||||
var result = await base.SetLockoutEndDateAsync(userId, lockoutEnd);
|
||||
|
||||
// The way we unlock is by setting the lockoutEnd date to the current datetime
|
||||
if (result.Succeeded && lockoutEnd >= DateTimeOffset.UtcNow)
|
||||
if (result.Succeeded && lockoutEnd > DateTimeOffset.UtcNow)
|
||||
{
|
||||
RaiseAccountLockedEvent(userId);
|
||||
}
|
||||
|
||||
@@ -16,12 +16,6 @@ namespace Umbraco.Core.Serialization
|
||||
{
|
||||
_settings = new JsonSerializerSettings();
|
||||
|
||||
//var customResolver = new CustomIgnoreResolver
|
||||
// {
|
||||
// DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.Public
|
||||
// };
|
||||
//_settings.ContractResolver = customResolver;
|
||||
|
||||
var javaScriptDateTimeConverter = new JavaScriptDateTimeConverter();
|
||||
|
||||
_settings.Converters.Add(javaScriptDateTimeConverter);
|
||||
@@ -61,7 +55,6 @@ namespace Umbraco.Core.Serialization
|
||||
/// <returns></returns>
|
||||
public IStreamedResult ToStream(object input)
|
||||
{
|
||||
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
|
||||
string s = JsonConvert.SerializeObject(input, Formatting.Indented, _settings);
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(s);
|
||||
MemoryStream ms = new MemoryStream(bytes);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"jquery-migrate": "1.4.0",
|
||||
"angular-dynamic-locale": "0.1.28",
|
||||
"ng-file-upload": "~7.3.8",
|
||||
"tinymce": "~4.9.9",
|
||||
"tinymce": "~4.9.10",
|
||||
"codemirror": "~5.3.0",
|
||||
"angular-local-storage": "~0.2.3",
|
||||
"moment": "~2.10.3",
|
||||
|
||||
@@ -293,6 +293,8 @@ ngMobile.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
||||
* A leftward swipe is a quick, right-to-left slide of the finger.
|
||||
* Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag too.
|
||||
*
|
||||
* [well, it did until we disabled that feature to avoid problems with selecting text]
|
||||
*
|
||||
* @element ANY
|
||||
* @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
|
||||
* upon left swipe. (Event object is available as `$event`)
|
||||
@@ -388,7 +390,7 @@ function makeSwipeDirective(directiveName, direction) {
|
||||
deltaY / deltaX < MAX_VERTICAL_RATIO;
|
||||
}
|
||||
|
||||
element.bind('touchstart mousedown', function(event) {
|
||||
element.bind('touchstart', function(event) {
|
||||
startCoords = getCoordinates(event);
|
||||
valid = true;
|
||||
totalX = 0;
|
||||
@@ -401,7 +403,7 @@ function makeSwipeDirective(directiveName, direction) {
|
||||
valid = false;
|
||||
});
|
||||
|
||||
element.bind('touchmove mousemove', function(event) {
|
||||
element.bind('touchmove', function(event) {
|
||||
if (!valid) return;
|
||||
|
||||
// Android will send a touchcancel if it thinks we're starting to scroll.
|
||||
@@ -440,7 +442,7 @@ function makeSwipeDirective(directiveName, direction) {
|
||||
}
|
||||
});
|
||||
|
||||
element.bind('touchend mouseup', function(event) {
|
||||
element.bind('touchend', function(event) {
|
||||
if (validSwipe(event)) {
|
||||
// Prevent this swipe from bubbling up to any other elements with ngSwipes.
|
||||
event.stopPropagation();
|
||||
|
||||
@@ -186,7 +186,9 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
|
||||
|
||||
// Another special case for members, only fields on the base table (cmsMember) can be used for sorting
|
||||
if (e.isSystem && $scope.entityType == "member") {
|
||||
e.allowSorting = e.alias == 'username' || e.alias == 'email';
|
||||
e.allowSorting = e.alias == 'username' ||
|
||||
e.alias == 'email' ||
|
||||
e.alias == 'updateDate';
|
||||
}
|
||||
|
||||
if (e.isSystem) {
|
||||
|
||||
@@ -126,8 +126,8 @@
|
||||
<HintPath>..\packages\ClientDependency.1.9.9\lib\net45\ClientDependency.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="ClientDependency.Core.Mvc, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
|
||||
<Reference Include="ClientDependency.Core.Mvc, Version=1.9.3.0, Culture=neutral, PublicKeyToken=null">
|
||||
<HintPath>..\packages\ClientDependency-Mvc5.1.9.3\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="dotless.Core, Version=1.5.2.0, Culture=neutral, PublicKeyToken=96b446c9e63eae34, processorArchitecture=MSIL">
|
||||
@@ -1029,9 +1029,9 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\"
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>7154</DevelopmentServerPort>
|
||||
<DevelopmentServerPort>7155</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>http://localhost:7154</IISUrl>
|
||||
<IISUrl>http://localhost:7155</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<packages>
|
||||
<package id="AutoMapper" version="3.3.1" targetFramework="net45" />
|
||||
<package id="ClientDependency" version="1.9.9" targetFramework="net452" />
|
||||
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net45" />
|
||||
<package id="ClientDependency-Mvc5" version="1.9.3" targetFramework="net452" />
|
||||
<package id="dotless" version="1.5.2" targetFramework="net45" />
|
||||
<package id="Examine" version="0.1.90" targetFramework="net45" />
|
||||
<package id="ImageProcessor" version="2.7.0.100" targetFramework="net452" />
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Umbraco.Web.Editors
|
||||
Core.Constants.Security.BackOfficeAuthenticationType,
|
||||
Core.Constants.Security.BackOfficeExternalAuthenticationType);
|
||||
}
|
||||
|
||||
|
||||
if (invite == null)
|
||||
{
|
||||
Logger.Warn<BackOfficeController>("VerifyUser endpoint reached with invalid token: NULL");
|
||||
@@ -143,10 +143,10 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This Action is used by the installer when an upgrade is detected but the admin user is not logged in. We need to
|
||||
/// This Action is used by the installer when an upgrade is detected but the admin user is not logged in. We need to
|
||||
/// ensure the user is authenticated before the install takes place so we redirect here to show the standard login screen.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<ActionResult> AuthorizeUpgrade()
|
||||
{
|
||||
@@ -177,7 +177,6 @@ namespace Umbraco.Web.Editors
|
||||
//the dictionary returned is fine but the delimiter between an 'area' and a 'value' is a '/' but the javascript
|
||||
// in the back office requres the delimiter to be a '_' so we'll just replace it
|
||||
.ToDictionary(key => key.Key.Replace("/", "_"), val => val.Value);
|
||||
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
|
||||
return new JsonNetResult { Data = textForCulture, Formatting = Formatting.Indented };
|
||||
}
|
||||
|
||||
@@ -230,7 +229,6 @@ namespace Umbraco.Web.Editors
|
||||
typeof(BackOfficeController) + "GetManifestAssetList",
|
||||
() => getResult(),
|
||||
new TimeSpan(0, 10, 0));
|
||||
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
|
||||
return new JsonNetResult { Data = result, Formatting = Formatting.Indented };
|
||||
}
|
||||
|
||||
@@ -244,11 +242,10 @@ namespace Umbraco.Web.Editors
|
||||
new DirectoryInfo(Server.MapPath(SystemDirectories.AppPlugins)),
|
||||
new DirectoryInfo(Server.MapPath(SystemDirectories.Config)),
|
||||
HttpContext.IsDebuggingEnabled);
|
||||
var formatting = GlobalSettings.DebugMode ? Formatting.Indented : Formatting.None;
|
||||
return new JsonNetResult { Data = gridConfig.EditorsConfig.Editors, Formatting = Formatting.Indented };
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns the JavaScript object representing the static server variables javascript object
|
||||
@@ -271,7 +268,7 @@ namespace Umbraco.Web.Editors
|
||||
return JavaScript(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult ExternalLogin(string provider, string redirectUrl = null)
|
||||
@@ -341,10 +338,10 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used by Default and AuthorizeUpgrade to render as per normal if there's no external login info,
|
||||
/// Used by Default and AuthorizeUpgrade to render as per normal if there's no external login info,
|
||||
/// otherwise process the external login info.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <returns></returns>
|
||||
private async Task<ActionResult> RenderDefaultOrProcessExternalLoginAsync(
|
||||
Func<ActionResult> defaultResponse,
|
||||
Func<ActionResult> externalSignInResponse)
|
||||
@@ -384,9 +381,9 @@ namespace Umbraco.Web.Editors
|
||||
ExternalSignInAutoLinkOptions autoLinkOptions = null;
|
||||
|
||||
//Here we can check if the provider associated with the request has been configured to allow
|
||||
// new users (auto-linked external accounts). This would never be used with public providers such as
|
||||
// new users (auto-linked external accounts). This would never be used with public providers such as
|
||||
// Google, unless you for some reason wanted anybody to be able to access the backend if they have a Google account
|
||||
// .... not likely!
|
||||
// .... not likely!
|
||||
var authType = OwinContext.Authentication.GetExternalAuthenticationTypes().FirstOrDefault(x => x.AuthenticationType == loginInfo.Login.LoginProvider);
|
||||
if (authType == null)
|
||||
{
|
||||
@@ -401,10 +398,10 @@ namespace Umbraco.Web.Editors
|
||||
var user = await UserManager.FindAsync(loginInfo.Login);
|
||||
if (user != null)
|
||||
{
|
||||
//TODO: It might be worth keeping some of the claims associated with the ExternalLoginInfo, in which case we
|
||||
// wouldn't necessarily sign the user in here with the standard login, instead we'd update the
|
||||
//TODO: It might be worth keeping some of the claims associated with the ExternalLoginInfo, in which case we
|
||||
// wouldn't necessarily sign the user in here with the standard login, instead we'd update the
|
||||
// UseUmbracoBackOfficeExternalCookieAuthentication extension method to have the correct provider and claims factory,
|
||||
// ticket format, etc.. to create our back office user including the claims assigned and in this method we'd just ensure
|
||||
// ticket format, etc.. to create our back office user including the claims assigned and in this method we'd just ensure
|
||||
// that the ticket is created and stored and that the user is logged in.
|
||||
|
||||
var shouldSignIn = true;
|
||||
@@ -477,7 +474,7 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
autoLinkUser.AddRole(userGroup.Alias);
|
||||
}
|
||||
|
||||
|
||||
//call the callback if one is assigned
|
||||
if (autoLinkOptions.OnAutoLinking != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user