コード例 #1
0
        public async Task <IActionResult> RegisterAsync([FromBody] RegistrationRequest user)
        {
            if (user.Username.IsEmail())
            {
                return(Json(new Exception("Username cannot be of email format")));
            }

            if (!user.Email.IsEmail())
            {
                return(Json(new Exception("Email must be of email format")));
            }

            var usernameQuery = new GetUserByIdentifiersQuery(user.Username);

            if (queryBus.Execute(usernameQuery) != null)
            {
                return(Json(new Exception($"Username : {user.Username} already exists")));
            }

            var emailQuery = new GetUserByIdentifiersQuery(user.Email);

            if (queryBus.Execute(emailQuery) != null)
            {
                return(Json(new Exception($"User with email : {user.Email} already exists")));
            }


            var salt     = _encrypter.GetSalt();
            var passHash = _encrypter.GetHash(user.Password, salt);

            var command = new RegisterUserCommand(user.Username, user.Email, passHash, salt);
            await commandBus.ExecuteAsync(command);

            return(StatusCode(201));
        }
コード例 #2
0
        public IActionResult Login([FromBody] LoginRequest user)
        {
            var query       = new GetUserByIdentifiersQuery(user.Username);
            var queryResult = queryBus.Execute(query);

            if (queryResult == null)
            {
                return(Unauthorized());
            }


            var passHash = _encrypter.GetHash(user.Password, queryResult.User.Salt);

            if (passHash != queryResult.User.HashPassword)
            {
                return(Unauthorized());
            }

            var jwtToken = _jwtHandler.CreateTokenByUserObject(queryResult.User);

            return(Json(jwtToken));
        }