mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-13 17:23:02 -05:00
Fix schema handling in search result of User Management (#2057)
* fix schema filed in search result * fix search for securable
This commit is contained in:
@@ -173,7 +173,8 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
|||||||
res.Add(new SearchResultItem
|
res.Add(new SearchResultItem
|
||||||
{
|
{
|
||||||
Name = obj.Name,
|
Name = obj.Name,
|
||||||
Type = type
|
Type = type,
|
||||||
|
Schema = obj.Schema
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -439,13 +439,52 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static SearchableObject ConvertFromSecurableNameToSearchableObject(string securableName, string type, string database, object connectionInfo)
|
internal static SearchableObject ConvertFromSecurableNameToSearchableObject(string securableName, string type, string database, string schema, object connectionInfo)
|
||||||
{
|
{
|
||||||
SearchableObjectType searchableObjectType = ConvertPotentialSqlObjectTypeToSearchableObjectType(type);
|
SearchableObjectType searchableObjectType = ConvertPotentialSqlObjectTypeToSearchableObjectType(type);
|
||||||
|
|
||||||
SearchableObjectTypeDescription desc = SearchableObjectTypeDescription.GetDescription(searchableObjectType);
|
SearchableObjectTypeDescription desc = SearchableObjectTypeDescription.GetDescription(searchableObjectType);
|
||||||
var urn = desc.GetSearchUrn(securableName, true, true);
|
SearchableObjectCollection results = new SearchableObjectCollection();
|
||||||
return SearchableObject.GetSearchableObject(searchableObjectType, connectionInfo, database, securableName);
|
|
||||||
|
if (desc.IsDatabaseObject)
|
||||||
|
{
|
||||||
|
if (desc.IsSchemaObject)
|
||||||
|
{
|
||||||
|
SearchableObject.Search(
|
||||||
|
results,
|
||||||
|
searchableObjectType,
|
||||||
|
connectionInfo,
|
||||||
|
database,
|
||||||
|
securableName,
|
||||||
|
true,
|
||||||
|
schema,
|
||||||
|
true,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SearchableObject.Search(
|
||||||
|
results,
|
||||||
|
searchableObjectType,
|
||||||
|
connectionInfo,
|
||||||
|
database,
|
||||||
|
securableName,
|
||||||
|
true,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SearchableObject.Search(
|
||||||
|
results,
|
||||||
|
searchableObjectType,
|
||||||
|
connectionInfo,
|
||||||
|
securableName,
|
||||||
|
true,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
SearchableObject result = (results.Count != 0) ? results[0] : null;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void SendToServerPermissionChanges(bool exists, string name, SecurablePermissions[] securablePermissions, Principal principal, CDataContainer dataContainer, string database)
|
internal static void SendToServerPermissionChanges(bool exists, string name, SecurablePermissions[] securablePermissions, Principal principal, CDataContainer dataContainer, string database)
|
||||||
@@ -464,7 +503,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
|||||||
{
|
{
|
||||||
foreach (SecurablePermissions secPerm in securablePermissions)
|
foreach (SecurablePermissions secPerm in securablePermissions)
|
||||||
{
|
{
|
||||||
var securable = principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, dataContainer.ConnectionInfo));
|
var securable = principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, secPerm.Schema, dataContainer.ConnectionInfo));
|
||||||
var states = principal.GetPermissionStates(securable);
|
var states = principal.GetPermissionStates(securable);
|
||||||
ApplyPermissionStates(secPerm.Permissions, states);
|
ApplyPermissionStates(secPerm.Permissions, states);
|
||||||
}
|
}
|
||||||
@@ -474,7 +513,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
|||||||
var securables = principal.GetSecurables(new SecurableComparer(SecurableComparer.DefaultSortingOrder, true));
|
var securables = principal.GetSecurables(new SecurableComparer(SecurableComparer.DefaultSortingOrder, true));
|
||||||
foreach (SecurablePermissions secPerm in securablePermissions)
|
foreach (SecurablePermissions secPerm in securablePermissions)
|
||||||
{
|
{
|
||||||
var securable = FindMatchedSecurable(securables, secPerm.Name) ?? principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, dataContainer.ConnectionInfo));
|
var securable = FindMatchedSecurable(securables, secPerm.Name) ?? principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, secPerm.Schema, dataContainer.ConnectionInfo));
|
||||||
var states = principal.GetPermissionStates(securable);
|
var states = principal.GetPermissionStates(securable);
|
||||||
ApplyPermissionStates(secPerm.Permissions, states);
|
ApplyPermissionStates(secPerm.Permissions, states);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user