fix(sync): normalize username to lowercase for Mattermost and Gitea password sync
All checks were successful
Build and Deploy / deploy (push) Successful in 42s
All checks were successful
Build and Deploy / deploy (push) Successful in 42s
Mattermost and Gitea store usernames as lowercase but SilverDESK passes the original case (e.g. "Merlin" instead of "merlin"), causing 404/400 errors on case-sensitive API lookups. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -193,26 +193,29 @@ public class ProvisioningService
|
||||
|
||||
public async Task<(bool Success, string Message)> SyncPasswordAsync(string username, string newPassword)
|
||||
{
|
||||
// Normalize username to lowercase - Mattermost and Gitea store usernames as lowercase
|
||||
// and their API lookups are case-sensitive
|
||||
var normalizedUsername = username.ToLowerInvariant();
|
||||
var results = new List<string>();
|
||||
var allSuccess = true;
|
||||
|
||||
// 1. Mattermost - need to look up user ID first
|
||||
var (mmOk, mmMsg) = await UpdateMattermostPasswordAsync(username, newPassword);
|
||||
var (mmOk, mmMsg) = await UpdateMattermostPasswordAsync(normalizedUsername, newPassword);
|
||||
results.Add($"Mattermost: {mmMsg}");
|
||||
if (!mmOk) allSuccess = false;
|
||||
|
||||
// 2. Mailcow
|
||||
var (mailOk, mailMsg) = await UpdateMailcowPasswordAsync(username, newPassword);
|
||||
var (mailOk, mailMsg) = await UpdateMailcowPasswordAsync(normalizedUsername, newPassword);
|
||||
results.Add($"Mailcow: {mailMsg}");
|
||||
if (!mailOk) allSuccess = false;
|
||||
|
||||
// 3. Gitea
|
||||
var (giteaOk, giteaMsg) = await UpdateGiteaPasswordAsync(username, newPassword);
|
||||
var (giteaOk, giteaMsg) = await UpdateGiteaPasswordAsync(normalizedUsername, newPassword);
|
||||
results.Add($"Gitea: {giteaMsg}");
|
||||
if (!giteaOk) allSuccess = false;
|
||||
|
||||
var summary = string.Join("; ", results);
|
||||
_logger.LogInformation("Password sync for {Username}: {Summary}", username, summary);
|
||||
_logger.LogInformation("Password sync for {Username} (normalized: {NormalizedUsername}): {Summary}", username, normalizedUsername, summary);
|
||||
|
||||
return (allSuccess, summary);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user