1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 15:42:48 -05:00

add timestamps to user table for security related events (#2660)

* add timestamps to user table for security related events

* ef migrations

* fix lint problems

* formatting

* add missing namespace back

* move `now` up some

* review fixes

* add missing view rebuild to migration script
This commit is contained in:
Kyle Spearrin
2023-02-02 14:39:57 -05:00
committed by GitHub
parent 0ce95ec147
commit 7e74695afc
18 changed files with 6970 additions and 13 deletions

View File

@ -65,6 +65,10 @@ public class User : ITableObject<Guid>, ISubscriber, IStorable, IStorableSubscri
public bool UnknownDeviceVerificationEnabled { get; set; }
[MaxLength(7)]
public string AvatarColor { get; set; }
public DateTime? LastPasswordChangeDate { get; set; }
public DateTime? LastKdfChangeDate { get; set; }
public DateTime? LastKeyRotationDate { get; set; }
public DateTime? LastEmailChangeDate { get; set; }
public void SetNewId()
{

View File

@ -561,10 +561,13 @@ public class UserService : UserManager<User>, IUserService, IDisposable
return result;
}
var now = DateTime.UtcNow;
user.Key = key;
user.Email = newEmail;
user.EmailVerified = true;
user.RevisionDate = user.AccountRevisionDate = DateTime.UtcNow;
user.RevisionDate = user.AccountRevisionDate = now;
user.LastEmailChangeDate = now;
await _userRepository.ReplaceAsync(user);
if (user.Gateway == GatewayType.Stripe)
@ -618,7 +621,9 @@ public class UserService : UserManager<User>, IUserService, IDisposable
return result;
}
user.RevisionDate = user.AccountRevisionDate = DateTime.UtcNow;
var now = DateTime.UtcNow;
user.RevisionDate = user.AccountRevisionDate = now;
user.LastPasswordChangeDate = now;
user.Key = key;
user.MasterPasswordHint = passwordHint;
@ -845,7 +850,9 @@ public class UserService : UserManager<User>, IUserService, IDisposable
return result;
}
user.RevisionDate = user.AccountRevisionDate = DateTime.UtcNow;
var now = DateTime.UtcNow;
user.RevisionDate = user.AccountRevisionDate = now;
user.LastKdfChangeDate = now;
user.Key = key;
user.Kdf = kdf;
user.KdfIterations = kdfIterations;
@ -870,7 +877,9 @@ public class UserService : UserManager<User>, IUserService, IDisposable
if (await CheckPasswordAsync(user, masterPassword))
{
user.RevisionDate = user.AccountRevisionDate = DateTime.UtcNow;
var now = DateTime.UtcNow;
user.RevisionDate = user.AccountRevisionDate = now;
user.LastKeyRotationDate = now;
user.SecurityStamp = Guid.NewGuid().ToString();
user.Key = key;
user.PrivateKey = privateKey;