public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAuthenticationCodeInvalid(Code) || server.AssertUserOffline()) { return; } using DatabaseManager databaseManager = new DatabaseManager(server); string userid = SecurityManager.GenerateHid(); string query = DatabaseEssentials.Security.SanitizeQuery(new string[] { "INSERT INTO Tbl_user (password, hid, email) VALUES (\'", server.Account.Password, "\',\'", userid, "\', \'", server.Account.AccountInfo.Email, "\');" }); SqlApiRequest sqlRequets = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1); SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequets, out bool success); if (!success) { return; } if (!modifyDataResponse.Success) { ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to create user."); return; } server.Account.AuthenticationCode = string.Empty; server.Account.AuthenticationId = ApiRequestId.Invalid; server.Account.AuthenticationTime = -1; GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.ConfirmAccount, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(response); string json = serializedApiResponse.Serialize(); server.Send(json); server.UnitTesting.MethodSuccess = true; }
public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAuthenticationCodeInvalid(Code) || server.AssertUserOnline() || server.AssertPasswordSet() || server.AssertIdSet()) { return; } using DatabaseManager databaseManager = new DatabaseManager(server); // Check if security token is valid. string query = DatabaseEssentials.Security.SanitizeQuery(new string[] { "SELECT u.id FROM Tbl_cookies as c, Tbl_user as u WHERE c.value = \'", SecurityToken, "\' AND u.id = c.userid;" }); SqlApiRequest sqlRequest = SqlApiRequest.Create(SqlRequestId.GetSingleOrDefault, query, 2); SqlSingleOrDefaultResponse singleOrDefaultResponse = databaseManager.AwaitSingleOrDefaultResponse(sqlRequest, out bool success); if (!success) { return; } if (!singleOrDefaultResponse.Success || !singleOrDefaultResponse.Result.Equals(server.Account.Id)) { ApiError.Throw(ApiErrorCode.InvalidToken, server, "Security token was invalid."); return; } // Reset security token expiration timer.. int expirationDate = DatabaseEssentials.GetTimeStamp() + MainServer.Config.WamsrvSecurityConfig.SecurityTokenExpirationTime; query = DatabaseEssentials.Security.SanitizeQuery(new string[] { "UPDATE Tbl_cookies SET expires = \'", expirationDate.ToString(), "\' WHERE value = \'", SecurityToken, "\';" }); sqlRequest = SqlApiRequest.Create(SqlRequestId.ModifyData, query, -1); SqlModifyDataResponse modifyDataResponse = databaseManager.AwaitModifyDataResponse(sqlRequest, out success); if (!success) { return; } if (!modifyDataResponse.Success) { ApiError.Throw(ApiErrorCode.InternalServerError, server, "Unable to refresh security token."); return; } // Delete all other security tokens associated with the account. if (databaseManager.DeleteSecurityTokens(new string[] { SecurityToken })) { return; } // Update password. if (databaseManager.UpdatePassword()) { return; } server.Account.AuthenticationCode = string.Empty; server.Account.AuthenticationId = ApiRequestId.Invalid; server.Account.AuthenticationTime = -1; GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.ConfirmAccount, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(response); string json = serializedApiResponse.Serialize(); server.Send(json); server.UnitTesting.MethodSuccess = true; }
public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAuthenticationCodeInvalid(Code) || server.AssertUserOffline() || server.AssertIdSet()) { return; } server.Account.Password = SecurityManager.ScryptHash(Password); using DatabaseManager databaseManager = new DatabaseManager(server); if (databaseManager.UpdatePassword() || databaseManager.DeleteSecurityTokens(Array.Empty <string>())) { return; } GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.ConfirmPasswordReset, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(response); string json = serializedApiResponse.Serialize(); server.Send(json); server.Account = null; server.UnitTesting.MethodSuccess = true; }