Skip to content

Commit 8d7855b

Browse files
added AuthGuard to CUD pages and gateways
1 parent 1683b08 commit 8d7855b

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

src/gateway/gateway.gateway.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
import { Socket, Server } from 'socket.io';
66
import { Gateway } from './gateway.interface';
77
import { GatewayService } from './gateway.service';
8+
import { UseGuards } from '@nestjs/common';
9+
import { AuthGuard } from '../guards/auth.guard';
810

911
@WebSocketGateway()
1012
export class GatewayGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
@@ -17,6 +19,7 @@ export class GatewayGateway implements OnGatewayInit, OnGatewayConnection, OnGat
1719
return { event: 'panel.gateways', data: gateways };
1820
}
1921

22+
@UseGuards(AuthGuard)
2023
@SubscribeMessage('panel.gateways.delete')
2124
async deleteForPanel(@MessageBody() body: {name: string}) {
2225
const deletionSuccessful = await this.gatewayService.delete(body.name);
@@ -26,15 +29,19 @@ export class GatewayGateway implements OnGatewayInit, OnGatewayConnection, OnGat
2629
this.server.emit('gateway.delete', body.name);
2730
}
2831

32+
@UseGuards(AuthGuard)
2933
@SubscribeMessage('panel.gateways.add')
3034
async addForPanel(@MessageBody() gateway: Gateway) {
35+
delete (gateway as any).auth;
3136
await this.gatewayService.add(gateway);
3237
this.server.emit('panel.gateways', await this.gatewayService.get());
3338
this.server.emit('gateway.add', gateway);
3439
}
3540

41+
@UseGuards(AuthGuard)
3642
@SubscribeMessage('panel.gateways.update')
3743
async updateForPanel(@MessageBody() gateway: Gateway) {
44+
delete (gateway as any).auth;
3845
const updateSuccessful = await this.gatewayService.update(gateway);
3946
if (!updateSuccessful) return;
4047
this.server.emit('panel.gateways', await this.gatewayService.get());

src/guards/auth.guard.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { AuthGuard } from './auth.guard';
2+
3+
describe('AuthGuard', () => {
4+
it('should be defined', () => {
5+
expect(new AuthGuard()).toBeDefined();
6+
});
7+
});

src/guards/auth.guard.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
2+
3+
@Injectable()
4+
export class AuthGuard implements CanActivate {
5+
canActivate(
6+
context: ExecutionContext,
7+
): boolean {
8+
const data = context.switchToWs().getData();
9+
const allowed = data.auth && data.auth === process.env.AUTH_SECRET;
10+
return allowed;
11+
}
12+
}

src/page/page.gateway.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
import { Server, Socket } from 'socket.io';
66
import { Page } from './page.interface';
77
import { PageService } from './page.service';
8+
import { UseGuards } from '@nestjs/common';
9+
import { AuthGuard } from '../guards/auth.guard';
810

911
@WebSocketGateway()
1012
export class PageGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
@@ -17,6 +19,7 @@ export class PageGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
1719
return { event: 'panel.pages', data: pages };
1820
}
1921

22+
@UseGuards(AuthGuard)
2023
@SubscribeMessage('panel.pages.delete')
2124
async deleteForPanel(@MessageBody() body: { name: string }) {
2225
if (!body.name) return;
@@ -27,16 +30,20 @@ export class PageGateway implements OnGatewayInit, OnGatewayConnection, OnGatewa
2730
this.server.emit('page.delete', body.name);
2831
}
2932

33+
@UseGuards(AuthGuard)
3034
@SubscribeMessage('panel.pages.add')
3135
async addForPanel(@MessageBody() page: Page) {
36+
delete (page as any).auth;
3237
if (!page.name) return;
3338
await this.pageService.add(page);
3439
this.server.emit('panel.pages', await this.pageService.get());
3540
this.server.emit('page.update', page);
3641
}
3742

43+
@UseGuards(AuthGuard)
3844
@SubscribeMessage('panel.pages.update')
3945
async updateForPanel(@MessageBody() page: Page) {
46+
delete (page as any).auth;
4047
if (!page.name) return;
4148
const updateSuccessful = await this.pageService.update(page);
4249
if (!updateSuccessful) return;

0 commit comments

Comments
 (0)