public static SharedFolderPermission ResolveSharedFolderAccessPath(this IVault vault, string username, string sharedFolderUid, bool forManageUsers = false, bool forManageRecords = false) { if (string.IsNullOrEmpty(sharedFolderUid)) { return(null); } if (!vault.TryGetSharedFolder(sharedFolderUid, out var sf)) { return(null); } var permissions = sf.UsersPermissions .Where(x => x.UserType == UserType.User && x.UserId == username || x.UserType == UserType.Team && vault.TryGetTeam(x.UserId, out _)) .Where(x => (!forManageUsers || x.ManageUsers) && (!forManageRecords || x.ManageRecords)) .ToArray(); if (permissions.Length <= 0) { return(null); } return(permissions.FirstOrDefault(x => x.UserType == UserType.User) ?? permissions[0]); }