Beispiel #1
0
        public async Task <ActionResult <string> > Login(AccountInputModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await userManager.FindByNameAsync(model.Email);

                if (user == null)
                {
                    return(BadRequest(ErrorResult.Create("Wrong email/password")));
                }
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await signInManager.CheckPasswordSignInAsync(user, model.Password, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    var jwt = JwtTokenGenerator.Generate(model.Email, configuration["AuthToken:Issuer"], configuration["AuthToken:Key"]);
                    logger.LogInformation("User logged in.");
                    return(jwt);
                }

                if (result.RequiresTwoFactor)
                {
                    return(BadRequest(new List <Error>()
                    {
                        new Error()
                        {
                            Name = "2fa", Message = "Require LoginWith 2fa"
                        }
                    }));
                }
                if (result.IsLockedOut)
                {
                    return(BadRequest(new List <Error>()
                    {
                        new Error()
                        {
                            Name = "Lockout", Message = "User account locked out"
                        }
                    }));
                }
                else
                {
                    return(BadRequest(new List <Error>()
                    {
                        new Error()
                        {
                            Name = "InvalidLogin", Message = "Invalid login attempt."
                        }
                    }));
                }
            }

            return(BadRequest(ModelState));
        }
Beispiel #2
0
        public async Task <ActionResult <GameStartResponse> > Start([FromBody] GameStartRequest model)
        {
            switch (model.Type)
            {
            case GameType.Dice:
                if (model.Bet == null || model.Bet.Length < 1 || model.Bet.Length > 5 || model.Bet.Any(x => x < 1 || x > 6))
                {
                    return(BadRequest(ErrorResult.Create("Invalid Bet")));
                }
                break;

            case GameType.TossCoin:
                if (model.Bet == null || model.Bet.Length != 1 || model.Bet.Single() < 0 || model.Bet.Single() > 1)
                {
                    return(BadRequest(ErrorResult.Create("Invalid Bet")));
                }
                break;

            default:
                throw new NotImplementedException();
            }

            var commit = await randomContributorService.Commit(DateTime.UtcNow.Ticks.ToString());

            var list = new List <SignedItem>
            {
                new SignedItem()
                {
                    Type   = UserType.Contributor,
                    PubKey = model.PubKey,
                    Nonce  = model.Nonce.ToString(),
                    Sign   = model.Sign
                },
                commit.ToSignedItem()
            };

            var tx = await protocol.CreateTransaction(list, ChaosProtocolSettings.ByGameType(model.Type));

            var rs = new GameStartResponse()
            {
                GameId       = Guid.NewGuid().ToString("n"),
                ValidationTx = tx.Id,
                GameType     = model.Type,
                Bet          = model.Bet,
                BetAmount    = model.BetAmount,
                Items        = tx.Items,
                IpfsHash     = tx.Anchor?.Data
            };

            var game = cache.Set(rs.GameId, rs);

            return(rs);
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            if (context.ModelState.IsValid)
            {
                return;
            }

            var errors = context
                         .ModelState
                         .Values
                         .SelectMany(x => x.Errors.Select(e => e.ErrorMessage))
                         .ToList();

            var result = ErrorResult
                         .Create("00009", "Validation Errors", errors);

            context.Result = new BadRequestObjectResult(result);
        }
Beispiel #4
0
 protected HttpResponseMessage CreateErrorResponse(HttpStatusCode statusCode, string message)
 {
     return(Request.CreateResponse(statusCode, ErrorResult.Create(message)));
 }