package com.aperture_software.glados_wiki.support; import com.aperture_software.glados_wiki.entities.User; import com.aperture_software.glados_wiki.entities.UserAuthentication; import com.aperture_software.glados_wiki.services.GroupService; import com.aperture_software.glados_wiki.services.UserService; import com.google.common.base.Optional; import com.google.common.base.Strings; import org.apache.commons.lang3.ObjectUtils; import org.apache.shiro.SecurityUtils; import java.util.HashSet; import java.util.Set; /** * Created by jhyun on 14. 1. 9. */ public class SecurityUtils2 { public static boolean isAdmin() { return SecurityUtils.getSubject().hasRole(GroupService.ADMIN_ROLE); } public static String getUsername() { return ObjectUtils.toString(SecurityUtils.getSubject().getPrincipal()); } public static Optional<User> getUser(UserService userService) { final String username = getUsername(); if (!Strings.isNullOrEmpty(username)) { Optional<User> u = userService.getByUsername(username); if (u.isPresent()) { return u; } } // fallback. return Optional.absent(); } public static Set<UserAuthentication> getUserAuthentications(UserService userService) { final Optional<User> u = getUser(userService); if (u.isPresent()) { User u_ = u.get(); HashSet<UserAuthentication> r = new HashSet<UserAuthentication>(u_.getGroups()); r.add(u_); return r; } else { return new HashSet<UserAuthentication>(); } } }