Skip to content
This repository was archived by the owner on Apr 19, 2023. It is now read-only.

Commit 9cdea09

Browse files
🐛 Specify IP address when adding member, add module
1 parent e314375 commit 9cdea09

5 files changed

Lines changed: 22 additions & 5 deletions

File tree

src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { JwtAuthGuard } from './modules/auth/jwt-auth.guard';
1111
import { ScopesGuard } from './modules/auth/scope.guard';
1212
import { EmailModule } from './modules/email/email.module';
1313
import { EmailsModule } from './modules/emails/emails.module';
14+
import { GeolocationModule } from './modules/geolocation/geolocation.module';
1415
import { GroupsModule } from './modules/groups/groups.module';
1516
import { MultiFactorAuthenticationModule } from './modules/multi-factor-authentication/multi-factor-authentication.module';
1617
import { PrismaModule } from './modules/prisma/prisma.module';
@@ -39,6 +40,7 @@ import { UsersModule } from './modules/users/users.module';
3940
GroupsModule,
4041
MultiFactorAuthenticationModule,
4142
ApprovedSubnetsModule,
43+
GeolocationModule,
4244
],
4345
providers: [
4446
{

src/modules/auth/auth.module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ConfigModule } from '@nestjs/config';
33
import { JwtModule } from '@nestjs/jwt';
44
import { PassportModule } from '@nestjs/passport';
55
import { ApprovedSubnetsModule } from '../approved-subnets/approved-subnets.module';
6+
import { ApprovedSubnetsService } from '../approved-subnets/approved-subnets.service';
67
import { EmailModule } from '../email/email.module';
78
import { GeolocationModule } from '../geolocation/geolocation.module';
89
import { PrismaModule } from '../prisma/prisma.module';
@@ -28,6 +29,6 @@ import { JwtStrategy } from './jwt.strategy';
2829
],
2930
controllers: [AuthController],
3031
exports: [AuthService],
31-
providers: [AuthService, JwtStrategy],
32+
providers: [AuthService, JwtStrategy, ApprovedSubnetsService],
3233
})
3334
export class AuthModule {}

src/modules/emails/emails.module.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { Module } from '@nestjs/common';
22
import { ConfigModule } from '@nestjs/config';
33
import { JwtModule } from '@nestjs/jwt';
4+
import { ApprovedSubnetsService } from '../approved-subnets/approved-subnets.service';
45
import { AuthService } from '../auth/auth.service';
56
import { EmailModule } from '../email/email.module';
7+
import { GeolocationService } from '../geolocation/geolocation.service';
68
import { PrismaModule } from '../prisma/prisma.module';
79
import { PwnedModule } from '../pwned/pwned.module';
810
import { TokensModule } from '../tokens/tokens.module';
@@ -22,6 +24,12 @@ import { EmailsService } from './emails.service';
2224
}),
2325
],
2426
controllers: [EmailController],
25-
providers: [EmailsService, UsersService, AuthService],
27+
providers: [
28+
EmailsService,
29+
UsersService,
30+
AuthService,
31+
GeolocationService,
32+
ApprovedSubnetsService,
33+
],
2634
})
2735
export class EmailsModule {}

src/modules/memberships/memberships-group.controller.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
Controller,
44
Delete,
55
Get,
6+
Ip,
67
Param,
78
ParseIntPipe,
89
Patch,
@@ -29,10 +30,11 @@ export class GroupMembershipController {
2930
@Post()
3031
@Scopes('group-{groupId}:write-membership')
3132
async create(
33+
@Ip() ip: string,
3234
@Param('groupId', ParseIntPipe) groupId: number,
3335
@Body() data: CreateGroupMembershipDto,
3436
): Promise<Expose<memberships>> {
35-
return this.membershipsService.createGroupMembership(groupId, data);
37+
return this.membershipsService.createGroupMembership(ip, groupId, data);
3638
}
3739

3840
@Get()

src/modules/memberships/memberships.service.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,14 +135,18 @@ export class MembershipsService {
135135
});
136136
}
137137

138-
async createGroupMembership(groupId: number, data: CreateMembershipInput) {
138+
async createGroupMembership(
139+
ipAddress: string,
140+
groupId: number,
141+
data: CreateMembershipInput,
142+
) {
139143
const emailSafe = safeEmail(data.email);
140144
let user = this.prisma.expose(
141145
await this.prisma.users.findFirst({
142146
where: { emails: { some: { emailSafe } } },
143147
}),
144148
);
145-
if (!user) user = await this.auth.register(data);
149+
if (!user) user = await this.auth.register(ipAddress, data);
146150
return this.prisma.memberships.create({
147151
data: {
148152
role: data.role,

0 commit comments

Comments
 (0)