Assign user to workspace on signin
This commit is contained in:
40
server/src/user/user.service.ts
Normal file
40
server/src/user/user.service.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { HasuraInsertEvent, TrackedHasuraEventHandler } from '@golevelup/nestjs-hasura';
|
||||
import { UserRepository} from "./user.repository"
|
||||
import { Injectable, Response } from '@nestjs/common';
|
||||
import { WorkspaceRepository } from './workspace.repository';
|
||||
import { response } from 'express';
|
||||
|
||||
interface User {
|
||||
id: number;
|
||||
email: string;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class UserService {
|
||||
constructor(private repository: UserRepository, private workspaceRepository: WorkspaceRepository) {}
|
||||
|
||||
@TrackedHasuraEventHandler({
|
||||
triggerName: 'user-created',
|
||||
tableName: 'users',
|
||||
schema: 'auth',
|
||||
definition: { type: 'insert' },
|
||||
})
|
||||
async handleUserCreated(evt: HasuraInsertEvent<User>) {
|
||||
const workspace = await this.workspaceRepository.findWorkspaceByDomainName(
|
||||
{ where: { domain_name:evt.event.data.new.email.split('@')[1] }
|
||||
});
|
||||
|
||||
console.log(workspace)
|
||||
|
||||
if (!workspace) {
|
||||
return;
|
||||
}
|
||||
|
||||
const workspaceMember = await this.repository.upsertWorkspaceMember({
|
||||
data: {
|
||||
user_id: String(evt.event.data.new.id),
|
||||
workspace_id: workspace.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user