From 3a5d3d521fd6df64cfad3c2ed930d02b543b7f42 Mon Sep 17 00:00:00 2001 From: Gani Georgiev Date: Sun, 26 Mar 2023 19:32:23 +0300 Subject: [PATCH] added ProviderName and ProviderClient fields to core.RecordAuthWithOAuth2Event --- CHANGELOG.md | 7 ++++++- apis/record_auth.go | 2 ++ core/events.go | 10 ++++++---- forms/record_oauth2_login.go | 14 ++++++++------ 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55f57aa4..6d0ab989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,12 @@ - Added `migrate history-sync` command to clean `_migrations` history table from deleted migration files references. -- Added `core.RecordAuthWithOAuth2Event.IsNewRecord` bool field to indicate whether the OAuth2 action created a new auth record. +- Added new fields to the `core.RecordAuthWithOAuth2Event` struct: + ``` + IsNewRecord bool, // boolean field indicating whether the OAuth2 action created a new auth record + ProviderName string, // the name of the OAuth2 provider (eg. "google") + ProviderClient auth.Provider, // the loaded Provider client instance + ``` - **!** Renamed `daos.GetTableColumns()` to `daos.TableColumns()` for consistency with the other Dao table related helpers. diff --git a/apis/record_auth.go b/apis/record_auth.go index 9f3bc7b0..6c7707b4 100644 --- a/apis/record_auth.go +++ b/apis/record_auth.go @@ -180,6 +180,7 @@ func (api *recordAuthApi) authWithOAuth2(c echo.Context) error { event := new(core.RecordAuthWithOAuth2Event) event.HttpContext = c event.Collection = collection + event.ProviderName = form.Provider event.IsNewRecord = false form.SetBeforeNewRecordCreateFunc(func(createForm *forms.RecordUpsert, authRecord *models.Record, authUser *auth.AuthUser) error { @@ -223,6 +224,7 @@ func (api *recordAuthApi) authWithOAuth2(c echo.Context) error { return func(data *forms.RecordOAuth2LoginData) error { event.Record = data.Record event.OAuth2User = data.OAuth2User + event.ProviderClient = data.ProviderClient return api.app.OnRecordBeforeAuthWithOAuth2Request().Trigger(event, func(e *core.RecordAuthWithOAuth2Event) error { data.Record = e.Record diff --git a/core/events.go b/core/events.go index 78aa2ef1..17d72a8b 100644 --- a/core/events.go +++ b/core/events.go @@ -205,10 +205,12 @@ type RecordAuthWithPasswordEvent struct { type RecordAuthWithOAuth2Event struct { BaseCollectionEvent - HttpContext echo.Context - Record *models.Record - OAuth2User *auth.AuthUser - IsNewRecord bool + HttpContext echo.Context + ProviderName string + ProviderClient auth.Provider + Record *models.Record + OAuth2User *auth.AuthUser + IsNewRecord bool } type RecordAuthRefreshEvent struct { diff --git a/forms/record_oauth2_login.go b/forms/record_oauth2_login.go index 45afd662..aac52d55 100644 --- a/forms/record_oauth2_login.go +++ b/forms/record_oauth2_login.go @@ -18,9 +18,10 @@ import ( // RecordOAuth2LoginData defines the OA type RecordOAuth2LoginData struct { - ExternalAuth *models.ExternalAuth - Record *models.Record - OAuth2User *auth.AuthUser + ExternalAuth *models.ExternalAuth + Record *models.Record + OAuth2User *auth.AuthUser + ProviderClient auth.Provider } // BeforeOAuth2RecordCreateFunc defines a callback function that will @@ -176,9 +177,10 @@ func (form *RecordOAuth2Login) Submit( } interceptorData := &RecordOAuth2LoginData{ - ExternalAuth: rel, - Record: authRecord, - OAuth2User: authUser, + ExternalAuth: rel, + Record: authRecord, + OAuth2User: authUser, + ProviderClient: provider, } interceptorsErr := runInterceptors(interceptorData, func(newData *RecordOAuth2LoginData) error {