public async Task <IActionResult> Login([FromBody] LoginRequest request, [FromServices] IAccountRepo accountRepo)
        {
            try
            {
                var context = await _interaction.GetAuthorizationContextAsync(request.ReturnUrl);

                if (context != null)
                {
                    var userProfile = await accountRepo.GetAccountAsync(request.Username, request.Password);

                    if (userProfile != null && context != null)
                    {
                        var user = new IdentityServerUser(userProfile.User.UID.ToString());
                        user.DisplayName      = userProfile.DisplayName;
                        user.AdditionalClaims = new List <Claim>
                        {
                            new Claim(JwtClaimTypes.Name, userProfile.User.Name),
                            new Claim(JwtClaimTypes.Email, userProfile.Email)
                        };

                        await HttpContext.SignInAsync(user);

                        return(new JsonResult(new { RedirectUrl = request.ReturnUrl, IsOk = true }));
                    }
                }
                return(Unauthorized());
            }
            catch (UserAccountException ex)
            {
                return(Unauthorized(ex.Message));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }