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