Table of Contents

Class UserModerationService

Namespace
UsluzionicaServer.Services
Assembly
UsluzionicaServer.dll

Deaktivacija i vraćanje naloga, sa SVIM posledicama.

Postoji kao zaseban servis zato što deaktivacija ima tri dela koja moraju da idu zajedno, a zovu je dva pozivaoca (admin ručno i rešavanje prijave). Da je logika prepisana na oba mesta, jedno bi pre ili kasnije zaboravilo jedan deo — i to tiho.

ŠTA JE RANIJE FALILO (zatečeno stanje pre ovog servisa):

  1. IsActive se proveravao SAMO pri prijavi i osvežavanju tokena (AuthService). Oglasi deaktiviranog korisnika ostajali su u pretrazi — dakle baniš nalog, a sadržaj zbog kog si ga banovao i dalje stoji.

  2. Refresh tokeni se nisu poništavali. Access token traje 60 minuta, pa je banovan korisnik nastavljao da radi do sat vremena.

  3. AdminService.DeactivateUserAsync je bio TOGGLE (SetProperty(u => !u.IsActive)). Admin koji dvaput klikne na prijavu vratio bi nalog, a da to nigde ne vidi. Zato je ovde eksplicitno „deaktiviraj" ili „vrati", nikad „obrni".

public sealed class UserModerationService
Inheritance
UserModerationService
Inherited Members

Constructors

UserModerationService(AppDbContext, NotificationService, ILogger<UserModerationService>)

Deaktivacija i vraćanje naloga, sa SVIM posledicama.

Postoji kao zaseban servis zato što deaktivacija ima tri dela koja moraju da idu zajedno, a zovu je dva pozivaoca (admin ručno i rešavanje prijave). Da je logika prepisana na oba mesta, jedno bi pre ili kasnije zaboravilo jedan deo — i to tiho.

ŠTA JE RANIJE FALILO (zatečeno stanje pre ovog servisa):

  1. IsActive se proveravao SAMO pri prijavi i osvežavanju tokena (AuthService). Oglasi deaktiviranog korisnika ostajali su u pretrazi — dakle baniš nalog, a sadržaj zbog kog si ga banovao i dalje stoji.

  2. Refresh tokeni se nisu poništavali. Access token traje 60 minuta, pa je banovan korisnik nastavljao da radi do sat vremena.

  3. AdminService.DeactivateUserAsync je bio TOGGLE (SetProperty(u => !u.IsActive)). Admin koji dvaput klikne na prijavu vratio bi nalog, a da to nigde ne vidi. Zato je ovde eksplicitno „deaktiviraj" ili „vrati", nikad „obrni".

Methods

DeaktivirajAsync(string, string?)

Deaktivira nalog: gasi pristup, sklanja sadržaj i poništava tokene.

VratiAsync(string)

Vraća nalog u rad.