docs/releases/v1.23.0-next.1-changelog.md
@oriflame/backstage-plugin-score-card to ^0.8.0.RouteResolutionsApi.defaultTarget pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter.SidebarIntro component as it was providing instructions for features that do not exist, along with IntroCard. If you were relying on this component and want to keep using it you can refer to the original implementations of SidebarIntro and IntroCard.createExtensionTree API.RouteResolutionsApi.ComponentsApi implementation now uses the ComponentRef ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of @backstage/frontend-plugin-api would break the app.defaultTarget pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter.app instead of root.RouteResolutionsApi as a replacement for the routing context.ExtensionBoundary, allowing them to inherit the outer context instead.defaultTarget pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter.x-ratelimit-remaining to look for in case of a 403 code is returned@backstage/plugin-auth-backend-module-aws-alb-provider module package.28610f4: BREAKING: catalogApi and permissionsApi are now a requirement to be passed through to the createRouter function.
You can fix the typescript issues by passing through the required dependencies like the below diff shows:
import {
createRouter,
AzureSitesApi,
} from '@backstage/plugin-azure-sites-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
+ const catalogClient = new CatalogClient({
+ discoveryApi: env.discovery,
+ });
return await createRouter({
logger: env.logger,
azureSitesApi: AzureSitesApi.fromConfig(env.config),
+ catalogApi: catalogClient,
+ permissionsApi: env.permissions,
});
}
5a409bb: Azure Sites start and stop action is now protected with the Permissions framework.
The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity.
// packages/backend/src/plugins/permission.ts
import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common';
...
class TestPermissionPolicy implements PermissionPolicy {
async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise<PolicyDecision> {
if (isPermission(request.permission, azureSitesActionPermission)) {
return createCatalogConditionalDecision(
request.permission,
catalogConditions.isEntityOwner({
claims: user?.identity.ownershipEntityRefs ?? [],
}),
);
}
...
return {
result: AuthorizeResult.ALLOW,
};
}
...
}
Updated dependencies
queryEntities when the limit is 0.AzureUrlReader not working with wildcard pathsEntityPicker to only select kind metadata.name and metadata.namespace by default to improve performance on larger datasets.ScaffolderPageContextMenu to ActionsPage, ListTaskPage, and TemplateEditorPage so that you can more easily navigate between these pagesfetch:template, fetch:plain and fetch:file when interacting with upstream integrationsNODE_OPTIONS messaging for --no-node-snapshot to the SecureTemplater in order to get better messaging at runtimescaffolder-backend will now throw an error at startup if the --no-node-snapshot option was
not provided to node.trimBlocks and lstripBlocks options in the fetch:template actionfetch:template, fetch:plain and fetch:file when interacting with upstream integrationstrimBlocks and lstripBlocks options in the fetch:template actionLink) and text output (Description).ScaffolderPageContextMenu to ActionsPage, ListTaskPage, and TemplateEditorPage so that you can more easily navigate between these pagesui:schema was replaced with an empty object if dependencies is defined<code> tags to avoid word break.defaultScopes for Bitbucket auth from invalid team to account.token in readTree, readUrl and searchx-ratelimit-remaining to look for in case of a 403 code is returnedalpha support in dynamic plugins support: the alpha sub-package should not be required for the dynamic plugins to be loaded under the new backend system.token in readTree, readUrl and search__backstage-autodetected-plugins__.js to be written when using experimental module discovery.defaultScopes for Bitbucket auth from invalid team to account.NotImplementedError when an API implementation cannot be found.RouteResolutionsApi.defaultScopes for Bitbucket auth from invalid team to account.AdrSearchResultListItem. Update size and font to match other SearchResultListItem.@backstage/plugin-auth-backend-module-aws-alb-provider module package.extractPartsFromAsset that resulted in a leading . being removed from the path in an otherwise valid path (ex. .assets/image.png). The leading . will now only be moved for paths beginning with ./.5a409bb: Azure Sites start and stop action is now protected with the Permissions framework.
The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity.
// packages/backend/src/plugins/permission.ts
import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common';
...
class TestPermissionPolicy implements PermissionPolicy {
async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise<PolicyDecision> {
if (isPermission(request.permission, azureSitesActionPermission)) {
return createCatalogConditionalDecision(
request.permission,
catalogConditions.isEntityOwner({
claims: user?.identity.ownershipEntityRefs ?? [],
}),
);
}
...
return {
result: AuthorizeResult.ALLOW,
};
}
...
}
Updated dependencies
5a409bb: Azure Sites start and stop action is now protected with the Permissions framework.
The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity.
// packages/backend/src/plugins/permission.ts
import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common';
...
class TestPermissionPolicy implements PermissionPolicy {
async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise<PolicyDecision> {
if (isPermission(request.permission, azureSitesActionPermission)) {
return createCatalogConditionalDecision(
request.permission,
catalogConditions.isEntityOwner({
claims: user?.identity.ownershipEntityRefs ?? [],
}),
);
}
...
return {
result: AuthorizeResult.ALLOW,
};
}
...
}
Updated dependencies
CatalogSearchResultListItemCatalogClient.getEntitiesByRefs() to reduce the number of backend requests from plugin catalog-graphPinnipedHelper class to enable authentication to Kubernetes clusters through Pinniped@trendyol-js/openstack-swift-sdk