public Credential CreateGlobalCredential(GlobalCredentialViewModel request) { if (!String.IsNullOrEmpty(request.PasswordSecret)) { //get encryption key var orgId = _organizationManager.GetDefaultOrganization().Id; _organizationSettingRepository.ForceIgnoreSecurity(); var organizationKey = _organizationSettingRepository.Find(null, o => o.OrganizationId == orgId).Items.FirstOrDefault().EncryptionKey; var applicationKey = _configuration.GetSection("ApplicationEncryption:Key").Value; var encryptionKey = applicationKey + organizationKey; //generate salt request.HashSalt = CredentialHasher.CreateSalt(32); //create 32 byte salt //generate hash request.PasswordHash = CredentialHasher.GenerateSaltedHash(request.PasswordSecret, request.HashSalt); // Encrypt and decrypt the sample text via the Aes256CbcEncrypter class. request.PasswordSecret = CredentialsEncrypter.Encrypt(request.PasswordSecret, encryptionKey); } Credential credential = new Credential(); credential = request.Map(request); CredentialNameAvailability(credential); if (!ValidateStartAndEndDates(credential)) { throw new EntityOperationException("Start and End Date are not valid"); } return(credential); }
public async Task <IActionResult> Post([FromBody] GlobalCredentialViewModel request) { try { Credential credential = _credentialManager.CreateGlobalCredential(request); var result = await base.PostEntity(credential); await _webhookPublisher.PublishAsync("Credentials.NewCredentialCreated", credential.Id.ToString(), credential.Name).ConfigureAwait(false); return(result); } catch (Exception ex) { return(ex.GetActionResult()); } }