mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding events to user audit trail event provider.
This commit is contained in:
@@ -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">
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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>
|
@@ -5,5 +5,5 @@
|
||||
}
|
||||
|
||||
<section class="event-user">
|
||||
<span>@userName</span>
|
||||
<span>@T("User: {0}", userName)</span>
|
||||
</section>
|
@@ -5,5 +5,5 @@
|
||||
}
|
||||
|
||||
<section class="event-user">
|
||||
<span>@userName</span>
|
||||
<span>@T("User: {0}", userName)</span>
|
||||
</section>
|
Reference in New Issue
Block a user