public object Any(RegenerateApiKeys request)
{
var apiKeyAuth = this.Request.AssertValidApiKeyRequest();
if (string.IsNullOrEmpty(request.Environment) && apiKeyAuth.Environments.Length != 1)
throw new ArgumentNullException("Environment");
var env = request.Environment ?? apiKeyAuth.Environments[0];
var apiRepo = (IManageApiKeys)HostContext.AppHost.GetAuthRepository(base.Request);
using (apiRepo as IDisposable)
{
var userId = GetSession().UserAuthId;
var updateKeys = apiRepo.GetUserApiKeys(userId)
.Where(x => x.Environment == env)
.ToList();
updateKeys.Each(x => x.CancelledDate = DateTime.UtcNow);
var newKeys = apiKeyAuth.GenerateNewApiKeys(userId, env);
updateKeys.AddRange(newKeys);
apiRepo.StoreAll(updateKeys);
return new RegenerateApiKeysResponse
{
Results = newKeys.Map(k => new UserApiKey
{
Key = k.Id,
KeyType = k.KeyType,
ExpiryDate = k.ExpiryDate,
})
};
}
}
}