All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.mynewtons.starter.oauth2.config.security.audit.UsernameAuditorAware Maven / Gradle / Ivy

The newest version!
package ru.mynewtons.starter.oauth2.config.security.audit;

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Optional;

import static java.util.Optional.of;

@Slf4j
public class UsernameAuditorAware implements AuditorAware {

    @Override
    public Optional getCurrentAuditor() {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

        if (authentication == null || !authentication.isAuthenticated()) {
            return Optional.empty();
        }

        Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (principal instanceof String) {
            return Optional.of((String) principal);
        }
        if (principal instanceof User) {
            User user = (User) principal;
            return Optional.of(user.getUsername());
        }
        if (principal instanceof UserDetails) {
            UserDetails userDetails = (UserDetails) principal;
            return  Optional.of(userDetails.getUsername());
        }
        if (principal instanceof Authentication) {
            Authentication auth = (Authentication) principal;
            return Optional.of(auth.getName());
        }
        log.warn(" Object principal is not String/org.springframework.security.core.userdetails.User/Authentication");
        return Optional.empty();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy