From 5ae9aaa0d6e86d62ad1aa75e4551465c5e32a6df Mon Sep 17 00:00:00 2001 From: Schalli Date: Fri, 25 Sep 2026 08:50:06 +0200 Subject: [PATCH] feat(260925-bow): neue Benutzer bekommen die laufende Version eingetragen - UserService.create (Admin-Anlage, beide LDAP-Wege) und AdminSeedService setzen lastSeenReleaseVersion = getRunningRelease(), null auf dev Co-Authored-By: Claude Opus 5.5 (1M context) --- apps/api/src/user/admin-seed.service.ts | 5 +++++ apps/api/src/user/user.service.ts | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/apps/api/src/user/admin-seed.service.ts b/apps/api/src/user/admin-seed.service.ts index e742433..73a9ab5 100644 --- a/apps/api/src/user/admin-seed.service.ts +++ b/apps/api/src/user/admin-seed.service.ts @@ -2,6 +2,7 @@ import { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import * as argon2 from 'argon2'; import { GroupsService } from '../groups/groups.service'; +import { getRunningRelease } from '../health/app-version'; import { forTenant } from '../prisma/prisma-tenant.extension'; import { prismaErrorCode } from '../prisma/prisma-error'; import { PrismaService } from '../prisma/prisma.service'; @@ -116,6 +117,10 @@ export class AdminSeedService implements OnApplicationBootstrap { tenantId: tenant.id, mustChangePassword: forceChange, isActive: true, + // quick-260925-bow (D-04): laufende freigegebene Version, damit der + // Erst-Administrator kein "Was ist neu"-Fenster mit Altlasten sieht; + // null auf dev-Staenden. + lastSeenReleaseVersion: getRunningRelease(), }, }); } catch (err: unknown) { diff --git a/apps/api/src/user/user.service.ts b/apps/api/src/user/user.service.ts index ae64136..7df0863 100644 --- a/apps/api/src/user/user.service.ts +++ b/apps/api/src/user/user.service.ts @@ -2,6 +2,7 @@ import { ConflictException, Injectable, Logger } from '@nestjs/common'; import * as argon2 from 'argon2'; import type { User } from '@prisma/client'; import { GroupsService } from '../groups/groups.service'; +import { getRunningRelease } from '../health/app-version'; import { forTenant } from '../prisma/prisma-tenant.extension'; import { prismaErrorCode } from '../prisma/prisma-error'; import { PrismaService } from '../prisma/prisma.service'; @@ -140,6 +141,14 @@ export class UserService { * endet damit bei JEDEM Aufrufer an dieser einen Stelle. Die Meldung * nennt WEDER den Halter NOCH dessen Mandanten, weil das sonst eine * Aussage ueber einen fremden Mandanten waere (T-DAS-08). + * + * "Was ist neu"-Fenster (quick-260925-bow, D-04): neue Benutzer (Admin- + * Anlage, AD-Abgleich und AD-Import) bekommen hier die laufende + * freigegebene Version (`getRunningRelease()`) als + * `lastSeenReleaseVersion` eingetragen, damit sie kein Fenster mit + * Aenderungen aus der Zeit vor ihrem Konto sehen; auf Staenden ohne + * freigegebene Version (`dev`) `null`. Der Wert ist eine Eigenschaft des + * Servers, kein Parameter dieser Methode. */ async create(data: { username: string; @@ -164,6 +173,7 @@ export class UserService { ...rest, username: rest.username.toLowerCase(), passwordHash: password ? await argon2.hash(password) : null, + lastSeenReleaseVersion: getRunningRelease(), }, }); } catch (err: unknown) {