1
0
mirror of https://github.com/pocket-id/pocket-id.git synced 2026-02-04 15:04:43 +00:00

fix: allow LDAP users to update their locale

This commit is contained in:
Elias Schneider
2025-05-03 23:32:56 +02:00
parent bda178c2bb
commit 0b9cbf47e3

View File

@@ -262,13 +262,13 @@ func (s *UserService) createUserInternal(ctx context.Context, input dto.UserCrea
return user, nil return user, nil
} }
func (s *UserService) UpdateUser(ctx context.Context, userID string, updatedUser dto.UserCreateDto, updateOwnUser bool, allowLdapUpdate bool) (model.User, error) { func (s *UserService) UpdateUser(ctx context.Context, userID string, updatedUser dto.UserCreateDto, updateOwnUser bool, isLdapSync bool) (model.User, error) {
tx := s.db.Begin() tx := s.db.Begin()
defer func() { defer func() {
tx.Rollback() tx.Rollback()
}() }()
user, err := s.updateUserInternal(ctx, userID, updatedUser, updateOwnUser, allowLdapUpdate, tx) user, err := s.updateUserInternal(ctx, userID, updatedUser, updateOwnUser, isLdapSync, tx)
if err != nil { if err != nil {
return model.User{}, err return model.User{}, err
} }
@@ -292,19 +292,23 @@ func (s *UserService) updateUserInternal(ctx context.Context, userID string, upd
return model.User{}, err return model.User{}, err
} }
// Disallow updating the user if it is an LDAP group and LDAP is enabled // Check if this is an LDAP user and LDAP is enabled
if !isLdapSync && user.LdapID != nil && s.appConfigService.GetDbConfig().LdapEnabled.IsTrue() { isLdapUser := user.LdapID != nil && s.appConfigService.GetDbConfig().LdapEnabled.IsTrue()
return model.User{}, &common.LdapUserUpdateError{}
}
user.FirstName = updatedUser.FirstName // For LDAP users, only allow updating the locale unless it's an LDAP sync
user.LastName = updatedUser.LastName if !isLdapSync && isLdapUser {
user.Email = updatedUser.Email // Only update the locale for LDAP users
user.Username = updatedUser.Username user.Locale = updatedUser.Locale
user.Locale = updatedUser.Locale } else {
if !updateOwnUser { user.FirstName = updatedUser.FirstName
user.IsAdmin = updatedUser.IsAdmin user.LastName = updatedUser.LastName
user.Disabled = updatedUser.Disabled user.Email = updatedUser.Email
user.Username = updatedUser.Username
user.Locale = updatedUser.Locale
if !updateOwnUser {
user.IsAdmin = updatedUser.IsAdmin
user.Disabled = updatedUser.Disabled
}
} }
err = tx. err = tx.