private static void UpdateUserGrants(this IQueryContext context, DbObjectType objectType, ObjectName objectName, User user, User granter, Privileges privileges, bool withOption) { // Revoke existing privs on this object for this grantee context.RevokeAllFromUserOn(objectType, objectName, user, granter, withOption); if (privileges != Privileges.None) { // The system grants table. var grantTable = context.GetMutableTable(SystemSchema.UserGrantsTableName); // Add the grant to the grants table. var rdat = grantTable.NewRow(); rdat.SetValue(0, (int)privileges); rdat.SetValue(1, (int)objectType); rdat.SetValue(2, objectName.FullName); rdat.SetValue(3, user.Name); rdat.SetValue(4, withOption); rdat.SetValue(5, granter.Name); grantTable.AddRow(rdat); user.CacheObjectGrant(objectName, privileges); } }
public static Privileges GetUserGrants(this IQueryContext context, User user, DbObjectType objectType, ObjectName objectName, bool includePublic = false, bool onlyOption = false) { Privileges privileges; if (!user.TryGetObjectGrant(objectName, out privileges)) { privileges = context.GetUserGrants(user.Name, objectType, objectName); user.CacheObjectGrant(objectName, privileges); } return privileges; }