40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
using BCards.Web.Configuration;
|
|
using Microsoft.Extensions.Options;
|
|
using System.Security.Claims;
|
|
|
|
namespace BCards.Web.Services
|
|
{
|
|
public class ModerationAuthService : IModerationAuthService
|
|
{
|
|
private readonly ModerationSettings _settings;
|
|
|
|
public ModerationAuthService(IOptions<ModerationSettings> settings)
|
|
{
|
|
_settings = settings.Value;
|
|
}
|
|
|
|
public bool IsUserModerator(ClaimsPrincipal user)
|
|
{
|
|
if (!user.Identity?.IsAuthenticated == true)
|
|
return false;
|
|
|
|
var email = user.FindFirst(ClaimTypes.Email)?.Value;
|
|
return IsEmailModerator(email);
|
|
}
|
|
|
|
public bool IsEmailModerator(string? email)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(email))
|
|
return false;
|
|
|
|
return _settings.ModeratorEmails
|
|
.Any(moderatorEmail => moderatorEmail.Equals(email, StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
public List<string> GetModeratorEmails()
|
|
{
|
|
return _settings.ModeratorEmails.ToList();
|
|
}
|
|
}
|
|
}
|