mirror of
https://github.com/bitwarden/server
synced 2025-12-17 00:33:23 +00:00
[PM-12074] - Refactored Index to use UserViewModel (#4797)
* Refactored View and Edit models to have all needed fields.
This commit is contained in:
@@ -1,18 +1,131 @@
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Vault.Entities;
|
||||
|
||||
namespace Bit.Admin.Models;
|
||||
|
||||
public class UserViewModel
|
||||
{
|
||||
public UserViewModel() { }
|
||||
public Guid Id { get; }
|
||||
public string Name { get; }
|
||||
public string Email { get; }
|
||||
public DateTime CreationDate { get; }
|
||||
public DateTime? PremiumExpirationDate { get; }
|
||||
public bool Premium { get; }
|
||||
public short? MaxStorageGb { get; }
|
||||
public bool EmailVerified { get; }
|
||||
public bool TwoFactorEnabled { get; }
|
||||
public DateTime AccountRevisionDate { get; }
|
||||
public DateTime RevisionDate { get; }
|
||||
public DateTime? LastEmailChangeDate { get; }
|
||||
public DateTime? LastKdfChangeDate { get; }
|
||||
public DateTime? LastKeyRotationDate { get; }
|
||||
public DateTime? LastPasswordChangeDate { get; }
|
||||
public GatewayType? Gateway { get; }
|
||||
public string GatewayCustomerId { get; }
|
||||
public string GatewaySubscriptionId { get; }
|
||||
public string LicenseKey { get; }
|
||||
public int CipherCount { get; set; }
|
||||
|
||||
public UserViewModel(User user, IEnumerable<Cipher> ciphers)
|
||||
public UserViewModel(Guid id,
|
||||
string name,
|
||||
string email,
|
||||
DateTime creationDate,
|
||||
DateTime? premiumExpirationDate,
|
||||
bool premium,
|
||||
short? maxStorageGb,
|
||||
bool emailVerified,
|
||||
bool twoFactorEnabled,
|
||||
DateTime accountRevisionDate,
|
||||
DateTime revisionDate,
|
||||
DateTime? lastEmailChangeDate,
|
||||
DateTime? lastKdfChangeDate,
|
||||
DateTime? lastKeyRotationDate,
|
||||
DateTime? lastPasswordChangeDate,
|
||||
GatewayType? gateway,
|
||||
string gatewayCustomerId,
|
||||
string gatewaySubscriptionId,
|
||||
string licenseKey,
|
||||
IEnumerable<Cipher> ciphers)
|
||||
{
|
||||
User = user;
|
||||
Id = id;
|
||||
Name = name;
|
||||
Email = email;
|
||||
CreationDate = creationDate;
|
||||
PremiumExpirationDate = premiumExpirationDate;
|
||||
Premium = premium;
|
||||
MaxStorageGb = maxStorageGb;
|
||||
EmailVerified = emailVerified;
|
||||
TwoFactorEnabled = twoFactorEnabled;
|
||||
AccountRevisionDate = accountRevisionDate;
|
||||
RevisionDate = revisionDate;
|
||||
LastEmailChangeDate = lastEmailChangeDate;
|
||||
LastKdfChangeDate = lastKdfChangeDate;
|
||||
LastKeyRotationDate = lastKeyRotationDate;
|
||||
LastPasswordChangeDate = lastPasswordChangeDate;
|
||||
Gateway = gateway;
|
||||
GatewayCustomerId = gatewayCustomerId;
|
||||
GatewaySubscriptionId = gatewaySubscriptionId;
|
||||
LicenseKey = licenseKey;
|
||||
CipherCount = ciphers.Count();
|
||||
}
|
||||
|
||||
public User User { get; set; }
|
||||
public int CipherCount { get; set; }
|
||||
public static IEnumerable<UserViewModel> MapViewModels(
|
||||
IEnumerable<User> users,
|
||||
IEnumerable<(Guid userId, bool twoFactorIsEnabled)> lookup) =>
|
||||
users.Select(user => MapViewModel(user, lookup));
|
||||
|
||||
public static UserViewModel MapViewModel(User user,
|
||||
IEnumerable<(Guid userId, bool twoFactorIsEnabled)> lookup) =>
|
||||
new(
|
||||
user.Id,
|
||||
user.Name,
|
||||
user.Email,
|
||||
user.CreationDate,
|
||||
user.PremiumExpirationDate,
|
||||
user.Premium,
|
||||
user.MaxStorageGb,
|
||||
user.EmailVerified,
|
||||
IsTwoFactorEnabled(user, lookup),
|
||||
user.AccountRevisionDate,
|
||||
user.RevisionDate,
|
||||
user.LastEmailChangeDate,
|
||||
user.LastKdfChangeDate,
|
||||
user.LastKeyRotationDate,
|
||||
user.LastPasswordChangeDate,
|
||||
user.Gateway,
|
||||
user.GatewayCustomerId ?? string.Empty,
|
||||
user.GatewaySubscriptionId ?? string.Empty,
|
||||
user.LicenseKey ?? string.Empty,
|
||||
Array.Empty<Cipher>());
|
||||
|
||||
public static UserViewModel MapViewModel(User user, bool isTwoFactorEnabled) =>
|
||||
MapViewModel(user, isTwoFactorEnabled, Array.Empty<Cipher>());
|
||||
|
||||
public static UserViewModel MapViewModel(User user, bool isTwoFactorEnabled, IEnumerable<Cipher> ciphers) =>
|
||||
new(
|
||||
user.Id,
|
||||
user.Name,
|
||||
user.Email,
|
||||
user.CreationDate,
|
||||
user.PremiumExpirationDate,
|
||||
user.Premium,
|
||||
user.MaxStorageGb,
|
||||
user.EmailVerified,
|
||||
isTwoFactorEnabled,
|
||||
user.AccountRevisionDate,
|
||||
user.RevisionDate,
|
||||
user.LastEmailChangeDate,
|
||||
user.LastKdfChangeDate,
|
||||
user.LastKeyRotationDate,
|
||||
user.LastPasswordChangeDate,
|
||||
user.Gateway,
|
||||
user.GatewayCustomerId ?? string.Empty,
|
||||
user.GatewaySubscriptionId ?? string.Empty,
|
||||
user.LicenseKey ?? string.Empty,
|
||||
ciphers);
|
||||
|
||||
public static bool IsTwoFactorEnabled(User user,
|
||||
IEnumerable<(Guid userId, bool twoFactorIsEnabled)> twoFactorIsEnabledLookup) =>
|
||||
twoFactorIsEnabledLookup.FirstOrDefault(x => x.userId == user.Id).twoFactorIsEnabled;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user