- PermissionsGuard lehnt Routen ohne @RequirePermissions/@AllowAnyAuthenticated
ab. API-Keys umgehen keine Rechteprüfung mehr, sondern gelten nur auf
Routen mit @AllowApiKey (Paperless-Webhook, externer Upload, checksum,
Agent-Routen des Etikettendrucks).
- Rechte für 24 bisher offene Routen ergänzt, u.a. paperless/documents
(nur Admin), paperless/documents/:id und Kontonummern (Posteingang/
manuell), webhook/status (Admin). routen-rechte.spec.ts prüft alle Routen.
- Etiketten-Agent: printed/error nur für abgeholte, offene Jobs (bedingtes
Update, sonst 409) – ein gedruckter Job kann seine Nummer nicht mehr
freigeben. Feldwerte nur aus den Eingabefeldern der Vorlage ({number}
nicht vorgebbar) und URL-kodiert in GET-/Callback-URLs.
- PUT paperless/inbox/:id ignoriert Freigabe (CF15) und Zahlung (CF16)
ohne die jeweilige Rolle (Funktionstrennung).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
911 B
TypeScript
33 lines
911 B
TypeScript
import { Controller, Post, Request, HttpCode } from '@nestjs/common';
|
|
import { DailyDigestService } from './daily-digest.service';
|
|
import { AllowAnyAuthenticated } from '../auth/permissions.decorator';
|
|
|
|
@Controller('api/daily-digest')
|
|
export class DailyDigestController {
|
|
constructor(private readonly dailyDigestService: DailyDigestService) {}
|
|
|
|
@Post('send-now')
|
|
@AllowAnyAuthenticated()
|
|
@HttpCode(200)
|
|
async sendNow(@Request() req: any) {
|
|
const { userId, email, preferredUsername, groups } = req.user;
|
|
if (!email) {
|
|
return {
|
|
ok: false,
|
|
error: 'Keine E-Mail-Adresse im Benutzerprofil gefunden.',
|
|
};
|
|
}
|
|
try {
|
|
await this.dailyDigestService.sendDigestForUser(
|
|
userId,
|
|
email,
|
|
preferredUsername,
|
|
groups,
|
|
);
|
|
return { ok: true };
|
|
} catch (err: any) {
|
|
return { ok: false, error: err.message };
|
|
}
|
|
}
|
|
}
|