public async Task SendEmergencyAccessRecoveryReminder(EmergencyAccess emergencyAccess, string initiatingName, string email) { var message = CreateDefaultMessage("Pending Emergency Access Request", email); var remainingTime = DateTime.UtcNow - emergencyAccess.RecoveryInitiatedDate.GetValueOrDefault(); var model = new EmergencyAccessRecoveryViewModel { Name = CoreHelpers.SanitizeForEmail(initiatingName), Action = emergencyAccess.Type.ToString(), DaysLeft = emergencyAccess.WaitTimeDays - Convert.ToInt32((remainingTime).TotalDays), }; await AddMessageContentAsync(message, "EmergencyAccessRecoveryReminder", model); message.Category = "EmergencyAccessRecoveryReminder"; await _mailDeliveryService.SendEmailAsync(message); }
public async Task SendEmergencyAccessInviteEmailAsync(EmergencyAccess emergencyAccess, string name, string token) { var message = CreateDefaultMessage($"Emergency Access Contact Invite", emergencyAccess.Email); var model = new EmergencyAccessInvitedViewModel { Name = CoreHelpers.SanitizeForEmail(name), Email = WebUtility.UrlEncode(emergencyAccess.Email), Id = emergencyAccess.Id.ToString(), Token = WebUtility.UrlEncode(token), WebVaultUrl = _globalSettings.BaseServiceUri.VaultWithHash, SiteName = _globalSettings.SiteName }; await AddMessageContentAsync(message, "EmergencyAccessInvited", model); message.Category = "EmergencyAccessInvited"; await _mailDeliveryService.SendEmailAsync(message); }
public async Task SaveAsync(EmergencyAccess emergencyAccess, Guid savingUserId) { if (emergencyAccess.GrantorId != savingUserId) { throw new BadRequestException("Emergency Access not valid."); } if (emergencyAccess.Type == EmergencyAccessType.Takeover) { var grantor = await _userService.GetUserByIdAsync(emergencyAccess.GrantorId); if (grantor.UsesKeyConnector) { throw new BadRequestException("You cannot use Emergency Access Takeover because you are using Key Connector."); } } await _emergencyAccessRepository.ReplaceAsync(emergencyAccess); }
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 async Task SendInviteAsync(EmergencyAccess emergencyAccess, string invitingUsersName) { var nowMillis = CoreHelpers.ToEpocMilliseconds(DateTime.UtcNow); var token = _dataProtector.Protect($"EmergencyAccessInvite {emergencyAccess.Id} {emergencyAccess.Email} {nowMillis}"); await _mailService.SendEmergencyAccessInviteEmailAsync(emergencyAccess, invitingUsersName, token); }
private async Task SendInviteAsync(EmergencyAccess emergencyAccess, string invitingUsersName) { var token = _dataProtectorTokenizer.Protect(new EmergencyAccessInviteTokenable(emergencyAccess, _globalSettings.OrganizationInviteExpirationHours)); await _mailService.SendEmergencyAccessInviteEmailAsync(emergencyAccess, invitingUsersName, token); }
public Task SendEmergencyAccessRecoveryTimedOut(EmergencyAccess ea, string initiatingName, string email) { return(Task.FromResult(0)); }
public Task SendEmergencyAccessRecoveryReminder(EmergencyAccess emergencyAccess, string initiatingName, string email) { return(Task.FromResult(0)); }
public Task SendEmergencyAccessRecoveryRejected(EmergencyAccess emergencyAccess, string rejectingName, string email) { return(Task.FromResult(0)); }
public Task SendEmergencyAccessRecoveryApproved(EmergencyAccess emergencyAccess, string approvingName, string email) { return(Task.FromResult(0)); }
public Task SendEmergencyAccessInviteEmailAsync(EmergencyAccess emergencyAccess, string name, string token) { return(Task.FromResult(0)); }
public EmergencyAccessInviteTokenable(EmergencyAccess user, int hoursTillExpiration) { Id = user.Id; Email = user.Email; ExpirationDate = DateTime.UtcNow.AddHours(hoursTillExpiration); }