mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 11:07:32 +00:00
fix: login (#242)
* password in init user only if needed * reactivate user session * set context AuthorizeClientIDSecret * fix qr code for light * fix copy * check user and org active in auth * add org view provider * handle inactive projects * translate error messages
This commit is contained in:
@@ -30,6 +30,7 @@ type NotifyUser struct {
|
||||
VerifiedEmail string `json:"-" gorm:"column:verified_email"`
|
||||
LastPhone string `json:"phone" gorm:"column:last_phone"`
|
||||
VerifiedPhone string `json:"-" gorm:"column:verified_phone"`
|
||||
PasswordSet bool `json:"-" gorm:"column:password_set"`
|
||||
Sequence uint64 `json:"-" gorm:"column:sequence"`
|
||||
}
|
||||
|
||||
@@ -50,6 +51,7 @@ func NotifyUserFromModel(user *model.NotifyUser) *NotifyUser {
|
||||
VerifiedEmail: user.VerifiedEmail,
|
||||
LastPhone: user.LastPhone,
|
||||
VerifiedPhone: user.VerifiedPhone,
|
||||
PasswordSet: user.PasswordSet,
|
||||
Sequence: user.Sequence,
|
||||
}
|
||||
}
|
||||
@@ -71,6 +73,7 @@ func NotifyUserToModel(user *NotifyUser) *model.NotifyUser {
|
||||
VerifiedEmail: user.VerifiedEmail,
|
||||
LastPhone: user.LastPhone,
|
||||
VerifiedPhone: user.VerifiedPhone,
|
||||
PasswordSet: user.PasswordSet,
|
||||
Sequence: user.Sequence,
|
||||
}
|
||||
}
|
||||
@@ -84,6 +87,10 @@ func (u *NotifyUser) AppendEvent(event *models.Event) (err error) {
|
||||
u.CreationDate = event.CreationDate
|
||||
u.setRootData(event)
|
||||
err = u.setData(event)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = u.setPasswordData(event)
|
||||
case es_model.UserProfileChanged:
|
||||
err = u.setData(event)
|
||||
case es_model.UserEmailChanged:
|
||||
@@ -94,6 +101,8 @@ func (u *NotifyUser) AppendEvent(event *models.Event) (err error) {
|
||||
err = u.setData(event)
|
||||
case es_model.UserPhoneVerified:
|
||||
u.VerifiedPhone = u.LastPhone
|
||||
case es_model.UserPasswordChanged:
|
||||
err = u.setPasswordData(event)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -105,8 +114,18 @@ func (u *NotifyUser) setRootData(event *models.Event) {
|
||||
|
||||
func (u *NotifyUser) setData(event *models.Event) error {
|
||||
if err := json.Unmarshal(event.Data, u); err != nil {
|
||||
logging.Log("EVEN-lso9e").WithError(err).Error("could not unmarshal event data")
|
||||
logging.Log("MODEL-lso9e").WithError(err).Error("could not unmarshal event data")
|
||||
return caos_errs.ThrowInternal(nil, "MODEL-8iows", "could not unmarshal data")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *NotifyUser) setPasswordData(event *models.Event) error {
|
||||
password := new(es_model.Password)
|
||||
if err := json.Unmarshal(event.Data, password); err != nil {
|
||||
logging.Log("MODEL-dfhw6").WithError(err).Error("could not unmarshal event data")
|
||||
return caos_errs.ThrowInternal(nil, "MODEL-BHFD2", "could not unmarshal data")
|
||||
}
|
||||
u.PasswordSet = password.Secret != nil
|
||||
return nil
|
||||
}
|
||||
|
@@ -76,20 +76,25 @@ func UserSessionsToModel(userSessions []*UserSessionView) []*model.UserSessionVi
|
||||
}
|
||||
|
||||
func (v *UserSessionView) AppendEvent(event *models.Event) {
|
||||
v.Sequence = event.Sequence
|
||||
v.ChangeDate = event.CreationDate
|
||||
switch event.Type {
|
||||
case es_model.UserPasswordCheckSucceeded:
|
||||
v.PasswordVerification = event.CreationDate
|
||||
v.State = int32(req_model.UserSessionStateActive)
|
||||
case es_model.UserPasswordCheckFailed,
|
||||
es_model.UserPasswordChanged:
|
||||
v.PasswordVerification = time.Time{}
|
||||
case es_model.MfaOtpCheckSucceeded:
|
||||
v.MfaSoftwareVerification = event.CreationDate
|
||||
v.MfaSoftwareVerificationType = int32(req_model.MfaTypeOTP)
|
||||
v.State = int32(req_model.UserSessionStateActive)
|
||||
case es_model.MfaOtpCheckFailed,
|
||||
es_model.MfaOtpRemoved:
|
||||
v.MfaSoftwareVerification = time.Time{}
|
||||
case es_model.SignedOut:
|
||||
case es_model.SignedOut,
|
||||
es_model.UserLocked,
|
||||
es_model.UserDeactivated:
|
||||
v.PasswordVerification = time.Time{}
|
||||
v.MfaSoftwareVerification = time.Time{}
|
||||
v.State = int32(req_model.UserSessionStateTerminated)
|
||||
|
@@ -59,7 +59,7 @@ func PutUserSession(db *gorm.DB, table string, session *model.UserSessionView) e
|
||||
return save(db, session)
|
||||
}
|
||||
|
||||
func DeleteUserSession(db *gorm.DB, table, sessionID string) error {
|
||||
delete := view.PrepareDeleteByKey(table, model.UserSessionSearchKey(usr_model.USERSESSIONSEARCHKEY_USER_ID), sessionID)
|
||||
func DeleteUserSessions(db *gorm.DB, table, userID string) error {
|
||||
delete := view.PrepareDeleteByKey(table, model.UserSessionSearchKey(usr_model.USERSESSIONSEARCHKEY_USER_ID), userID)
|
||||
return delete(db)
|
||||
}
|
||||
|
Reference in New Issue
Block a user