fix(actions): provide browser info and handle nil pointer (#5277)

* fix(actions): provide browser info and handle nil pointer

* fix(actions): use correct user id in post registration

---------

Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
This commit is contained in:
Livio Spring 2023-02-24 16:13:11 +01:00 committed by GitHub
parent 737d14e81b
commit 82ffd6dffb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 11 deletions

View File

@ -25,15 +25,11 @@ func AuthRequestFromDomain(c *actions.FieldConfig, request *domain.AuthRequest)
}
return c.Runtime.ToValue(&authRequest{
Id: request.ID,
AgentId: request.AgentID,
CreationDate: request.CreationDate,
ChangeDate: request.ChangeDate,
BrowserInfo: &browserInfo{
UserAgent: request.BrowserInfo.UserAgent,
AcceptLanguage: request.BrowserInfo.AcceptLanguage,
RemoteIp: request.BrowserInfo.RemoteIP,
},
Id: request.ID,
AgentId: request.AgentID,
CreationDate: request.CreationDate,
ChangeDate: request.ChangeDate,
BrowserInfo: browserInfoFromDomain(request.BrowserInfo),
ApplicationId: request.ApplicationID,
CallbackUri: request.CallbackURI,
TransferState: request.TransferState,
@ -103,6 +99,17 @@ type authRequest struct {
AuthTime time.Time
}
func browserInfoFromDomain(info *domain.BrowserInfo) *browserInfo {
if info == nil {
return nil
}
return &browserInfo{
UserAgent: info.UserAgent,
AcceptLanguage: info.AcceptLanguage,
RemoteIp: info.RemoteIP,
}
}
func requestFromDomain(req domain.Request) *request {
r := new(request)

View File

@ -314,7 +314,7 @@ func (l *Login) runPostCreationActions(
actions.SetFields("v1",
actions.SetFields("getUser", func(c *actions.FieldConfig) interface{} {
return func(call goja.FunctionCall) goja.Value {
user, err := l.query.GetUserByID(actionCtx, true, authRequest.UserID, false)
user, err := l.query.GetUserByID(actionCtx, true, userID, false)
if err != nil {
panic(err)
}

View File

@ -166,7 +166,7 @@ func (l *Login) registerExternalUser(w http.ResponseWriter, r *http.Request, aut
l.renderRegisterOption(w, r, authReq, err)
return
}
err = l.authRepo.AutoRegisterExternalUser(setContext(r.Context(), resourceOwner), user, externalIDP, nil, authReq.ID, authReq.AgentID, resourceOwner, metadata, nil)
err = l.authRepo.AutoRegisterExternalUser(setContext(r.Context(), resourceOwner), user, externalIDP, nil, authReq.ID, authReq.AgentID, resourceOwner, metadata, domain.BrowserInfoFromRequest(r))
if err != nil {
l.renderRegisterOption(w, r, authReq, err)
return