PrivilegedUserProperties.java

package cn.home1.cloud.config.server.security;

import static lombok.AccessLevel.PRIVATE;
import static org.apache.commons.lang3.StringUtils.isBlank;

import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.security.SecurityProperties;

import java.util.List;
import java.util.UUID;

import javax.annotation.PostConstruct;

@Getter
@Setter
@Slf4j
public class PrivilegedUserProperties {

    @Autowired
    @Getter(value = PRIVATE)
    private SecurityProperties securityProperties;

    @Value("${spring.security.hook.name:hook}")
    private String hookName;

    @Value("${spring.security.hook.password:hook_pass}")
    private String hookPassword;

    public String getAdminName() {
        return this.securityProperties.getUser().getName();
    }

    public String getAdminPassword() {
        return this.securityProperties.getUser().getPassword();
    }

    public List<String> getAdminRoles() {
        return this.securityProperties.getUser().getRoles();
    }

    @PostConstruct
    private void init() {
        if (isBlank(this.getAdminPassword())) {
            this.securityProperties.getUser().setPassword(UUID.randomUUID().toString());
            log.info("auto generated admin password, username:{}, password:{}", this.getAdminName(), this.getAdminPassword());
        }

        if (isBlank(this.hookPassword)) {
            this.hookPassword = UUID.randomUUID().toString();
            log.info("auto generated hook password, username:{}, password:{}", this.hookName, this.hookPassword);
        }
    }
}