public async Task <Unit> Handle(RequestForPrivilegeRequest message, CancellationToken cancellationToken) { var privilege = (await _contactQueryRepository.GetAllPrivileges()).Single(p => p.Id == message.PrivilegeId); var requestingContact = await _contactQueryRepository.GetContactById(message.ContactId); var organisation = await _organisationQueryRepository.GetOrganisationByContactId(message.ContactId); var contactsWithUserManagementPrivilege = (await _contactQueryRepository.GetAllContactsIncludePrivileges(organisation.EndPointAssessorOrganisationId)) .Where(c => c.ContactsPrivileges.Any(cp => cp.Privilege.Key == Privileges.ManageUsers && cp.Contact.Status == ContactStatus.Live)).ToList(); if (RequestingUserHasUserManagementPrivilege(contactsWithUserManagementPrivilege, requestingContact)) { await _contactRepository.AddPrivilege(requestingContact.Id, message.PrivilegeId); } else { var emailTemplate = await _mediator.Send(new GetEmailTemplateRequest { TemplateName = "EPAOPermissionsRequested" }, cancellationToken); contactsWithUserManagementPrivilege.ForEach(async contact => { await _mediator.Send(new SendEmailRequest(contact.Email, emailTemplate, new { ServiceName = "Apprenticeship assessment service", Contact = contact.DisplayName, Username = requestingContact.DisplayName, Permission = privilege.UserPrivilege, ServiceTeam = "Apprenticeship assessment service team", LoginLink = _config.ServiceLink })); }); } return(Unit.Value); }
public async Task <IActionResult> AssociateDefaultRolesAndPrivileges([FromBody] Contact contact) { _logger.LogInformation($"Associating roles and privileges to a contact"); var privileges = await _contactQueryRepository.GetAllPrivileges(); await _contactRepository.AssociatePrivilegesWithContact(contact.Id, privileges); return(NoContent()); }
public async Task <IActionResult> GetAllPrivileges() { var privileges = await _contactQueryRepository.GetAllPrivileges(); return(Ok(privileges)); }