vgquotes/Src/VideoGameQuotes.Api/User.cs

33 lines
970 B
C#

using System;
using Portoa.Logging;
using Portoa.Persistence;
using Portoa.Security;
namespace VideoGameQuotes.Api {
public class User : Entity<User, int>, IPasswordProtected {
private readonly IPasswordProtected passwordProtector = new NullAllowingPasswordProtector();
public User() {
Created = DateTime.UtcNow;
}
public virtual DateTime Created { get; set; }
public virtual string Username { get; set; }
public virtual string IpAddress { get; set; }
public virtual UserGroup Group { get; set; }
public virtual void ChangePassword([DoNotLog]string newPassword) {
passwordProtector.ChangePassword(newPassword);
}
public virtual bool VerifyPassword([DoNotLog]string potentialPassword) {
return passwordProtector.VerifyPassword(potentialPassword);
}
}
public static class UserExtensions {
public static string GetUsernameOrIp(this User user) {
return user.Username ?? user.IpAddress;
}
}
}