public void Delegate_only_user_does_not_have_user_admin_id_or_admin_category_id()
        {
            // Given
            var delegateUser         = UserTestHelper.GetDefaultDelegateUser();
            var delegateLoginDetails = new DelegateLoginDetails(delegateUser);

            // When
            var claims = LoginClaimsHelper.GetClaimsForSignIn(null, delegateLoginDetails);

            // Then
            claims.Should().NotContain((claim) => claim.Type == CustomClaimTypes.UserAdminId);
            claims.Should().NotContain((claim) => claim.Type == CustomClaimTypes.AdminCategoryId);
        }
        public void Admin_only_user_does_not_have_learn_candidate_id_or_learn_candidate_number()
        {
            // Given
            var adminUser         = UserTestHelper.GetDefaultAdminUser();
            var adminLoginDetails = new AdminLoginDetails(adminUser);

            // When
            var claims = LoginClaimsHelper.GetClaimsForSignIn(adminLoginDetails, null);

            // Then
            claims.Should().NotContain((claim) => claim.Type == CustomClaimTypes.LearnCandidateId);
            claims.Should().NotContain((claim) => claim.Type == CustomClaimTypes.LearnCandidateNumber);
        }
        public void User_without_email_has_empty_string_email_claim()
        {
            // Given
            var adminUser         = UserTestHelper.GetDefaultAdminUser(emailAddress: string.Empty);
            var adminLoginDetails = new AdminLoginDetails(adminUser);

            // When
            var claims = LoginClaimsHelper.GetClaimsForSignIn(adminLoginDetails, null);

            // Then
            claims.Should().Contain((claim) => claim.Type == ClaimTypes.Email);
            var emailClaim = claims.Find((claim) => claim.Type == ClaimTypes.Email);

            emailClaim.Value.Should().Be(string.Empty);
        }
        public void Delegate_user_forename_and_surname_set_correctly()
        {
            // Given
            var delegateUser         = UserTestHelper.GetDefaultDelegateUser(firstName: "fname", lastName: "lname");
            var delegateLoginDetails = new DelegateLoginDetails(delegateUser);

            // When
            var claims = LoginClaimsHelper.GetClaimsForSignIn(null, delegateLoginDetails);

            // Then
            claims.Should().Contain((claim) => claim.Type == CustomClaimTypes.UserForename);
            claims.Should().Contain((claim) => claim.Type == CustomClaimTypes.UserSurname);
            var forenameClaim = claims.Find((claim) => claim.Type == CustomClaimTypes.UserForename);
            var surnameClaim  = claims.Find((claim) => claim.Type == CustomClaimTypes.UserSurname);

            forenameClaim.Value.Should().Be("fname");
            surnameClaim.Value.Should().Be("lname");
        }
        private async Task <IActionResult> LogIn(
            AdminLoginDetails?adminLoginDetails,
            DelegateLoginDetails?delegateLoginDetails,
            bool rememberMe,
            string?returnUrl
            )
        {
            var claims         = LoginClaimsHelper.GetClaimsForSignIn(adminLoginDetails, delegateLoginDetails);
            var claimsIdentity = new ClaimsIdentity(claims, "Identity.Application");
            var authProperties = new AuthenticationProperties
            {
                AllowRefresh = true,
                IsPersistent = rememberMe,
                IssuedUtc    = DateTime.UtcNow
            };

            await HttpContext.SignInAsync("Identity.Application", new ClaimsPrincipal(claimsIdentity), authProperties);

            return(RedirectToReturnUrl(returnUrl) ?? RedirectToAction("Index", "Home"));
        }
Beispiel #6
0
        public Action <IApplicationBuilder> Configure(Action <IApplicationBuilder> next)
        {
            return(builder =>
            {
                next(builder);

                builder.MapWhen(
                    context => context.Request.Path.Value.StartsWith("/SetDelegateTestSession"),
                    loginApp =>
                {
                    loginApp.Run(
                        async context =>
                    {
                        var delegateId = int.Parse(context.Request.Query["delegateId"]);
                        var delegateUser = TestUserDataService.GetDelegate(delegateId);
                        var claims = LoginClaimsHelper.GetClaimsForSignIn(null, delegateUser);
                        var claimsIdentity = new ClaimsIdentity(claims, "Identity.Application");
                        var authProperties = new AuthenticationProperties
                        {
                            AllowRefresh = true,
                            IsPersistent = false,
                            IssuedUtc = DateTime.UtcNow,
                        };

                        await context.SignInAsync(
                            "Identity.Application",
                            new ClaimsPrincipal(claimsIdentity),
                            authProperties
                            );

                        delegateUser.SessionData.ToList()
                        .ForEach(kv => context.Session.SetString(kv.Key, kv.Value));

                        await context.Response.WriteAsync("Success");
                    }
                        );
                }
                    );
            });
        }