summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-03-06 17:05:14 +0900
committerGitHub <noreply@github.com>2025-03-06 08:05:14 +0000
commit22228b6756ff534a94930774d9b6744dfb5961fe (patch)
tree4d555e637756c0e40310a078d20c2ba040fce043 /packages/backend/src
parentfix(backend): S3互換オブジェクトストレージでファイルのア... (diff)
downloadmisskey-22228b6756ff534a94930774d9b6744dfb5961fe.tar.gz
misskey-22228b6756ff534a94930774d9b6744dfb5961fe.tar.bz2
misskey-22228b6756ff534a94930774d9b6744dfb5961fe.zip
enhance: OAuth2 (IndieAuth) でロゴが提供されている場合は表示するように (#15578)
* enhance: OAuthでロゴが提供されている場合は表示するように * Update Changelog * refactor * fix * fix test
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/server/oauth/OAuth2ProviderService.ts17
-rw-r--r--packages/backend/src/server/web/views/oauth.pug2
2 files changed, 16 insertions, 3 deletions
diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
index e065c451f1..cdd7102666 100644
--- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts
+++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
@@ -95,6 +95,7 @@ interface ClientInformation {
id: string;
redirectUris: string[];
name: string;
+ logo: string | null;
}
// https://indieauth.spec.indieweb.org/#client-information-discovery
@@ -124,11 +125,19 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
redirectUris.push(...[...fragment.querySelectorAll<HTMLLinkElement>('link[rel=redirect_uri][href]')].map(el => el.href));
let name = id;
+ let logo: string | null = null;
if (text) {
const microformats = mf2(text, { baseUrl: res.url });
- const nameProperty = microformats.items.find(item => item.type?.includes('h-app') && item.properties.url.includes(id))?.properties.name[0];
- if (typeof nameProperty === 'string') {
- name = nameProperty;
+ const correspondingProperties = microformats.items.find(item => item.type?.includes('h-app') && item.properties.url.includes(id));
+ if (correspondingProperties) {
+ const nameProperty = correspondingProperties.properties.name?.[0];
+ if (typeof nameProperty === 'string') {
+ name = nameProperty;
+ }
+ const logoProperty = correspondingProperties.properties.logo?.[0];
+ if (typeof logoProperty === 'string') {
+ logo = logoProperty;
+ }
}
}
@@ -136,6 +145,7 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
id,
redirectUris: redirectUris.map(uri => new URL(uri, res.url).toString()),
name: typeof name === 'string' ? name : id,
+ logo,
};
} catch (err) {
console.error(err);
@@ -379,6 +389,7 @@ export class OAuth2ProviderService {
return await reply.view('oauth', {
transactionId: oauth2.transactionID,
clientName: oauth2.client.name,
+ clientLogo: oauth2.client.logo,
scope: oauth2.req.scope.join(' '),
});
});
diff --git a/packages/backend/src/server/web/views/oauth.pug b/packages/backend/src/server/web/views/oauth.pug
index 1470dbfbdf..4195ccc3a3 100644
--- a/packages/backend/src/server/web/views/oauth.pug
+++ b/packages/backend/src/server/web/views/oauth.pug
@@ -6,4 +6,6 @@ block meta
//- XXX: Remove navigation bar in auth page?
meta(name='misskey:oauth:transaction-id' content=transactionId)
meta(name='misskey:oauth:client-name' content=clientName)
+ if clientLogo
+ meta(name='misskey:oauth:client-logo' content=clientLogo)
meta(name='misskey:oauth:scope' content=scope)