private async Task GenerateToken(HttpContext context, string username, string password)
        {
            AuthenticationUser user = await _userManager.FindByEmailAsync(username);

            ClaimsIdentity identity = await GetIdentity(user, username, password);

            if (identity == null)
            {
                context.Response.StatusCode = 200;
                await context.Response.WriteAsync(
                    SeriaizeErrorResponse("Invalid username or password."));

                return;
            }

            identity.AddClaims(await GetUserClaims(username, user));

            DateTime now = DateTime.UtcNow;
            JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();

            JwtSecurityToken jwt = handler.CreateJwtSecurityToken(subject: identity,
                                                                  signingCredentials: _options.SigningCredentials,
                                                                  issuer: _options.Issuer,
                                                                  audience: _options.Audience,
                                                                  notBefore: now,
                                                                  expires: now.Add(_options.Expiration));

            string encodedJwt = handler.WriteToken(jwt);

            var response = new TokenResponce()
            {
                AccessToken = encodedJwt,
                ExpiresIn   = (int)_options.Expiration.TotalSeconds
            };

            context.Response.ContentType = "application/json";
            await context.Response.WriteAsync(SeriaizeOkResponse(response));
        }
 private string SeriaizeOkResponse(TokenResponce response)
 {
     return(ServiceObjectResponse(new OkServiceResponse <TokenResponce>(response)));
 }