Files
server/src/Core/Identity/ReadOnlyDatabaseIdentityUserStore.cs

43 lines
1.4 KiB
C#
Raw Normal View History

2018-03-21 14:26:49 -04:00
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Bit.Core.Repositories;
2018-08-28 17:40:08 -04:00
using Bit.Core.Services;
2018-03-21 14:26:49 -04:00
namespace Bit.Core.Identity
{
public class ReadOnlyDatabaseIdentityUserStore : ReadOnlyIdentityUserStore
{
2018-08-28 17:40:08 -04:00
private readonly IUserService _userService;
2018-03-21 14:26:49 -04:00
private readonly IUserRepository _userRepository;
2018-08-28 17:40:08 -04:00
public ReadOnlyDatabaseIdentityUserStore(
IUserService userService,
IUserRepository userRepository)
2018-03-21 14:26:49 -04:00
{
2018-08-28 17:40:08 -04:00
_userService = userService;
2018-03-21 14:26:49 -04:00
_userRepository = userRepository;
}
public override async Task<IdentityUser> FindByEmailAsync(string normalizedEmail,
CancellationToken cancellationToken = default(CancellationToken))
{
var user = await _userRepository.GetByEmailAsync(normalizedEmail);
2018-08-28 17:40:08 -04:00
return user?.ToIdentityUser(await user.TwoFactorIsEnabledAsync(_userService));
2018-03-21 14:26:49 -04:00
}
public override async Task<IdentityUser> FindByIdAsync(string userId,
CancellationToken cancellationToken = default(CancellationToken))
{
if(!Guid.TryParse(userId, out var userIdGuid))
{
return null;
}
var user = await _userRepository.GetByIdAsync(userIdGuid);
2018-08-28 17:40:08 -04:00
return user?.ToIdentityUser(await user.TwoFactorIsEnabledAsync(_userService));
2018-03-21 14:26:49 -04:00
}
}
}