/// <summary>
        /// Initializes a new instance of the <see cref="EventGraphHelper"/> class.
        /// </summary>
        /// <param name="tokenAcquisitionHelper">Helper to get user access token for specified Graph scopes.</param>
        /// <param name="httpContextAccessor">HTTP context accessor for getting user claims.</param>
        /// <param name="localizer">The current culture's string localizer.</param>
        /// <param name="userGraphHelper">Graph helper for operations related user.</param>
        public EventGraphHelper(
            ITokenAcquisitionHelper tokenAcquisitionHelper,
            IHttpContextAccessor httpContextAccessor,
            IStringLocalizer <Strings> localizer,
            IUserGraphHelper userGraphHelper)
        {
            this.localizer       = localizer;
            this.userGraphHelper = userGraphHelper;
            httpContextAccessor  = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));

            var oidClaimType = "http://schemas.microsoft.com/identity/claims/objectidentifier";
            var userObjectId = httpContextAccessor.HttpContext.User.Claims?
                               .FirstOrDefault(claim => oidClaimType.Equals(claim.Type, StringComparison.OrdinalIgnoreCase))?.Value;

            if (!string.IsNullOrEmpty(userObjectId))
            {
                var jwtToken = AuthenticationHeaderValue.Parse(httpContextAccessor.HttpContext.Request.Headers["Authorization"].ToString()).Parameter;

                this.delegatedGraphClient = GraphServiceClientFactory.GetAuthenticatedGraphClient(async() =>
                {
                    return(await tokenAcquisitionHelper.GetUserAccessTokenAsync(userObjectId, jwtToken));
                });

                this.applicationBetaGraphClient = GraphServiceClientFactory.GetAuthenticatedBetaGraphClient(async() =>
                {
                    return(await tokenAcquisitionHelper.GetApplicationAccessTokenAsync());
                });

                this.applicationGraphClient = GraphServiceClientFactory.GetAuthenticatedGraphClient(async() =>
                {
                    return(await tokenAcquisitionHelper.GetApplicationAccessTokenAsync());
                });
            }
        }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EventWorkflowHelper"/> class.
 /// </summary>
 /// <param name="eventRepository">Provides the methods for event related operations on storage.</param>
 /// <param name="eventSearchService">The event search service for event table.</param>
 /// <param name="eventGraphHelper">Graph API helper for events.</param>
 /// <param name="groupGraphHelper">Graph API helper for groups.</param>
 /// <param name="userConfigurationRepository">Provides the methods for user configuration operations on storage.</param>
 /// <param name="teamConfigurationRepository">Provides the methods for LnD team configuration operations on storage.</param>
 /// <param name="categoryHelper">Category helper for fetching based on Ids, binding category names to events.</param>
 /// <param name="localizer">The current culture's string localizer.</param>
 /// <param name="userGraphHelper">Graph API helper for users API.</param>
 /// <param name="notificationHelper">The notification helper for notification activities.</param>
 /// <param name="botOptions">A set of key/value application configuration properties for activity settings.</param>
 public EventWorkflowHelper(
     IEventRepository eventRepository,
     IEventSearchService eventSearchService,
     IEventGraphHelper eventGraphHelper,
     IGroupGraphHelper groupGraphHelper,
     IUserConfigurationRepository userConfigurationRepository,
     ILnDTeamConfigurationRepository teamConfigurationRepository,
     ICategoryHelper categoryHelper,
     IStringLocalizer <Strings> localizer,
     IUserGraphHelper userGraphHelper,
     INotificationHelper notificationHelper,
     IOptions <BotSettings> botOptions)
 {
     this.eventRepository             = eventRepository;
     this.eventSearchService          = eventSearchService;
     this.eventGraphHelper            = eventGraphHelper;
     this.groupGraphHelper            = groupGraphHelper;
     this.userConfigurationRepository = userConfigurationRepository;
     this.teamConfigurationRepository = teamConfigurationRepository;
     this.categoryHelper     = categoryHelper;
     this.localizer          = localizer;
     this.userGraphHelper    = userGraphHelper;
     this.notificationHelper = notificationHelper;
     this.botOptions         = botOptions;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="UsersController"/> class.
 /// </summary>
 /// <param name="logger">The ILogger object which logs errors and information</param>
 /// <param name="telemetryClient">The Application Insights telemetry client</param>
 /// <param name="userGraphHelper">Graph helper for users API.</param>
 /// <param name="groupGraphHelper">Graph API helper for fetching group related data.</param>
 public UsersController(
     ILogger <UsersController> logger,
     TelemetryClient telemetryClient,
     IUserGraphHelper userGraphHelper,
     IGroupGraphHelper groupGraphHelper)
     : base(telemetryClient)
 {
     this.logger           = logger;
     this.userGraphHelper  = userGraphHelper;
     this.groupGraphHelper = groupGraphHelper;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="UserEventsHelper"/> class.
 /// </summary>
 /// <param name="eventRepository">Provides the methods for event related operations on storage.</param>
 /// <param name="eventSearchService">Search service to filter and search events.</param>
 /// <param name="userEventSearchService">Search service to filter and search events for end user.</param>
 /// <param name="userGraphHelper">Helper to use Microsoft Graph users api.</param>
 /// <param name="eventGraphHelper">Helper to use Microsoft Graph events api.</param>
 /// <param name="notificationHelper">Helper to send notifications to user and team.</param>
 /// <param name="categoryHelper">Helper to bind category name by Id.</param>
 /// <param name="lnDTeamConfigurationRepository">Team configuration repository for storing and updating team information.</param>
 /// <param name="botOptions">Represents a set of key/value application configuration properties for bot.</param>
 /// <param name="localizer">The current culture's string localizer.</param>
 public UserEventsHelper(
     IEventRepository eventRepository,
     IEventSearchService eventSearchService,
     IUserEventSearchService userEventSearchService,
     IUserGraphHelper userGraphHelper,
     IEventGraphHelper eventGraphHelper,
     INotificationHelper notificationHelper,
     ICategoryHelper categoryHelper,
     ILnDTeamConfigurationRepository lnDTeamConfigurationRepository,
     IOptions <BotSettings> botOptions,
     IStringLocalizer <Strings> localizer)
 {
     this.eventRepository                = eventRepository;
     this.eventSearchService             = eventSearchService;
     this.userEventSearchService         = userEventSearchService;
     this.userGraphHelper                = userGraphHelper;
     this.eventGraphHelper               = eventGraphHelper;
     this.notificationHelper             = notificationHelper;
     this.categoryHelper                 = categoryHelper;
     this.lnDTeamConfigurationRepository = lnDTeamConfigurationRepository;
     this.botOptions = botOptions;
     this.localizer  = localizer;
 }