mirror of
https://github.com/zitadel/zitadel.git
synced 2025-06-18 18:18:35 +00:00
fix: check for externalidp id (#2187)
* fix: check for externalidp id * fix: translations * set userinfo after external login * set userinfo after external login Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
parent
677836f6f5
commit
1e2c1a4f04
@ -215,7 +215,7 @@ func (repo *AuthRequestRepo) CheckExternalUserLogin(ctx context.Context, authReq
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = repo.checkExternalUserLogin(request, externalUser.IDPConfigID, externalUser.ExternalUserID)
|
err = repo.checkExternalUserLogin(ctx, request, externalUser.IDPConfigID, externalUser.ExternalUserID)
|
||||||
if errors.IsNotFound(err) {
|
if errors.IsNotFound(err) {
|
||||||
if err := repo.setLinkingUser(ctx, request, externalUser); err != nil {
|
if err := repo.setLinkingUser(ctx, request, externalUser); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -578,7 +578,7 @@ func (repo *AuthRequestRepo) checkSelectedExternalIDP(request *domain.AuthReques
|
|||||||
return errors.ThrowNotFound(nil, "LOGIN-Nsm8r", "Errors.User.ExternalIDP.NotAllowed")
|
return errors.ThrowNotFound(nil, "LOGIN-Nsm8r", "Errors.User.ExternalIDP.NotAllowed")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (repo *AuthRequestRepo) checkExternalUserLogin(request *domain.AuthRequest, idpConfigID, externalUserID string) (err error) {
|
func (repo *AuthRequestRepo) checkExternalUserLogin(ctx context.Context, request *domain.AuthRequest, idpConfigID, externalUserID string) (err error) {
|
||||||
externalIDP := new(user_view_model.ExternalIDPView)
|
externalIDP := new(user_view_model.ExternalIDPView)
|
||||||
if request.RequestedOrgID != "" {
|
if request.RequestedOrgID != "" {
|
||||||
externalIDP, err = repo.View.ExternalIDPByExternalUserIDAndIDPConfigIDAndResourceOwner(externalUserID, idpConfigID, request.RequestedOrgID)
|
externalIDP, err = repo.View.ExternalIDPByExternalUserIDAndIDPConfigIDAndResourceOwner(externalUserID, idpConfigID, request.RequestedOrgID)
|
||||||
@ -588,7 +588,11 @@ func (repo *AuthRequestRepo) checkExternalUserLogin(request *domain.AuthRequest,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
request.SetUserInfo(externalIDP.UserID, "", "", "", "", externalIDP.ResourceOwner)
|
user, err := activeUserByID(ctx, repo.UserViewProvider, repo.UserEventProvider, repo.OrgViewProvider, repo.LockoutPolicyViewProvider, externalIDP.UserID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
request.SetUserInfo(user.ID, user.UserName, user.PreferredLoginName, user.DisplayName, user.AvatarKey, user.ResourceOwner)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +27,30 @@ func NewHumanExternalIDPWriteModel(userID, idpConfigID, externalUserID, resource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wm *HumanExternalIDPWriteModel) AppendEvents(events ...eventstore.EventReader) {
|
||||||
|
for _, event := range events {
|
||||||
|
switch e := event.(type) {
|
||||||
|
case *user.HumanExternalIDPAddedEvent:
|
||||||
|
if e.IDPConfigID != wm.IDPConfigID && e.ExternalUserID != wm.ExternalUserID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
wm.WriteModel.AppendEvents(e)
|
||||||
|
case *user.HumanExternalIDPRemovedEvent:
|
||||||
|
if e.IDPConfigID != wm.IDPConfigID && e.ExternalUserID != wm.ExternalUserID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
wm.WriteModel.AppendEvents(e)
|
||||||
|
case *user.HumanExternalIDPCascadeRemovedEvent:
|
||||||
|
if e.IDPConfigID != wm.IDPConfigID && e.ExternalUserID != wm.ExternalUserID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
wm.WriteModel.AppendEvents(e)
|
||||||
|
case *user.UserRemovedEvent:
|
||||||
|
wm.WriteModel.AppendEvents(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (wm *HumanExternalIDPWriteModel) Reduce() error {
|
func (wm *HumanExternalIDPWriteModel) Reduce() error {
|
||||||
for _, event := range wm.Events {
|
for _, event := range wm.Events {
|
||||||
switch e := event.(type) {
|
switch e := event.(type) {
|
||||||
|
@ -92,6 +92,7 @@ Errors:
|
|||||||
NotAllowed: Externer IDP ist auf dieser Organisation nicht erlaubt.
|
NotAllowed: Externer IDP ist auf dieser Organisation nicht erlaubt.
|
||||||
MinimumExternalIDPNeeded: Mindestens ein IDP muss hinzugefügt werden.
|
MinimumExternalIDPNeeded: Mindestens ein IDP muss hinzugefügt werden.
|
||||||
AlreadyExists: External IDP ist bereits vergeben
|
AlreadyExists: External IDP ist bereits vergeben
|
||||||
|
NotFound: Externe IDP nicht gefunden
|
||||||
MFA:
|
MFA:
|
||||||
OTP:
|
OTP:
|
||||||
AlreadyReady: Multifaktor OTP (OneTimePassword) ist bereits eingerichtet
|
AlreadyReady: Multifaktor OTP (OneTimePassword) ist bereits eingerichtet
|
||||||
|
@ -92,6 +92,7 @@ Errors:
|
|||||||
NotAllowed: External IDP not allowed on this organisation
|
NotAllowed: External IDP not allowed on this organisation
|
||||||
MinimumExternalIDPNeeded: At least one IDP must be added
|
MinimumExternalIDPNeeded: At least one IDP must be added
|
||||||
AlreadyExists: External IDP already taken
|
AlreadyExists: External IDP already taken
|
||||||
|
NotFound: External IDP not found
|
||||||
MFA:
|
MFA:
|
||||||
OTP:
|
OTP:
|
||||||
AlreadyReady: Multifactor OTP (OneTimePassword) is already set up
|
AlreadyReady: Multifactor OTP (OneTimePassword) is already set up
|
||||||
|
Loading…
x
Reference in New Issue
Block a user