This backend allows to save user specific settings. All requests need to be
authorized, as the user identifier (userEntityRef
) is resolved using the
authorization token.
Install the backend plugin
# From your Backstage root directory
yarn --cwd packages/backend add @backstage/plugin-user-settings-backend @backstage/plugin-signals-backend
Add the plugin to your backend in packages/backend/src/index.ts
:
backend.add(import('@backstage/plugin-user-settings-backend'));
// The signals backend is technically optional but enables real-time update of user
// settings across different sessions
backend.add(import('@backstage/plugin-signals-backend'));
To make use of the user settings backend, replace the WebStorage
with the
UserSettingsStorage
by using the storageApiRef
.
// packages/app/src/apis.ts
import {
AnyApiFactory,
createApiFactory,
+ discoveryApiRef,
+ fetchApiRef,
errorApiRef,
+ identityApiRef,
+ storageApiRef,
} from '@backstage/core-plugin-api';
+import { UserSettingsStorage } from '@backstage/plugin-user-settings';
+import { signalApiRef } from '@backstage/plugin-signals-react';
export const apis: AnyApiFactory[] = [
+ createApiFactory({
+ api: storageApiRef,
+ deps: {
+ discoveryApi: discoveryApiRef,
+ errorApi: errorApiRef,
+ fetchApi: fetchApiRef,
+ identityApi: identityApiRef,
+ signalApi: signalApiRef, // Optional
+ },
+ factory: deps => UserSettingsStorage.create(deps),
+ }),
];
Use yarn start
to start the local dev environment. To simplify the access to
the API, the token will automatically be set to user:default/john_doe
.
You can change the user by setting a custom Authorization
header. To keep
things simple, the raw Bearer
value will directly be used as user.
Example:
curl --request GET 'http://localhost:7007/user-settings' --header 'Authorization: Bearer user:default/custom-user'