public DevelopmentModule(ICommandDispatcher commandDispatcher,
                          IValidatorResolver validatorResolver,
                          IOperationStorage operationStorage)
     : base(commandDispatcher, validatorResolver, modulePath: "development")
 {
     Get("operation", args =>
     {
         RequestCounter++;
         if (RequestCounter <= 2)
         {
             return(HttpStatusCode.NotFound);
         }
         if (RequestCounter == 3)
         {
             return(HttpStatusCode.Unauthorized);
         }
         if (RequestCounter == 8)
         {
             RequestCounter = 0;
         }
         return(new Operation
         {
             Id = Guid.NewGuid(),
             RequestId = Guid.NewGuid(),
             CreatedAt = DateTime.UtcNow,
             State = "completed"
         });
     });
 }
Пример #2
0
        public AuthenticationModule(ICommandDispatcher commandDispatcher,
                                    IValidatorResolver validatorResolver,
                                    IIdentityProvider identityProvider,
                                    IUserStorage userStorage,
                                    IOperationStorage operationStorage,
                                    IJwtTokenHandler jwtTokenHandler,
                                    JwtTokenSettings jwtTokenSettings)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "")
        {
            Post("sign-in", async(ctx, p) => await For <SignIn>()
                 .Set(c =>
            {
                c.IpAddress = Request.UserHostAddress;
                c.UserAgent = Request.Headers.UserAgent;
            })
                 .SetResourceId(c => c.SessionId)
                 .OnSuccess(async c =>
            {
                var operation = await operationStorage.GetUpdatedAsync(c.Request.Id);
                if (operation.HasNoValue || !operation.Value.Success)
                {
                    return(HttpStatusCode.Unauthorized);
                }

                var session = await userStorage.GetSessionAsync(c.SessionId);
                if (session.HasNoValue)
                {
                    return(HttpStatusCode.Unauthorized);
                }

                return(new
                {
                    token = jwtTokenHandler.Create(session.Value.UserId),
                    sessionId = session.Value.Id,
                    sessionKey = session.Value.Key,
                    expiry = DateTime.UtcNow.AddDays(jwtTokenSettings.ExpiryDays).ToTimestamp()
                });
            })
                 .DispatchAsync());

            Post("sign-up", async args => await For <SignUp>()
                 .OnSuccessAccepted("account")
                 .DispatchAsync());

            Post("sign-out", async args => await For <SignOut>()
                 .OnSuccess(HttpStatusCode.NoContent)
                 .DispatchAsync());
        }
Пример #3
0
        public OperationModule(ICommandDispatcher commandDispatcher,
                               IIdentityProvider identityProvider,
                               IOperationStorage operationStorage)
            : base(commandDispatcher, identityProvider, modulePath: "operations")
        {
            Get("{requestId}", args => Fetch <GetOperation, OperationDto>
                    (async x =>
            {
                var operation = await operationStorage.GetAsync(x.RequestId);
                if (operation.HasNoValue || operation.Value.UserId != CurrentUserId)
                {
                    return(new Maybe <OperationDto>());
                }

                return(operation);
            }).HandleAsync());
        }
Пример #4
0
        public OperationModule(ICommandDispatcher commandDispatcher,
                               IValidatorResolver validatorResolver,
                               IIdentityProvider identityProvider,
                               IOperationStorage operationStorage)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "operations")
        {
            Get("{requestId}", args => Fetch <GetOperation, Operation>
                    (async x =>
            {
                var operation = await operationStorage.GetAsync(x.RequestId);
                if (operation.HasNoValue || operation.Value.UserId.Empty())
                {
                    return(operation);
                }

                this.RequiresAuthentication();

                return(operation.Value.UserId == CurrentUserId
                    ? operation
                    : new Maybe <Operation>());
            }).HandleAsync());
        }
Пример #5
0
 public HomeController(IOperationStorage operationService, IResultStorage storage, IOperationLogger logger)
 {
     _operationService = operationService;
     _storage          = storage;
     _logger           = logger;
 }
Пример #6
0
 public void Init()
 {
     _storage = OperationStorage.GetInstance();
 }