예제 #1
0
        public async Task <BulkInviteSubmission> SendBulkInvitations(BulkInviteSubmission bulkRequest)
        {
            if (!User.Identity.IsInRole(Roles.CompanyAdministrator))
            {
                //enforcing rule: only Company Administrator can invite Members
                bulkRequest.MemberType = MemberType.Guest;
            }

            bulkRequest.InvitationMessage = HtmlSanitizer.SanitizeHtml(bulkRequest.InvitationMessage);
            bulkRequest.SubmissionDate    = DateTime.UtcNow;

            //this call adds the batch to the DB and creates a pending item for each guest
            bulkRequest = await BulkInviteSubmission.AddItem(bulkRequest, User.Identity.Name);

            string userOid = User.Identity.GetClaim(Settings.ObjectIdentifier);

            //queue the request for processing
            var queue = new BatchQueueItem
            {
                BulkInviteSubmissionId = bulkRequest.Id,
                InvitingUserId         = userOid,
                ProfileUrl             = Utils.GetProfileUrl(Request.RequestUri),
                UserSourceHostName     = Utils.GetFQDN(Request)
            };

            StorageRepo.AddQueueItem(queue, "invitations");

            return(bulkRequest);
        }
예제 #2
0
        public InviteManager(BatchQueueItem batch)
        {
            _user       = new CacheUser(batch.InvitingUserId, batch.UserSourceHostName);
            _profileUrl = batch.ProfileUrl;
            AuthenticationResult res = null;
            var task = Task.Run(async() => {
                res = await AdalUtil.AuthenticateApp(null, _user);
            });

            task.Wait();
            _accessToken = res.AccessToken;
        }
예제 #3
0
        public HttpResponseMessage RequeueRequest(dynamic data)
        {
            string signInUserId = User.Identity.GetClaim(Settings.ObjectIdentifier);

            //queue the request for processing
            var queue = new BatchQueueItem
            {
                BulkInviteSubmissionId = data.id,
                InvitingUserId         = signInUserId,
                ProfileUrl             = Utils.GetProfileUrl(Request.RequestUri),
                UserSourceHostName     = Utils.GetFQDN(Request)
            };

            StorageRepo.AddQueueItem(queue, "invitations");
            return(new HttpResponseMessage(HttpStatusCode.Accepted));
        }
예제 #4
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called invitations.
        public static void ProcessUserQueue([QueueTrigger("%queueName%")] BatchQueueItem batch, IBinder binder)
        {
            try
            {
                var mgr = new InviteManager(batch);

                BulkInviteResults res;
                var task = Task.Run(async() => {
                    res = await mgr.BulkInvitations(batch.BulkInviteSubmissionId);
                });
                task.Wait();
            }
            catch (Exception ex)
            {
                Logging.WriteToAppLog(String.Format("Error processing queue '{0}'", StorageRepo.QueueName), System.Diagnostics.EventLogEntryType.Error, ex);
                throw;
            }
        }