Java tutorial
/* * This file is part of MystudiesMyteaching application. * * MystudiesMyteaching application is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MystudiesMyteaching application is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MystudiesMyteaching application. If not, see <http://www.gnu.org/licenses/>. */ package fi.helsinki.opintoni.security; import fi.helsinki.opintoni.config.AppConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @Component public class SecurityUtils { private final AppConfiguration appConfiguration; @Autowired public SecurityUtils(AppConfiguration appConfiguration) { this.appConfiguration = appConfiguration; } public String getCurrentLogin() { SecurityContext securityContext = SecurityContextHolder.getContext(); Authentication authentication = securityContext.getAuthentication(); String userName = null; if (authentication != null) { if (authentication.getPrincipal() instanceof UserDetails) { UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal(); userName = springSecurityUser.getUsername(); } else if (authentication.getPrincipal() instanceof String) { userName = (String) authentication.getPrincipal(); } } return userName; } public Optional<AppUser> getAppUser() { return getAuthentication().map(Authentication::getPrincipal).map(AppUser.class::cast); } private Optional<Authentication> getAuthentication() { return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication()); } public String getWhitelistedIpAccess() { List<String> whitelistedIps = appConfiguration.getStringValues("whitelistedIps"); return whitelistedIps.stream().map(ip -> "hasIpAddress('" + ip + "')").collect(Collectors.joining(" or ")); } }