public async Task <IActionResult> Register([FromBody] RegisterRequest request)
        {
            if (_userRepository.Exists(request.Username))
            {
                return(BadRequest($"User '{request.Username}' already exists."));
            }

            var form = new Dictionary <string, string>()
            {
                { "user[email]", request.Username },
                { "user[cellphone]", request.PhoneNumber },
                { "user[country_code]", request.CountryCode },
            };

            var client = _clientFactory.CreateClient("authy");

            var response = await client.PostFormAsJObjectAsync("/protected/json/users/new", form);

            var result = response.ToObject <RegistrationResult>();

            if (!result.Success)
            {
                return(BadRequest($"Error registering user: {result.Message}"));
            }

            var newUser = new AuthyUser
            {
                Username     = request.Username,
                CountryCode  = request.CountryCode,
                PhoneNumber  = request.PhoneNumber,
                PasswordHash = request.Password,
                Id           = result.User.Id
            };

            if (!_userRepository.AddUser(newUser))
            {
                return(BadRequest("Unable to add new user to database."));
            }

            HttpContext.Session.SetUsername(newUser.Username);

            return(Ok());
        }
 public bool AddUser(AuthyUser user)
 {
     return(_db.TryAdd(user.Username, user));
 }
Example #3
0
 public static void SetUser(this ISession session, AuthyUser user)
 {
     session.SetString("user", JsonConvert.SerializeObject(user));
 }