mirror of
https://github.com/bitwarden/server
synced 2025-12-28 06:03:29 +00:00
passwordless sign in for admin
This commit is contained in:
53
src/Core/Identity/ReadOnlyEnvIdentityUserStore.cs
Normal file
53
src/Core/Identity/ReadOnlyEnvIdentityUserStore.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Bit.Core.Identity
|
||||
{
|
||||
public class ReadOnlyEnvIdentityUserStore : ReadOnlyIdentityUserStore
|
||||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
|
||||
public ReadOnlyEnvIdentityUserStore(IConfiguration configuration)
|
||||
{
|
||||
_configuration = configuration;
|
||||
}
|
||||
|
||||
public override Task<IdentityUser> FindByEmailAsync(string normalizedEmail,
|
||||
CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
var usersCsv = _configuration["adminSettings:admins"];
|
||||
if(string.IsNullOrWhiteSpace(usersCsv))
|
||||
{
|
||||
return Task.FromResult<IdentityUser>(null);
|
||||
}
|
||||
|
||||
var users = usersCsv.ToLowerInvariant().Split(',');
|
||||
var user = users.Where(a => a.Trim() == normalizedEmail).FirstOrDefault();
|
||||
if(user == null || !user.Contains("@"))
|
||||
{
|
||||
return Task.FromResult<IdentityUser>(null);
|
||||
}
|
||||
|
||||
user = user.Trim();
|
||||
return Task.FromResult(new IdentityUser
|
||||
{
|
||||
Id = user,
|
||||
Email = user,
|
||||
NormalizedEmail = user,
|
||||
EmailConfirmed = true,
|
||||
UserName = user,
|
||||
NormalizedUserName = user,
|
||||
SecurityStamp = user
|
||||
});
|
||||
}
|
||||
|
||||
public override Task<IdentityUser> FindByIdAsync(string userId,
|
||||
CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return FindByEmailAsync(userId, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user