コード例 #1
0
        public async Task <IActionResult> EnsureUser([FromBody] EnsureParams parameters)
        {
            var user = await service.Ensure(parameters.Email, parameters.Name);

            var events = await calendarService.GetEvents(parameters.AccessToken);

            await eventService.SaveEventsForEmployee(events.Items?.ToEvents(user.EmployeeID));

            return(Ok(new CallbackResult
            {
                Role = user.Role,
                Id = user.EmployeeID,
            }));
        }
コード例 #2
0
        public static async Task Callback(OAuthCreatingTicketContext context)
        {
            var data = new EnsureParams
            {
                Name        = context.Identity.Name,
                Email       = context.Identity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value,
                AccessToken = context.AccessToken,
            };

            using (var req = new HttpRequestMessage(HttpMethod.Post, "https://localhost:44313/cb"))
            {
                req.Content = new ObjectContent <EnsureParams>(data, new JsonMediaTypeFormatter());
                var response = await context.Backchannel.SendAsync(req);

                var result = await response.Content.ReadAsAsync <CallbackResult>();

                if (result.Role != null)
                {
                    context.Identity.AddClaim(new Claim(ClaimTypes.Role, result.Role));
                }
                context.Identity.AddClaim(new Claim(CustomClaimTypes.EmployeeID, result.Id.ToString()));
            }
        }