U4-10439 Email validation in installer, User and Member editor need to be the same

This commit is contained in:
Sebastiaan Janssen
2017-09-26 15:23:47 +02:00
parent 78e5d6d3ad
commit 8a52865d22
6 changed files with 30 additions and 16 deletions

View File

@@ -195,6 +195,12 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return GetOptionalTextElement("loginBackgroundImage", string.Empty); }
}
[ConfigurationProperty("emailRegex")]
internal InnerTextConfigurationElement<string> EmailRegex
{
get { return GetOptionalTextElement("emailRegex", "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"); }
}
string IContentSection.NotificationEmailAddress
{
get { return Notifications.NotificationEmailAddress; }
@@ -357,6 +363,11 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
string IContentSection.LoginBackgroundImage
{
get { return LoginBackgroundImage; }
}
string IContentSection.EmailRegex
{
get { return EmailRegex; }
}
}
}

View File

@@ -74,6 +74,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
bool EnablePropertyValueConverters { get; }
string LoginBackgroundImage { get; }
string LoginBackgroundImage { get; }
string EmailRegex { get; }
}
}

View File

@@ -8,6 +8,7 @@ using System.Web;
using System.Web.Configuration;
using System.Web.Hosting;
using System.Web.Security;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
@@ -677,10 +678,7 @@ namespace Umbraco.Core.Security
internal static bool IsEmailValid(string email)
{
const string pattern = @"^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|"
+ @"([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)"
+ @"@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$";
var pattern = UmbracoConfig.For.UmbracoSettings().Content.EmailRegex;
return Regex.IsMatch(email, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
}

View File

@@ -47,8 +47,8 @@ function valEmail(valEmailExpression) {
angular.module('umbraco.directives.validation')
.directive("valEmail", valEmail)
.factory('valEmailExpression', function () {
//NOTE: This is the fixed regex which is part of the newer angular
var emailRegex = new RegExp(Umbraco.Sys.ServerVariables.umbracoSettings.emailRegex, "i");
return {
EMAIL_REGEXP: /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i
EMAIL_REGEXP: /^[^@\s]+@[^@\s]+\.[^@\s]+$/i
};
});

View File

@@ -18,7 +18,7 @@
</umb-load-indicator>
<div ng-if="!vm.loading" class="umb-packages-view-wrapper" style="padding: 0;">
<div class="umb-package-details">
<div class="umb-package-details__main-content">
@@ -30,17 +30,19 @@
<umb-box-content class="block-form">
<umb-control-group label="@general_email" required="true">
<input
type="email"
localize="placeholder"
placeholder="@placeholders_enteremail"
class="input-block-level"
<input
type="text"
localize="placeholder"
placeholder="@placeholders_enteremail"
class="input-block-level"
ng-model="vm.user.email"
umb-auto-focus name="email"
required
required
val-email
val-server-field="Email" />
<span class="help-inline" val-msg-for="email" val-toggle-msg="required"><localize key="general_required">Required</localize></span>
<span class="help-inline" val-msg-for="email" val-toggle-msg="valServerField"></span>
<span class="help-inline" val-msg-for="email" val-toggle-msg="valServerField"></span>
</umb-control-group>
<umb-control-group label="@general_username" ng-if="!vm.usernameIsEmail" required="true">
@@ -51,7 +53,7 @@
class="input-block-level"
ng-model="vm.user.username"
umb-auto-focus name="username"
required
required
val-server-field="Username" />
<span class="help-inline" val-msg-for="username" val-toggle-msg="required"><localize key="general_required">Required</localize></span>
<span class="help-inline" val-msg-for="username" val-toggle-msg="valServerField"></span>

View File

@@ -287,6 +287,7 @@ namespace Umbraco.Web.Editors
},
{"keepUserLoggedIn", UmbracoConfig.For.UmbracoSettings().Security.KeepUserLoggedIn},
{"usernameIsEmail", UmbracoConfig.For.UmbracoSettings().Security.UsernameIsEmail},
{"emailRegex", UmbracoConfig.For.UmbracoSettings().Content.EmailRegex},
{"cssPath", IOHelper.ResolveUrl(SystemDirectories.Css).TrimEnd('/')},
{"allowPasswordReset", UmbracoConfig.For.UmbracoSettings().Security.AllowPasswordReset},
{"loginBackgroundImage", UmbracoConfig.For.UmbracoSettings().Content.LoginBackgroundImage},