push service

This commit is contained in:
toni
2026-03-13 21:54:43 +01:00
parent 71ca4d81e1
commit 29c6828dd1
23 changed files with 526 additions and 137 deletions
@@ -0,0 +1,50 @@
import express from "express";
import { Body, Controller, Post, Query, Request, Route, Security, SuccessResponse } from "tsoa";
import type { PushSubscriptionCreateArgs as PushSubscriptionCreateArgsDto } from "../dtos/pushSubscription.js";
import { inject } from "../infrastructure/di/injector.js";
import { KC_SECURITY_NAME } from "../services/keycloak/user/keycloak-user.js";
import { PushService } from "../services/push/pushService.js";
@Route("push")
export class PushContoller extends Controller {
private readonly pushService = inject(PushService);
@Post("add")
@Security(KC_SECURITY_NAME)
@SuccessResponse("200", "OK")
public async addSubscription(
@Body() subscription: PushSubscriptionCreateArgsDto,
@Request() request: express.Request,
): Promise<void> {
return await this.pushService.storeSubscription(subscription, request, request.res);
}
@Post('reset')
@Security(KC_SECURITY_NAME)
@SuccessResponse('200', 'OK')
public async resetSubscriptions(
@Request() request: express.Request
): Promise<void>{
return await this.pushService.reset(request);
}
@Post('clearSingle')
@Security(KC_SECURITY_NAME)
@SuccessResponse("200", 'OK')
public async clearSubscription(
@Request() request: express.Request,
@Query() clientId: string
):Promise<void>{
await this.pushService.clearSubscription(clientId, request);
}
@Post('test-publish')
@Security(KC_SECURITY_NAME)
@SuccessResponse("200", "OK")
public async publishTestMessage(
@Request() request: express.Request
): Promise<void>{
this.pushService.sendtestNotification(request);
}
}
@@ -13,11 +13,11 @@ import { Claim } from "../dtos/claim.js";
import { type User } from "../dtos/user.js";
import { inject } from "../infrastructure/di/index.js";
import { KC_SECURITY_NAME } from "../services/keycloak/user/index.js";
import { UserService } from "../services/userService.js";
import { UserAdminService } from "../services/userAdminService.js";
@Route("users")
export class UsersController extends Controller {
private readonly userService = inject(UserService);
private readonly userService = inject(UserAdminService);
@Security(KC_SECURITY_NAME, [Claim.UserAdmin])
@SuccessResponse("200", "OK")