package ru.ulstu.user.util; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser; import ru.ulstu.configuration.Constants; public class UserUtils { private static final int DEF_COUNT = 20; public static String generateActivationKey() { return RandomStringUtils.randomNumeric(DEF_COUNT); } public static String generateResetKey() { return RandomStringUtils.randomNumeric(DEF_COUNT); } public static String getCurrentUserLoginOrEmail(SecurityContext securityContext) { if (securityContext == null) { return null; } final Authentication authentication = securityContext.getAuthentication(); if (authentication.getPrincipal() instanceof UserDetails) { final UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal(); return springSecurityUser.getUsername(); } if (authentication.getPrincipal() instanceof DefaultOidcUser) { final DefaultOidcUser oauth2User = (DefaultOidcUser) authentication.getPrincipal(); return oauth2User.getEmail(); } if (authentication.getPrincipal() instanceof String) { return (String) authentication.getPrincipal(); } return null; } public static String generatePassword() { return RandomStringUtils.randomAscii(Constants.MIN_PASSWORD_LENGTH, Constants.MAX_PASSWORD_LENGTH); } }