using System.Collections.Generic; using System.Security.Claims; using System.Threading.Tasks; using gehGassi.Domain.Users; namespace gehGassi.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der Token erstellt /// public interface ITokenService { /// /// Erstellen eines Tokens /// /// Zu setzende Claims /// Token als string string GenerateAccessToken(IEnumerable claims); /// /// Gibt das ClaimsPricipal basierend auf einem abgelaufenen Token zurück /// /// Abgelaufenes Token /// ClaimsPrincipal ClaimsPrincipal GetPrincipalFromExpiredToken(string token); } /// /// Schnittestellenbeschreibung für einen Service der die Verwaltung von Refresh-Tokens realisiert /// public interface IRefreshTokenService : IService { /// /// Erstellten eines Tokens /// /// RefreshToken RefreshToken Create(); /// /// Gibt eine Liste aller RefreshTokens eines Benutzers zurück /// /// Id des Benutzers /// Liste Refreshtokens Task> GetAllAsync(string userId); /// /// Gibt ein Refreshtoken zurück /// /// Id des Benutzers /// Refreshtoken /// RefreshToken Task GetAsync(string userId, string token); /// /// Gibt ein Refreshtoken anhand des Tokens selbst zurück /// /// Token /// RefreshToken Task GetByTokenAsync(string token); /// /// Gibt zurück ob ein Token gültig ist. Bedeutet, gibt es das Token und ist es noch nicht abgelaufen /// /// Id des Benutzers /// Refreshtoken /// true wenn gültig, false sonst Task IsValidAsync(string userId, string token); /// /// Löschen eines Refreshtokens /// /// Id des Tokens /// Benutzername /// true wenn gelöscht, false sonst Task RemoveAsync(long id, string userName); /// /// Löscht alle Refreshtokens eines Benutzers /// /// Id des Tokens /// Benutzername /// true wenn erfolgreich, false sonst Task RemoveAllAsync(string userId, string userName); /// /// Löscht alle abgelaufenen Refreshtokens eines Benutzers /// /// Id des Tokens /// Benutzername /// true wenn erfolgreich, false sonst Task RemoveExpiredAsync(string userId, string userName); /// /// Löscht alle abgelaufenen Refreshtokens /// /// Benutzername /// true wenn erfolgreich, false sonst Task RemoveExpiredAsync(string userName); } }