public async Task <AuthResponse> Login(Principal principal)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage    response = client.PostAsJsonAsync(_settings.UserService + "User/check", principal).Result;
                CheckPrincipalResponse res      = await response.Content.ReadAsAsync <CheckPrincipalResponse>();

                if (!response.IsSuccessStatusCode)
                {
                    return(new AuthResponse
                    {
                        Token = null,
                        Success = false,
                        Error = res.Message.ToString()
                    });
                }

                Guid     id         = res.Account.Id;
                string   role       = res.Account.Role;
                DateTime dateIssued = DateTime.UtcNow;

                AuthModel authModel = _authRepository.GetAuthByUserId(id);
                if (authModel != null)
                {
                    return(new AuthResponse
                    {
                        Token = authModel.Token,
                        Success = true
                    });
                }

                var token = CreateToken(id.ToString(), role);
                authModel = new AuthModel
                {
                    Id    = id,
                    Role  = role,
                    Token = token,
                    TimeOfIssuingToken = dateIssued
                };

                _authRepository.CreateAuthModel(authModel);
                return(new AuthResponse
                {
                    Token = token,
                    Success = true
                });
            }
        }
        public async Task <AuthenticationResponse> Login(Principal principal)
        {
            using (HttpClient client = new HttpClient())
            {
                Uri         url     = new Uri($"{ _configuration["Services:UserService"] }api/accounts/checkPrincipal");
                HttpContent content = new StringContent(JsonConvert.SerializeObject(principal));
                content.Headers.ContentType.MediaType = "application/json";
                HttpResponseMessage    response = client.PostAsync(url, content).Result;
                CheckPrincipalResponse res      = await response.Content.ReadFromJsonAsync <CheckPrincipalResponse>();

                if (!response.IsSuccessStatusCode)
                {
                    return(new AuthenticationResponse {
                        Succes = false,
                        Error = res.Message.ToString()
                    });
                }

                string   publicToken = Guid.NewGuid().ToString();
                Guid     id          = res.AccountInfo.Id;
                string   role        = res.AccountInfo.Role;
                DateTime dateIssued  = DateTime.UtcNow;
                AuthInfo user        = _authInfoRepository.GetAuthInfoByUserId(id);
                if (user != null)
                {
                    return(new AuthenticationResponse
                    {
                        Token = user.PublicToken,
                        Succes = true
                    });
                }
                AuthInfo authInfo = new AuthInfo
                {
                    UserId      = id,
                    Role        = role,
                    PublicToken = publicToken,
                    TimeOfIssuingPublicToken = dateIssued
                };
                _authInfoRepository.CreateAuthInfo(authInfo);
                return(new AuthenticationResponse
                {
                    Token = publicToken,
                    Succes = true
                });
            }
        }