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
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|