Adding events to user audit trail event provider.

This commit is contained in:
sfmskywalker
2014-06-02 22:30:25 +02:00
parent de90b60603
commit 138fe3da4f
7 changed files with 52 additions and 5 deletions

View File

@@ -127,6 +127,7 @@
<Content Include="Views\AuditTrailEvent-Role-RoleRenamed.cshtml" />
<Content Include="Views\AuditTrailEvent-User.cshtml" />
<Content Include="Views\EditorTemplates\Parts.AuditTrailSettings.cshtml" />
<Content Include="Views\AuditTrailEvent-User-LoginFailed..cshtml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">

View File

@@ -3,8 +3,24 @@ using Orchard.Security;
namespace Orchard.AuditTrail.Providers.User {
public interface IUserEventHandler : IEventHandler {
/// <summary>
/// Called after a user has changed password
/// Called after a user has logged in.
/// </summary>
void LoggedIn(IUser user);
/// <summary>
/// Called when a user explicitly logs out (as opposed to one whose session cookie simply expires).
/// </summary>
void LoggedOut(IUser user);
/// <summary>
/// Called when a login attempt failed.
/// </summary>
void LogInFailed(string userNameOrEmail, string password);
/// <summary>
/// Called after a user has changed password.
/// </summary>
void ChangedPassword(IUser user);
}

View File

@@ -3,10 +3,16 @@ using Orchard.AuditTrail.Services;
namespace Orchard.AuditTrail.Providers.User {
public class UserAuditTrailEventProvider : AuditTrailEventProviderBase {
public const string LoggedIn = "LoggedIn";
public const string LoggedOut = "LoggedOut";
public const string LogInFailed = "LogInFailed";
public const string PasswordChanged = "PasswordChanged";
public override void Describe(DescribeContext context) {
context.For("User", T("User"))
.Event(this, LoggedIn, T("Logged in"), T("A user was successfully logged in."), enableByDefault: true)
.Event(this, LoggedOut, T("Logged out"), T("A user explicitly logged out."), enableByDefault: true)
.Event(this, LogInFailed, T("Login failed"), T("An attempt to login failed due to an incorrect username/email and/or password."), enableByDefault: true)
.Event(this, PasswordChanged, T("Password changed"), T("A user's password was changed."), enableByDefault: true);
}
}

View File

@@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Globalization;
using Orchard.AuditTrail.Services;
using Orchard.Security;
@@ -13,6 +12,22 @@ namespace Orchard.AuditTrail.Providers.User {
_wca = wca;
}
public void LoggedIn(IUser user) {
RecordAuditTrail(UserAuditTrailEventProvider.LoggedIn, user);
}
public void LoggedOut(IUser user) {
RecordAuditTrail(UserAuditTrailEventProvider.LoggedOut, user);
}
public void LogInFailed(string userNameOrEmail, string password) {
var eventData = new Dictionary<string, object> {
{"UserName", userNameOrEmail}
};
_auditTrailManager.Record<UserAuditTrailEventProvider>(UserAuditTrailEventProvider.LogInFailed, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "user", eventFilterData: userNameOrEmail);
}
public void ChangedPassword(IUser user) {
RecordAuditTrail(UserAuditTrailEventProvider.PasswordChanged, user);
}
@@ -28,7 +43,7 @@ namespace Orchard.AuditTrail.Providers.User {
{"UserName", user.UserName}
};
_auditTrailManager.Record<UserAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "user", eventFilterData: user.Id.ToString(CultureInfo.InvariantCulture));
_auditTrailManager.Record<UserAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "user", eventFilterData: user.UserName);
}
}
}

View File

@@ -0,0 +1,9 @@
@using Orchard.AuditTrail.Helpers
@{
var eventData = (IDictionary<string, object>) Model.EventData;
var userName = eventData.Get<string>("UserName");
}
<section class="event-user">
<span>@T("Attempted user name: {0}", userName)</span>
</section>

View File

@@ -5,5 +5,5 @@
}
<section class="event-user">
<span>@userName</span>
<span>@T("User: {0}", userName)</span>
</section>

View File

@@ -5,5 +5,5 @@
}
<section class="event-user">
<span>@userName</span>
<span>@T("User: {0}", userName)</span>
</section>