fix and update

This commit is contained in:
lendry
2026-07-01 16:26:43 +03:00
parent f7c01a3963
commit ee8aaf9889
9 changed files with 50 additions and 8 deletions

View File

@@ -1,5 +1,6 @@
import { BadRequestException, Injectable, UnauthorizedException } from '@nestjs/common';
import { PrismaService } from '../infra/prisma.service';
import { MediaService } from './media.service';
import { OAuthCoreService } from './oauth-core.service';
import { SessionService } from './session.service';
import { SettingsService } from './settings.service';
@@ -11,7 +12,8 @@ export class FedcmService {
private readonly prisma: PrismaService,
private readonly session: SessionService,
private readonly oauthCore: OAuthCoreService,
private readonly settings: SettingsService
private readonly settings: SettingsService,
private readonly media: MediaService
) {}
async getAccounts(userId: string, sessionId: string) {
@@ -35,6 +37,9 @@ export class FedcmService {
.map((item) => item.client.clientId);
const givenName = user.displayName.trim().split(/\s+/)[0] || user.displayName;
const picture = await this.media.createFedcmAvatarUrl(user.id);
const email = user.email?.trim() || undefined;
const tel = user.phone?.trim() || undefined;
return {
accounts: [
@@ -42,8 +47,9 @@ export class FedcmService {
id: user.id,
name: user.displayName,
given_name: givenName,
email: user.email ?? undefined,
picture: user.avatarUrl ?? undefined,
email,
picture,
tel,
approved_clients: approvedClients
}
]

View File

@@ -68,6 +68,25 @@ export class MediaService {
return { userId, hasAvatar: true };
}
async createFedcmAvatarUrl(userId: string): Promise<string | undefined> {
const user = await this.prisma.user.findUnique({ where: { id: userId } });
if (!user) {
return undefined;
}
const legacyUrl = user.avatarUrl?.trim();
if (legacyUrl) {
return legacyUrl;
}
if (!user.avatarStorageKey) {
return undefined;
}
const { accessUrl } = await this.createStreamAccessUrl(user.avatarStorageKey, userId);
return accessUrl;
}
async getAvatarAccessUrl(requesterId: string, targetUserId: string) {
const user = await this.prisma.user.findUnique({ where: { id: targetUserId } });
if (!user?.avatarStorageKey) {