@@ -154,20 +154,27 @@ function loadAuthAdapter(provider, authOptions) {
154154 return ;
155155 }
156156
157- const adapter = defaultAdapter instanceof AuthAdapter ? defaultAdapter : Object . assign ( { } , defaultAdapter ) ;
157+ const adapter =
158+ defaultAdapter instanceof AuthAdapter ? defaultAdapter : Object . assign ( { } , defaultAdapter ) ;
158159 const keys = [
159160 'validateAuthData' ,
160161 'validateAppId' ,
161162 'validateSetUp' ,
162163 'validateLogin' ,
163164 'validateUpdate' ,
164165 'challenge' ,
165- 'policy'
166+ 'validateOptions' ,
167+ 'policy' ,
168+ 'afterFind' ,
166169 ] ;
167170 const defaultAuthAdapter = new AuthAdapter ( ) ;
168171 keys . forEach ( key => {
169172 const existing = adapter ?. [ key ] ;
170- if ( existing && typeof existing === 'function' && existing . toString ( ) === defaultAuthAdapter [ key ] . toString ( ) ) {
173+ if (
174+ existing &&
175+ typeof existing === 'function' &&
176+ existing . toString ( ) === defaultAuthAdapter [ key ] . toString ( )
177+ ) {
171178 adapter [ key ] = null ;
172179 }
173180 } ) ;
@@ -184,6 +191,9 @@ function loadAuthAdapter(provider, authOptions) {
184191 } ) ;
185192 }
186193 }
194+ if ( adapter . validateOptions ) {
195+ adapter . validateOptions ( providerOptions ) ;
196+ }
187197
188198 return { adapter, appIds, providerOptions } ;
189199}
@@ -204,9 +214,35 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
204214 return { validator : authDataValidator ( provider , adapter , appIds , providerOptions ) , adapter } ;
205215 } ;
206216
217+ const runAfterFind = async authData => {
218+ if ( ! authData ) {
219+ return ;
220+ }
221+ const adapters = Object . keys ( authData ) ;
222+ await Promise . all (
223+ adapters . map ( async provider => {
224+ const authAdapter = getValidatorForProvider ( provider ) ;
225+ if ( ! authAdapter ) {
226+ return ;
227+ }
228+ const {
229+ adapter : { afterFind } ,
230+ providerOptions,
231+ } = authAdapter ;
232+ if ( afterFind && typeof afterFind === 'function' ) {
233+ const result = afterFind ( authData [ provider ] , providerOptions ) ;
234+ if ( result ) {
235+ authData [ provider ] = result ;
236+ }
237+ }
238+ } )
239+ ) ;
240+ } ;
241+
207242 return Object . freeze ( {
208243 getValidatorForProvider,
209244 setEnableAnonymousUsers,
245+ runAfterFind,
210246 } ) ;
211247} ;
212248
0 commit comments