From d69f55c265e0e5873032d5e14e49636ed6c36631 Mon Sep 17 00:00:00 2001 From: Hivert Quentin Date: Thu, 16 Oct 2025 11:32:39 +0200 Subject: [PATCH] fix(tool): ranem-user properly change data in c_defaults and c_settings --- Tools/SOGoToolRenameUser.m | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Tools/SOGoToolRenameUser.m b/Tools/SOGoToolRenameUser.m index 812b1dd54..69399ec7a 100644 --- a/Tools/SOGoToolRenameUser.m +++ b/Tools/SOGoToolRenameUser.m @@ -172,6 +172,9 @@ EOAdaptorContext *ac; EOAdaptorChannel *fc; NSString *profileURL, *sql, *sqlFromUserID, *sqlToUserID; + NSString *old_c_default, *old_c_settings, *new_c_default, *new_c_settings; + NSArray *attrs; + NSDictionary *row; NSException *sqlError; SOGoSystemDefaults *sd; @@ -188,9 +191,22 @@ [ac beginTransaction]; - sql = [NSString stringWithFormat: @"UPDATE %@ SET c_uid = '%@'" + sql = [NSString stringWithFormat: @"SELECT c_defaults, c_settings FROM %@" @" WHERE c_uid = '%@'", - [profileLocation gcsTableName], sqlToUserID, sqlFromUserID]; + [profileLocation gcsTableName], sqlFromUserID]; + sqlError = [fc evaluateExpressionX: sql]; + attrs = [fc describeResults: NO]; + while ((row = [fc fetchAttributes: attrs withZone: NULL])) + { + old_c_default = [row objectForKey: @"c_defaults"]; + old_c_settings = [row objectForKey: @"c_settings"]; + new_c_default = [old_c_default stringByReplacingOccurrencesOfString:fromUserID withString:toUserID]; + new_c_settings = [old_c_settings stringByReplacingOccurrencesOfString:fromUserID withString:toUserID]; + } + + sql = [NSString stringWithFormat: @"UPDATE %@ SET c_uid = '%@', c_defaults = '%@', " + @"c_settings = '%@' WHERE c_uid = '%@'", + [profileLocation gcsTableName], sqlToUserID, new_c_default, new_c_settings, sqlFromUserID]; sqlError = [fc evaluateExpressionX: sql]; if (sqlError) { @@ -568,6 +584,7 @@ [self _updateForeignSubscriptionsFromUser: oldUserID toUser: newUserID]; [self _updateLocalACLsFromUser: oldUserID toUser: newUserID]; [self _updateForeignACLsFromUser: oldUserID toUser: newUserID]; + [self _updateOldUserIDDefaultAndSettings: oldUserID toUser: newUserID]; rc = YES; }