From 94becba176d008cbf2707fc654f6b0b38bc1d4df Mon Sep 17 00:00:00 2001 From: Karl Burtram Date: Wed, 8 Mar 2023 16:45:46 -0800 Subject: [PATCH] User handler bugs WIP (#1925) --- .../Security/UserActions.cs | 33 +------------------ .../Utility/DatabaseUtils.cs | 32 ++++++++++++++++++ 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Security/UserActions.cs b/src/Microsoft.SqlTools.ServiceLayer/Security/UserActions.cs index fbec0a65..b8bdc012 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Security/UserActions.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Security/UserActions.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; -using System.Data; using System.Threading.Tasks; using System.Xml; using Microsoft.SqlServer.Management.Common; @@ -199,7 +198,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Security SupportSQLAuthentication = true, Languages = new string[] { }, Schemas = currentUserPrototype.SchemaNames.ToArray(), - Logins = LoadSqlLogins(serverConnection), + Logins = DatabaseUtils.LoadSqlLogins(serverConnection), DatabaseRoles = currentUserPrototype.DatabaseRoleNames.ToArray() }; @@ -400,36 +399,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Security } } } - - private string[] LoadSqlLogins(ServerConnection serverConnection) - { - return LoadItems(serverConnection, "Server/Login"); - } - - private string[] LoadItems(ServerConnection serverConnection, string urn) - { - List items = new List(); - Request req = new Request(); - req.Urn = urn; - req.ResultType = ResultType.IDataReader; - req.Fields = new string[] { "Name" }; - - Enumerator en = new Enumerator(); - using (IDataReader reader = en.Process(serverConnection, req).Data as IDataReader) - { - if (reader != null) - { - string name; - while (reader.Read()) - { - // Get the permission name - name = reader.GetString(0); - items.Add(name); - } - } - } - return items.ToArray(); - } } internal class UserActions : ManagementActionBase diff --git a/src/Microsoft.SqlTools.ServiceLayer/Utility/DatabaseUtils.cs b/src/Microsoft.SqlTools.ServiceLayer/Utility/DatabaseUtils.cs index 8367c4a2..ca86e6bd 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Utility/DatabaseUtils.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Utility/DatabaseUtils.cs @@ -12,6 +12,7 @@ using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlTools.ServiceLayer.Management; using System; using System.Collections.Generic; +using System.Data; using System.IO; using System.Security; @@ -245,5 +246,36 @@ namespace Microsoft.SqlTools.ServiceLayer.Utility dataContainer.Server.ResourceGovernor.Alter(); } } + + public static string[] LoadSqlLogins(ServerConnection serverConnection) + { + return LoadItems(serverConnection, "Server/Login"); + } + + public static string[] LoadItems(ServerConnection serverConnection, string urn) + { + List items = new List(); + Request req = new Request(); + req.Urn = urn; + req.ResultType = ResultType.IDataReader; + req.Fields = new string[] { "Name" }; + + Enumerator en = new Enumerator(); + using (IDataReader reader = en.Process(serverConnection, req).Data as IDataReader) + { + if (reader != null) + { + string name; + while (reader.Read()) + { + // Get the permission name + name = reader.GetString(0); + items.Add(name); + } + } + } + items.Sort(); + return items.ToArray(); + } } }