public IActionResult Registration([FromBody] UserRegistrationModels registrationModel, [FromServices] IChallengeNotifierService game) { _logger.LogDebug("Registration attempt from {RemoteIp} and {UserAgent}", UserIp, UserAgent); var challenge = _rngGenerator.GetString(6, EAlphabetType.AZ); game.Notify(registrationModel.UserName, challenge); //create user entry and refresh token var dbUser = registrationModel.ToDbUser(); dbUser.Challenge = challenge; dbUser.CreateDateTime = _now; dbUser.State = EUserState.InChallenge; dbUser.HashPasswordAndSet(registrationModel.Password); try { _logger.LogDebug("Adding new user ({UserName}) to DB", dbUser.UserName); _db.Users.Add(dbUser); _db.SaveChanges(); _logger.LogDebug("User ({UserName}) successful added", dbUser.UserName); return(Ok()); } catch (SecurityTokenEncryptionFailedException e) { _logger.LogError(e, "Problem with generating JWT for {UserName}", dbUser.UserName); throw; } catch (Exception e) { _logger.LogError(e, "Problem with saving user (@{User})", dbUser); throw; } }
public static DbUser ToDbUser(this UserRegistrationModels reg) { return(new DbUser() { UserName = reg.UserName }); }