diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs
index 9de3faefe8..6bfcd5bdbe 100644
--- a/src/Umbraco.Web/Editors/UsersController.cs
+++ b/src/Umbraco.Web/Editors/UsersController.cs
@@ -9,18 +9,22 @@ using System.Web;
using System.Web.Http;
using AutoMapper;
using ClientDependency.Core;
+using Microsoft.AspNet.Identity;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
+using Umbraco.Core.Models.Identity;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
+using Umbraco.Core.Security;
using Umbraco.Core.Services;
using Umbraco.Web.Models.ContentEditing;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
using Umbraco.Web.WebApi.Filters;
using Constants = Umbraco.Core.Constants;
+using IUser = Umbraco.Core.Models.Membership.IUser;
namespace Umbraco.Web.Editors
{
@@ -47,6 +51,8 @@ namespace Umbraco.Web.Editors
{
}
+
+
///
/// Returns a list of the sizes of gravatar urls for the user or null if the gravatar server cannot be reached
///
@@ -229,7 +235,7 @@ namespace Umbraco.Web.Editors
///
/// This will email the user an invite and generate a token that will be validated in the email
///
- public UserDisplay PostInviteUser(UserInvite userSave)
+ public async Task PostInviteUser(UserInvite userSave)
{
if (userSave == null) throw new ArgumentNullException("userSave");
@@ -256,6 +262,14 @@ namespace Umbraco.Web.Editors
Services.UserService.Save(user);
+ //TODO: Send an email!
+ await UserManager.EmailService.SendAsync(new IdentityMessage
+ {
+ Body = "You have been invited to the Umbraco Back Office!",
+ Destination = userSave.,
+ Subject = "You have been invited to the Umbraco Back Office!"
+ });
+
return Mapper.Map(user);
}
diff --git a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
index bd940a9c57..cbcb7ab634 100644
--- a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
@@ -48,14 +48,15 @@ namespace Umbraco.Web.Models.Mapping
});
config.CreateMap()
- .ConstructUsing(invite => new User(invite.Name, invite.Email, invite.Email, Guid.NewGuid().ToString("N")))
+ .ConstructUsing(invite => new User(invite.Name, invite.Email, invite.Email, Guid.NewGuid().ToString("N")))
+ //generate a token for the invite
+ .ForMember(user => user.SecurityStamp, expression => expression.MapFrom(x => (DateTime.Now + x.Email).ToSHA1()))
.ForMember(user => user.Id, expression => expression.Ignore())
.ForMember(user => user.Avatar, expression => expression.Ignore())
.ForMember(user => user.SessionTimeout, expression => expression.Ignore())
.ForMember(user => user.StartContentIds, expression => expression.Ignore())
.ForMember(user => user.StartMediaIds, expression => expression.Ignore())
- .ForMember(user => user.Language, expression => expression.Ignore())
- .ForMember(user => user.SecurityStamp, expression => expression.Ignore())
+ .ForMember(user => user.Language, expression => expression.Ignore())
.ForMember(user => user.ProviderUserKey, expression => expression.Ignore())
.ForMember(user => user.Username, expression => expression.Ignore())
.ForMember(user => user.RawPasswordValue, expression => expression.Ignore())
diff --git a/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs b/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
index 9577e840e1..8328cfa393 100644
--- a/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
+++ b/src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
@@ -5,6 +5,8 @@ using Umbraco.Core.Configuration;
using Umbraco.Web.Security;
using Umbraco.Web.WebApi.Filters;
using umbraco.BusinessLogic;
+using Umbraco.Core.Models.Identity;
+using Umbraco.Core.Security;
namespace Umbraco.Web.WebApi
{
@@ -34,6 +36,12 @@ namespace Umbraco.Web.WebApi
{
}
+ private BackOfficeUserManager _userManager;
+ protected BackOfficeUserManager UserManager
+ {
+ get { return _userManager ?? (_userManager = TryGetOwinContext().Result.GetBackOfficeUserManager()); }
+ }
+
private bool _userisValidated = false;
///