Beispiel #1
0
        public override async Task <DisableResp> Disable(DisableReq request, ServerCallContext context)
        {
            var options = request.Options;

            var user = await GetUser(_authenticationProvider, context.RequestHeaders).ConfigureAwait(false);

            var disableSource = new TaskCompletionSource <bool>();

            var envelope = new CallbackEnvelope(OnMessage);

            _queue.Publish(new UserManagementMessage.Disable(envelope, user, options.LoginName));

            await disableSource.Task.ConfigureAwait(false);

            return(new DisableResp());

            void OnMessage(Message message)
            {
                if (HandleErrors(options.LoginName, message, disableSource))
                {
                    return;
                }

                disableSource.TrySetResult(true);
            }
        }
Beispiel #2
0
        public override async Task <DisableResp> Disable(DisableReq request, ServerCallContext context)
        {
            var disableSource = new TaskCompletionSource <bool>();

            var options = request.Options;

            var user = context.GetHttpContext().User;

            var name  = options.Name;
            var runAs = new ProjectionManagementMessage.RunAs(user);

            var envelope = new CallbackEnvelope(OnMessage);

            _queue.Publish(options.WriteCheckpoint
                                ? (Message) new ProjectionManagementMessage.Command.Abort(envelope, name, runAs)
                                : new ProjectionManagementMessage.Command.Disable(envelope, name, runAs));

            await disableSource.Task.ConfigureAwait(false);

            return(new DisableResp());

            void OnMessage(Message message)
            {
                if (!(message is ProjectionManagementMessage.Updated))
                {
                    disableSource.TrySetException(UnknownMessage <ProjectionManagementMessage.Updated>(message));
                    return;
                }

                disableSource.TrySetResult(true);
            }
        }
Beispiel #3
0
        public override async Task <DisableResp> Disable(DisableReq request, ServerCallContext context)
        {
            var options = request.Options;

            var user = context.GetHttpContext().User;

            if (!await _authorizationProvider.CheckAccessAsync(user, DisableOperation, context.CancellationToken).ConfigureAwait(false))
            {
                throw AccessDenied();
            }
            var disableSource = new TaskCompletionSource <bool>();

            var envelope = new CallbackEnvelope(OnMessage);

            _publisher.Publish(new UserManagementMessage.Disable(envelope, user, options.LoginName));

            await disableSource.Task.ConfigureAwait(false);

            return(new DisableResp());

            void OnMessage(Message message)
            {
                if (HandleErrors(options.LoginName, message, disableSource))
                {
                    return;
                }

                disableSource.TrySetResult(true);
            }
        }