fix(oidc): make device auth audience and scope nullable (#7777)

This fixes the projection of events that have a null audience or scope.
As audience was added in v2.50, legacy events do not have an audience, this made replay of the old events not possible after an upgrade.

(cherry picked from commit be00e3861a)
This commit is contained in:
Tim Möhlmann
2024-04-16 11:34:38 +03:00
committed by Livio Spring
parent 905799c736
commit 86e6c2a5df
2 changed files with 11 additions and 11 deletions

View File

@@ -169,15 +169,15 @@ func TestQueries_DeviceAuthByDeviceCode(t *testing.T) {
const ( const (
expectedDeviceAuthQueryC = `SELECT` + expectedDeviceAuthQueryC = `SELECT` +
` projections.device_auth_requests1.client_id,` + ` projections.device_auth_requests2.client_id,` +
` projections.device_auth_requests1.device_code,` + ` projections.device_auth_requests2.device_code,` +
` projections.device_auth_requests1.user_code,` + ` projections.device_auth_requests2.user_code,` +
` projections.device_auth_requests1.scopes,` + ` projections.device_auth_requests2.scopes,` +
` projections.device_auth_requests1.audience` + ` projections.device_auth_requests2.audience` +
` FROM projections.device_auth_requests1` ` FROM projections.device_auth_requests2`
expectedDeviceAuthWhereUserCodeQueryC = expectedDeviceAuthQueryC + expectedDeviceAuthWhereUserCodeQueryC = expectedDeviceAuthQueryC +
` WHERE projections.device_auth_requests1.instance_id = $1` + ` WHERE projections.device_auth_requests2.instance_id = $1` +
` AND projections.device_auth_requests1.user_code = $2` ` AND projections.device_auth_requests2.user_code = $2`
) )
var ( var (

View File

@@ -11,7 +11,7 @@ import (
) )
const ( const (
DeviceAuthRequestProjectionTable = "projections.device_auth_requests1" DeviceAuthRequestProjectionTable = "projections.device_auth_requests2"
DeviceAuthRequestColumnClientID = "client_id" DeviceAuthRequestColumnClientID = "client_id"
DeviceAuthRequestColumnDeviceCode = "device_code" DeviceAuthRequestColumnDeviceCode = "device_code"
@@ -44,8 +44,8 @@ func (*deviceAuthRequestProjection) Init() *old_handler.Check {
handler.NewColumn(DeviceAuthRequestColumnClientID, handler.ColumnTypeText), handler.NewColumn(DeviceAuthRequestColumnClientID, handler.ColumnTypeText),
handler.NewColumn(DeviceAuthRequestColumnDeviceCode, handler.ColumnTypeText), handler.NewColumn(DeviceAuthRequestColumnDeviceCode, handler.ColumnTypeText),
handler.NewColumn(DeviceAuthRequestColumnUserCode, handler.ColumnTypeText), handler.NewColumn(DeviceAuthRequestColumnUserCode, handler.ColumnTypeText),
handler.NewColumn(DeviceAuthRequestColumnScopes, handler.ColumnTypeTextArray), handler.NewColumn(DeviceAuthRequestColumnScopes, handler.ColumnTypeTextArray, handler.Nullable()),
handler.NewColumn(DeviceAuthRequestColumnAudience, handler.ColumnTypeTextArray), handler.NewColumn(DeviceAuthRequestColumnAudience, handler.ColumnTypeTextArray, handler.Nullable()),
handler.NewColumn(DeviceAuthRequestColumnCreationDate, handler.ColumnTypeTimestamp), handler.NewColumn(DeviceAuthRequestColumnCreationDate, handler.ColumnTypeTimestamp),
handler.NewColumn(DeviceAuthRequestColumnChangeDate, handler.ColumnTypeTimestamp), handler.NewColumn(DeviceAuthRequestColumnChangeDate, handler.ColumnTypeTimestamp),
handler.NewColumn(DeviceAuthRequestColumnSequence, handler.ColumnTypeInt64), handler.NewColumn(DeviceAuthRequestColumnSequence, handler.ColumnTypeInt64),