fix(namespace): use stable random personal namespace slugs

This commit is contained in:
XiaoSeS 2026-08-28 15:13:17 +08:00
parent dc31bb97f4
commit 04bb414b37
3 changed files with 10 additions and 3 deletions

View file

@ -3,6 +3,7 @@ package com.iflytek.skillhub.domain.namespace;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.UUID;
/**
* Renders the operator-configured name templates for a personal namespace.
@ -37,7 +38,8 @@ final class PersonalNamespaceNaming {
Map<String, String> values = Map.of(
PersonalNamespaceSettings.PLACEHOLDER_USERNAME, username(owner),
PersonalNamespaceSettings.PLACEHOLDER_EMAIL_PREFIX, emailPrefix(owner),
PersonalNamespaceSettings.PLACEHOLDER_USER_ID, blankToEmpty(owner.userId()));
PersonalNamespaceSettings.PLACEHOLDER_USER_ID, blankToEmpty(owner.userId()),
PersonalNamespaceSettings.PLACEHOLDER_RANDOM, randomSuffix());
Matcher matcher = PLACEHOLDER.matcher(template);
StringBuilder rendered = new StringBuilder();
@ -101,4 +103,8 @@ final class PersonalNamespaceNaming {
private static String blankToEmpty(String value) {
return value == null ? "" : value.trim();
}
private static String randomSuffix() {
return UUID.randomUUID().toString().replace("-", "").substring(0, 8).toLowerCase();
}
}

View file

@ -24,9 +24,9 @@ public class PersonalNamespaceProvisioningProperties {
* Spring property references. Operators change the templates in the admin console, so these
* defaults only apply until someone does.
*/
private String slugTemplate = "${username}";
private String slugTemplate = "personal-${random}";
private String displayNameTemplate = "${username}";
private String displayNameTemplate = "${username}-个人空间";
public boolean isEnabled() {
return enabled;

View file

@ -20,4 +20,5 @@ public record PersonalNamespaceSettings(
public static final String PLACEHOLDER_USERNAME = "username";
public static final String PLACEHOLDER_EMAIL_PREFIX = "email_prefix";
public static final String PLACEHOLDER_USER_ID = "user_id";
public static final String PLACEHOLDER_RANDOM = "random";
}