From 43e8596768d67fcaf30aab248570ef82ca6b1e32 Mon Sep 17 00:00:00 2001 From: Anand Chowdhary Date: Tue, 3 Nov 2020 19:13:37 +0530 Subject: [PATCH] :recycle: Use Gravatar as user profile picture --- src/modules/auth/auth.service.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts index 9fe40f6d7..d84a73035 100644 --- a/src/modules/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -12,6 +12,8 @@ import { JwtService } from '@nestjs/jwt'; import { Authenticator } from '@otplib/core'; import { emails, MfaMethod, users } from '@prisma/client'; import { compare, hash } from 'bcrypt'; +import { createHash } from 'crypto'; +import got from 'got/dist/source'; import anonymize from 'ip-anonymize'; import { authenticator } from 'otplib'; import qrcode from 'qrcode'; @@ -169,6 +171,18 @@ export class AuthService { luminosity: 'light', })}&color=000000`; + for await (const emailString of [email, emailSafe]) { + const md5Email = createHash('md5').update(emailString).digest('hex'); + try { + const img = await got( + `https://www.gravatar.com/avatar/${md5Email}?d=404`, + { responseType: 'buffer' }, + ); + if (img.body.byteLength > 1) + data.profilePictureUrl = `https://www.gravatar.com/avatar/${md5Email}?d=mp`; + } catch (error) {} + } + const user = await this.prisma.users.create({ data: { ...data,