private async Task <SignInResult> DoLogin(UserViewModel userIdentity, bool rememberLogin) { var user = await _userManager.FindByNameAsync(userIdentity.UserName); if (user == null) { await _userAppService.RegisterWithoutPassword(new RegisterWithoutPasswordViewModel() { Username = userIdentity.UserName, Name = userIdentity.Name, Email = userIdentity.Email }); user = await _userManager.FindByNameAsync(userIdentity.UserName); } await _userManageAppService.SynchronizeClaims(user.UserName, userIdentity.CustomClaims.Select(s => new ClaimViewModel(s.Type, s.Value))); var claims = new List <Claim>() { new Claim("amr", "pwd"), new Claim("amr", "ldap") }; await _signInManager.SignInWithClaimsAsync(user, rememberLogin, claims.ToArray()); return(SignInResult.Success); }
public async Task Should_Synchronize_Claims() { var command = UserViewModelFaker.GenerateUserViewModel().Generate(); var result = await _userAppService.Register(command); result.Should().BeTrue(); var userClaims = await _userManagerAppService.GetClaims(command.Username); userClaims.FirstOrDefault(f => f.Type == "social_number").Should().NotBeNull(); var newSSN = _faker.Person.Ssn(); var newClaims = new List <ClaimViewModel>() { new ClaimViewModel("social_number", newSSN) }; await _userManagerAppService.SynchronizeClaims(command.Username, newClaims); userClaims = await _userManagerAppService.GetClaims(command.Username); userClaims.FirstOrDefault(f => f.Type == "social_number").Should().NotBeNull(); userClaims.FirstOrDefault(f => f.Type == "social_number").Value.Should().Be(newSSN); userClaims.Count(f => f.Type == "social_number").Should().Be(1); }