mirror of
https://github.com/bitwarden/server.git
synced 2025-04-10 07:38:13 -05:00
Checked Emergency Access access type on access initiation (#1160)
* also updated the View method * removed old code * naming refactor * used the right type * also checked PasswordAsync() * also checked GetPolicies()
This commit is contained in:
parent
499c30a805
commit
f8940e4be5
@ -248,8 +248,7 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
||||||
|
|
||||||
if (emergencyAccess == null || emergencyAccess.GranteeId != requestingUser.Id ||
|
if (!IsValidRequest(emergencyAccess, requestingUser, EmergencyAccessType.Takeover))
|
||||||
emergencyAccess.Status != EmergencyAccessStatusType.RecoveryApproved)
|
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Emergency Access not valid.");
|
throw new BadRequestException("Emergency Access not valid.");
|
||||||
}
|
}
|
||||||
@ -267,8 +266,7 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
||||||
|
|
||||||
if (emergencyAccess == null || emergencyAccess.GranteeId != requestingUser.Id ||
|
if (!IsValidRequest(emergencyAccess, requestingUser, EmergencyAccessType.Takeover))
|
||||||
emergencyAccess.Status != EmergencyAccessStatusType.RecoveryApproved)
|
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Emergency Access not valid.");
|
throw new BadRequestException("Emergency Access not valid.");
|
||||||
}
|
}
|
||||||
@ -282,8 +280,7 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
||||||
|
|
||||||
if (emergencyAccess == null || emergencyAccess.GranteeId != requestingUser.Id ||
|
if (!IsValidRequest(emergencyAccess, requestingUser, EmergencyAccessType.Takeover))
|
||||||
emergencyAccess.Status != EmergencyAccessStatusType.RecoveryApproved)
|
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Emergency Access not valid.");
|
throw new BadRequestException("Emergency Access not valid.");
|
||||||
}
|
}
|
||||||
@ -340,8 +337,7 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
var emergencyAccess = await _emergencyAccessRepository.GetByIdAsync(id);
|
||||||
|
|
||||||
if (emergencyAccess == null || emergencyAccess.GranteeId != requestingUser.Id ||
|
if (!IsValidRequest(emergencyAccess, requestingUser, EmergencyAccessType.View))
|
||||||
emergencyAccess.Status != EmergencyAccessStatusType.RecoveryApproved)
|
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Emergency Access not valid.");
|
throw new BadRequestException("Emergency Access not valid.");
|
||||||
}
|
}
|
||||||
@ -362,5 +358,12 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
return string.IsNullOrWhiteSpace(user.Name) ? user.Email : user.Name;
|
return string.IsNullOrWhiteSpace(user.Name) ? user.Email : user.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsValidRequest(EmergencyAccess availibleAccess, User requestingUser, EmergencyAccessType requestedAccessType) {
|
||||||
|
return availibleAccess != null &&
|
||||||
|
availibleAccess.GranteeId == requestingUser.Id &&
|
||||||
|
availibleAccess.Status == EmergencyAccessStatusType.RecoveryApproved &&
|
||||||
|
availibleAccess.Type == requestedAccessType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user