protected async Task <HttpResponseMessage> CreateItemAsync <TValidator>(HttpRequestMessage httpRequestMessage) where TValidator : AbstractValidator <T>, new() { _ = httpRequestMessage ?? throw new ArgumentNullException(nameof(httpRequestMessage)); var claimsPrincipal = await tokenValidator.ValidateTokenAsync(httpRequestMessage.Headers.Authorization); if (claimsPrincipal == null) { return(new HttpResponseMessage(HttpStatusCode.Unauthorized)); } var jsonValidationResult = await jsonHttpContentValidator.ValidateJsonAsync <T, TValidator>(httpRequestMessage.Content); if (!jsonValidationResult.IsValid) { return(jsonValidationResult.Message); } var createdItem = await dataRepository.CreateItemAsync(jsonValidationResult.Item); var content = new StringContent(JsonSerializer.Serialize(createdItem), Encoding.UTF8, ContentTypes.Application.Json); return(new HttpResponseMessage(HttpStatusCode.Created) { Content = content }); }
public async Task <HttpResponseMessage> CreateCustomer([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "customers")] HttpRequestMessage req, ILogger log) { _ = req ?? throw new ArgumentNullException(nameof(req)); log.LogInformation(CustomerDataResources.CreateCustomerStartLog); var claimsPrincipal = await tokenValidator.ValidateTokenAsync(req.Headers.Authorization); if (claimsPrincipal == null) { return(new HttpResponseMessage(HttpStatusCode.Unauthorized)); } var jsonValidationResult = await jsonHttpContentValidator.ValidateJsonAsync <Customer, CustomerValidator>(req.Content); if (!jsonValidationResult.IsValid) { return(jsonValidationResult.Message); } var customer = await customerRepository.CreateItemAsync(jsonValidationResult.Item); var content = new StringContent(JsonSerializer.Serialize(customer), Encoding.UTF8, ContentTypes.Application.Json); log.LogInformation(CustomerDataResources.CreateCustomerEndLog); return(new HttpResponseMessage(HttpStatusCode.Created) { Content = content }); }
public async Task <HttpResponseMessage> CheckAccess([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "checkAccess")] HttpRequestMessage req, ILogger log) { _ = req ?? throw new ArgumentNullException(nameof(req)); log.LogInformation(PolicyManagerResources.CheckAccessStartLog); var claimsPrincipal = await tokenValidator.ValidateTokenAsync(req.Headers.Authorization); if (claimsPrincipal == null) { return(new HttpResponseMessage(HttpStatusCode.Unauthorized)); } var jsonValidationResult = await jsonHttpContentValidator.ValidateJsonAsync <CheckAccessRequest, CheckAccessRequestValidator>(req.Content); if (!jsonValidationResult.IsValid) { return(jsonValidationResult.Message); } var groups = await microsoftGraphRepository.FetchMyGroupsAsync(req.Headers.Authorization); var initialState = new InitialState <Group>() { ClaimsPrincipal = claimsPrincipal, Identifier = jsonValidationResult.Item.RequestIdentifier, Groups = groups, }; var policyResults = await authorizationRepository.EvaluateAsync(req.Headers.Authorization, initialState); log.LogInformation(PolicyManagerResources.CheckAccessEndLog); var content = new StringContent(JsonSerializer.Serialize(policyResults), Encoding.UTF8, ContentTypes.Application.Json); return(new HttpResponseMessage(HttpStatusCode.OK) { Content = content }); }