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); } }
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); } }
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); } }