Exemple #1
0
        public async Task <EmergencyAccess> InviteAsync(User invitingUser, string email, EmergencyAccessType type, int waitTime)
        {
            if (!await _userService.CanAccessPremium(invitingUser))
            {
                throw new BadRequestException("Not a premium user.");
            }

            var emergencyAccess = new EmergencyAccess
            {
                GrantorId    = invitingUser.Id,
                Email        = email.ToLowerInvariant(),
                Status       = EmergencyAccessStatusType.Invited,
                Type         = type,
                WaitTimeDays = waitTime,
                CreationDate = DateTime.UtcNow,
                RevisionDate = DateTime.UtcNow,
            };

            await _emergencyAccessRepository.CreateAsync(emergencyAccess);

            await SendInviteAsync(emergencyAccess, NameOrEmail(invitingUser));

            return(emergencyAccess);
        }
 private bool IsValidRequest(EmergencyAccess availibleAccess, User requestingUser, EmergencyAccessType requestedAccessType)
 {
     return(availibleAccess != null &&
            availibleAccess.GranteeId == requestingUser.Id &&
            availibleAccess.Status == EmergencyAccessStatusType.RecoveryApproved &&
            availibleAccess.Type == requestedAccessType);
 }