From bf5cfef15fe643cd3837e1f5fae772cd94b38352 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Thu, 16 Jun 2011 13:19:42 -0700 Subject: [PATCH] SantiagoIT's contribution to add an approved event to the user event handler, with a slight modification to where it's raised in the membership service on user creation. --HG-- branch : contributions --- .../Modules/Orchard.Users/Controllers/AdminController.cs | 8 +++++++- .../Modules/Orchard.Users/Events/IUserEventHandler.cs | 7 ++++++- .../Modules/Orchard.Users/Services/MembershipService.cs | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs index e0cd96257..395d29524 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs @@ -4,13 +4,13 @@ using System.Text.RegularExpressions; using System.Web.Mvc; using System.Web.Routing; using Orchard.ContentManagement; -using Orchard.Core.Common.Models; using Orchard.Core.Contents.Controllers; using Orchard.Core.Settings.Models; using Orchard.DisplayManagement; using Orchard.Localization; using Orchard.Security; using Orchard.UI.Notify; +using Orchard.Users.Events; using Orchard.Users.Models; using Orchard.Users.Services; using Orchard.Users.ViewModels; @@ -24,6 +24,7 @@ namespace Orchard.Users.Controllers { public class AdminController : Controller, IUpdateModel { private readonly IMembershipService _membershipService; private readonly IUserService _userService; + private readonly IEnumerable _userEventHandlers; private readonly ISiteService _siteService; public AdminController( @@ -31,10 +32,12 @@ namespace Orchard.Users.Controllers { IMembershipService membershipService, IUserService userService, IShapeFactory shapeFactory, + IEnumerable userEventHandlers, ISiteService siteService) { Services = services; _membershipService = membershipService; _userService = userService; + _userEventHandlers = userEventHandlers; _siteService = siteService; T = NullLocalizer.Instance; @@ -311,6 +314,9 @@ namespace Orchard.Users.Controllers { if ( user != null ) { user.As().RegistrationStatus = UserStatus.Approved; Services.Notifier.Information(T("User {0} approved", user.UserName)); + foreach (var userEventHandler in _userEventHandlers) { + userEventHandler.Approved(user); + } } return RedirectToAction("Index"); diff --git a/src/Orchard.Web/Modules/Orchard.Users/Events/IUserEventHandler.cs b/src/Orchard.Web/Modules/Orchard.Users/Events/IUserEventHandler.cs index d6bbbb634..6823c332e 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Events/IUserEventHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Events/IUserEventHandler.cs @@ -19,7 +19,7 @@ namespace Orchard.Users.Events { void LoggedIn(IUser user); /// - /// Called when a user explicitly logs out (as opposed to one whos session cookie simply expires) + /// Called when a user explicitly logs out (as opposed to one whose session cookie simply expires) /// void LoggedOut(IUser user); @@ -42,6 +42,11 @@ namespace Orchard.Users.Events { /// Called after a user has confirmed their email address /// void ConfirmedEmail(IUser user); + + /// + /// Called after a user has been approved + /// + void Approved(IUser user); } } diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs index 6af141c6e..1ddf75af7 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs @@ -76,6 +76,9 @@ namespace Orchard.Users.Services { foreach ( var userEventHandler in _userEventHandlers ) { userEventHandler.Created(userContext); + if (user.RegistrationStatus == UserStatus.Approved) { + userEventHandler.Approved(user); + } } if ( registrationSettings != null && registrationSettings.UsersAreModerated && registrationSettings.NotifyModeration && !createUserParams.IsApproved ) {