public IActionResult RegisterAccount(RegisterUserInput inputUser) { if (string.IsNullOrWhiteSpace(inputUser.Username) || string.IsNullOrWhiteSpace(inputUser.Password) || string.IsNullOrWhiteSpace(inputUser.Captcha)) { _logger.LogInformation("Username, password or captcha is empty."); return(BadRequest()); } if (inputUser.Username.Length > 50) { _logger.LogInformation("Username exceeds permitted length."); return(BadRequest()); } if (!_captcha.VerifyCaptcha(inputUser.Captcha, HttpContext.Connection.RemoteIpAddress, "register")) { _logger.LogInformation("Captcha failed verification"); return(BadRequest()); } if (Guid.TryParse(inputUser.Token, out _) && _memoryCache.TryGetValue("R1" + inputUser.Token, out User cachedUser)) { _memoryCache.Remove("R1" + inputUser.Token); cachedUser.Password = inputUser.Password; cachedUser.Username = inputUser.Username.ToLower(); if (_authHandler.RegisterUser(ref cachedUser)) { _activityLogger.LogRegister(Request.HttpContext.Connection.RemoteIpAddress, cachedUser); return(Ok()); } _logger.LogInformation("Auth handler rejected account."); return(BadRequest()); } _logger.LogInformation("Token is invalid."); return(BadRequest()); }