chore: manually committing auth module to remoter
This commit is contained in:
72
packages/hoppscotch-backend/src/user/user.service.ts
Normal file
72
packages/hoppscotch-backend/src/user/user.service.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from 'src/prisma/prisma.service';
|
||||
import * as O from 'fp-ts/Option';
|
||||
import { User } from './user.model';
|
||||
|
||||
@Injectable()
|
||||
export class UserService {
|
||||
constructor(private prisma: PrismaService) {}
|
||||
|
||||
async findUserByEmail(email: string) {
|
||||
try {
|
||||
const user: User = await this.prisma.user.findUniqueOrThrow({
|
||||
where: {
|
||||
email: email,
|
||||
},
|
||||
});
|
||||
return O.some(user);
|
||||
} catch (error) {
|
||||
return O.none;
|
||||
}
|
||||
}
|
||||
|
||||
async createUser(email: string) {
|
||||
const createdUser = await this.prisma.user.create({
|
||||
data: {
|
||||
email: email,
|
||||
accounts: {
|
||||
create: {
|
||||
provider: 'magic',
|
||||
providerAccountId: email,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return createdUser;
|
||||
}
|
||||
|
||||
async createUserSSO(accessToken, refreshToken, profile) {
|
||||
const createdUser = await this.prisma.user.create({
|
||||
data: {
|
||||
name: profile.displayName,
|
||||
email: profile.emails[0].value,
|
||||
image: profile.photos[0].value,
|
||||
accounts: {
|
||||
create: {
|
||||
provider: profile.provider,
|
||||
providerAccountId: profile.id,
|
||||
providerRefreshToken: refreshToken,
|
||||
providerAccessToken: accessToken,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return createdUser;
|
||||
}
|
||||
|
||||
async createProviderAccount(user, accessToken, refreshToken, profile) {
|
||||
const createdProvider = await this.prisma.account.create({
|
||||
data: {
|
||||
userId: user.id,
|
||||
provider: profile.provider,
|
||||
providerAccountId: profile.id,
|
||||
providerRefreshToken: refreshToken ? refreshToken : null,
|
||||
providerAccessToken: accessToken ? accessToken : null,
|
||||
},
|
||||
});
|
||||
|
||||
return createdProvider;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user