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)); }
public static void SetUser(this ISession session, AuthyUser user) { session.SetString("user", JsonConvert.SerializeObject(user)); }