Merge pull request #9901 from backstage/freben/resolver-dox

form refs properly in resolver docs
This commit is contained in:
Fredrik Adelöw
2022-03-02 13:56:35 +01:00
committed by GitHub
+15 -4
View File
@@ -27,6 +27,8 @@ sign-in resolvers and set them for any of the Authentication providers inside
`@backstage/plugin-auth-backend` plugin.
```ts
import { DEFAULT_NAMESPACE, stringifyEntityRef } from '@backstage/catalog-model';
export default async function createPlugin({
...
}: PluginEnvironment): Promise<Router> {
@@ -38,22 +40,31 @@ export default async function createPlugin({
resolver: async ({ profile: { email } }, ctx) => {
// Call a custom validator function that checks that the email is
// valid and on our own company's domain, and throws an Error if it
// isn't
// isn't.
// TODO: Implement this function
validateEmail(email);
// List of entity references that denote the identity and
// membership of the user
const ent = [];
const ent: string[] = [];
// Let's use the username in the email ID as the user's default
// unique identifier inside Backstage.
const [id] = email.split('@');
ent.push(`User:default/${id}`)
ent.push(stringifyEntityRef({
kind: 'User',
namespace: DEFAULT_NAMESPACE,
name: id,
}));
// Let's call the internal LDAP provider to get a list of groups
// that the user belongs to, and add those to the list as well
const ldapGroups = await getLdapGroups(email);
ldapGroups.forEach(group => ent.push(`Group:default/${group}`))
ldapGroups.forEach(group => ent.push(stringifyEntityRef({
kind: 'Group',
namespace: DEFAULT_NAMESPACE,
name: group,
})));
// Issue the token containing the entity claims
const token = await ctx.tokenIssuer.issueToken({