private static void BuildHttpClients(IFunctionsHostBuilder builder)
        {
            var acceptHeaderName  = "Accept";
            var acceptHeaderValue = "application/json";
            var handlerLifeTime   = TimeSpan.FromMinutes(5);

            builder.Services.AddHttpClient <IQnaApiClient, QnaApiClient>((serviceProvider, httpClient) =>
            {
                var qnaApiAuthentication = serviceProvider.GetService <IOptions <QnaApiAuthentication> >().Value;
                httpClient.BaseAddress   = new Uri(qnaApiAuthentication.ApiBaseAddress);
                httpClient.DefaultRequestHeaders.Add(acceptHeaderName, acceptHeaderValue);

                var configuration = serviceProvider.GetService <IConfiguration>();
                if (!configuration["EnvironmentName"].Equals("LOCAL", StringComparison.CurrentCultureIgnoreCase))
                {
                    var generateTokenTask = BearerTokenGenerator.GenerateTokenAsync(qnaApiAuthentication.Identifier);
                    httpClient.DefaultRequestHeaders.Authorization = generateTokenTask.GetAwaiter().GetResult();
                }
            })
            .SetHandlerLifetime(handlerLifeTime);

            builder.Services.AddHttpClient <IApplyApiClient, ApplyApiClient>((serviceProvider, httpClient) =>
            {
                var applyApiAuthentication = serviceProvider.GetService <IOptions <ApplyApiAuthentication> >().Value;
                httpClient.BaseAddress     = new Uri(applyApiAuthentication.ApiBaseAddress);
                httpClient.DefaultRequestHeaders.Add(acceptHeaderName, acceptHeaderValue);

                var configuration = serviceProvider.GetService <IConfiguration>();
                if (!configuration["EnvironmentName"].Equals("LOCAL", StringComparison.CurrentCultureIgnoreCase))
                {
                    var generateTokenTask = BearerTokenGenerator.GenerateTokenAsync(applyApiAuthentication.Identifier);
                    httpClient.DefaultRequestHeaders.Authorization = generateTokenTask.GetAwaiter().GetResult();
                }
            })
            .SetHandlerLifetime(handlerLifeTime);


            builder.Services.AddHttpClient <IGovUkApiClient, GovUkApiClient>((serviceProvider, httpClient) =>
            {
                var govUkApiAuthentication = serviceProvider.GetService <IOptions <GovUkApiAuthentication> >().Value;
                httpClient.BaseAddress     = new Uri(govUkApiAuthentication.ApiBaseAddress);
                httpClient.DefaultRequestHeaders.Add(acceptHeaderName, acceptHeaderValue);
            })
            .SetHandlerLifetime(handlerLifeTime);
        }
示例#2
0
        public User Login(LoginModel model)
        {
            var user = this.context.Users.SingleOrDefault(x => x.Username == model.Username && x.Password == model.Password);

            // return null if user not found
            if (user == null)
            {
                return(null);
            }

            // authentication successful so generate jwt token
            user.Token = BearerTokenGenerator.GetToken(this.appSettings.Secret, user.Username);

            // remove password before returning
            user.Password = null;

            return(user);
        }
示例#3
0
        public User Signin(SigninModel model)
        {
            if (this.context.Users.Any(x => x.Username == model.Username))
            {
                return(null);
            }
            var user = new User()
            {
                Id         = this.context.Users.Max(x => x.Id) + 1,
                FirstName  = model.FirstName,
                SecondName = model.SecondName,
                Password   = model.Password,
                Username   = model.Username
            };

            user.Token = BearerTokenGenerator.GetToken(this.appSettings.Secret, user.Username);
            this.context.Users.Add(user);
            this.context.SaveChanges();

            return(user);
        }