mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-24 02:51:41 -05:00
added handler to fetch credentials (#656)
* added handler to fetch credentials * added credentials to security service rather than agent service
This commit is contained in:
committed by
Karl Burtram
parent
626ce35440
commit
c0e5225187
@@ -122,6 +122,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
|||||||
this.ServiceHost.SetRequestHandler(CreateAgentScheduleRequest.Type, HandleCreateAgentScheduleRequest);
|
this.ServiceHost.SetRequestHandler(CreateAgentScheduleRequest.Type, HandleCreateAgentScheduleRequest);
|
||||||
this.ServiceHost.SetRequestHandler(UpdateAgentScheduleRequest.Type, HandleUpdateAgentScheduleRequest);
|
this.ServiceHost.SetRequestHandler(UpdateAgentScheduleRequest.Type, HandleUpdateAgentScheduleRequest);
|
||||||
this.ServiceHost.SetRequestHandler(DeleteAgentScheduleRequest.Type, HandleDeleteAgentScheduleRequest);
|
this.ServiceHost.SetRequestHandler(DeleteAgentScheduleRequest.Type, HandleDeleteAgentScheduleRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region "Jobs Handlers"
|
#region "Jobs Handlers"
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ namespace Microsoft.SqlTools.ServiceLayer.Security.Contracts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class CredentialInfo
|
public class CredentialInfo
|
||||||
{
|
{
|
||||||
public int Id { get; }
|
public int Id { get; set; }
|
||||||
public string Identity { get; set; }
|
public string Identity { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public DateTime DateLastModified { get; }
|
public DateTime DateLastModified { get; set; }
|
||||||
public DateTime CreateDate { get; }
|
public DateTime CreateDate { get; set; }
|
||||||
public string ProviderName { get; set; }
|
public string ProviderName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,32 @@ using Microsoft.SqlTools.Utility;
|
|||||||
|
|
||||||
namespace Microsoft.SqlTools.ServiceLayer.Security.Contracts
|
namespace Microsoft.SqlTools.ServiceLayer.Security.Contracts
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Get Credential parameters
|
||||||
|
/// </summary>
|
||||||
|
public class GetCredentialsParams: GeneralRequestDetails
|
||||||
|
{
|
||||||
|
public string OwnerUri { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetCredentialsResult: ResultStatus
|
||||||
|
{
|
||||||
|
public CredentialInfo[] Credentials { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SQL Agent Credentials request type
|
||||||
|
/// </summary>
|
||||||
|
public class GetCredentialsRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Request definition
|
||||||
|
/// </summary>
|
||||||
|
public static readonly
|
||||||
|
RequestType<GetCredentialsParams, GetCredentialsResult> Type =
|
||||||
|
RequestType<GetCredentialsParams, GetCredentialsResult>.Create("security/credentials");
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create Credential parameters
|
/// Create Credential parameters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Security
|
|||||||
this.ServiceHost.SetRequestHandler(CreateCredentialRequest.Type, HandleCreateCredentialRequest);
|
this.ServiceHost.SetRequestHandler(CreateCredentialRequest.Type, HandleCreateCredentialRequest);
|
||||||
this.ServiceHost.SetRequestHandler(UpdateCredentialRequest.Type, HandleUpdateCredentialRequest);
|
this.ServiceHost.SetRequestHandler(UpdateCredentialRequest.Type, HandleUpdateCredentialRequest);
|
||||||
this.ServiceHost.SetRequestHandler(DeleteCredentialRequest.Type, HandleDeleteCredentialRequest);
|
this.ServiceHost.SetRequestHandler(DeleteCredentialRequest.Type, HandleDeleteCredentialRequest);
|
||||||
|
this.ServiceHost.SetRequestHandler(GetCredentialsRequest.Type, HandleGetCredentialsRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -137,6 +138,49 @@ namespace Microsoft.SqlTools.ServiceLayer.Security
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handle request to get all credentials
|
||||||
|
/// </summary>
|
||||||
|
internal async Task HandleGetCredentialsRequest(GetCredentialsParams parameters, RequestContext<GetCredentialsResult> requestContext)
|
||||||
|
{
|
||||||
|
await Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var result = new GetCredentialsResult();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ConnectionInfo connInfo;
|
||||||
|
ConnectionServiceInstance.TryFindConnection(parameters.OwnerUri, out connInfo);
|
||||||
|
CDataContainer dataContainer = CDataContainer.CreateDataContainer(connInfo, databaseExists: true);
|
||||||
|
|
||||||
|
var credentials = dataContainer.Server.Credentials;
|
||||||
|
int credentialsCount = credentials.Count;
|
||||||
|
CredentialInfo[] credentialsInfos = new CredentialInfo[credentialsCount];
|
||||||
|
for (int i = 0; i < credentialsCount; ++i)
|
||||||
|
{
|
||||||
|
credentialsInfos[i] = new CredentialInfo();
|
||||||
|
credentialsInfos[i].Name = credentials[i].Name;
|
||||||
|
credentialsInfos[i].Identity = credentials[i].Identity;
|
||||||
|
credentialsInfos[i].Id = credentials[i].ID;
|
||||||
|
credentialsInfos[i].DateLastModified = credentials[i].DateLastModified;
|
||||||
|
credentialsInfos[i].CreateDate = credentials[i].CreateDate;
|
||||||
|
credentialsInfos[i].ProviderName = credentials[i].ProviderName;
|
||||||
|
}
|
||||||
|
result.Credentials = credentialsInfos;
|
||||||
|
result.Success = true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.Success = false;
|
||||||
|
result.ErrorMessage = ex.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
await requestContext.SendResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Disposes the service
|
/// Disposes the service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user