public async Task <string> ValidateUser(string username, string password) { if (!await UserStore.ValidateUser(username, password)) { return(null); } var user = await UserStore.GetUser(username); var permissions = await UserStore.GetPermissionsForUser(user.Value.Id); return(await TokenCache.Create(permissions, null)); }
public override async Task Invoke(IIncomingLogicalMessageContext context, Func <Task> next) { var id = getId(context.Message.Instance); if (id == null) { await next(); return; } context.Headers.TryGetValue("TokenId", out var tokenId); var(entity, version) = await repository.Get(id); string tokenVersion = null; if (tokenId != null) { bool tokenExists; (tokenExists, tokenVersion) = await tokenStore.Exists(tokenId); if (!tokenExists) { //Cleanup if (entity.OutboxState.ContainsKey(context.MessageId)) { entity.OutboxState.Remove(context.MessageId); await repository.Put(entity, version); } return; //Duplicate } } if (!entity.OutboxState.TryGetValue(context.MessageId, out var outboxState)) { context.Extensions.Set(entity); var messages = await InvokeMessageHandler(context, next); outboxState = new OutboxState { OutgoingMessages = messages.Serialize() }; entity.OutboxState[context.MessageId] = outboxState; version = await repository.Put(entity, version); } if (!outboxState.TokensGenerated) { foreach (var message in outboxState.OutgoingMessages) { message.Headers["TokenId"] = Guid.NewGuid().ToString(); await tokenStore.Create(message.Headers["TokenId"]); } outboxState.TokensGenerated = true; version = await repository.Put(entity, version); } var toDispatch = outboxState.OutgoingMessages.Deserialize(); await Dispatch(toDispatch, context); if (tokenId != null) { await tokenStore.Delete(tokenId, tokenVersion); } entity.OutboxState.Remove(context.MessageId); await repository.Put(entity, version); }
public void Create(string messageId) { impl.Create(messageId); }
public void PrepareMessage(string messageId) { tokenStore.Create(messageId); }