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>();
}
}
}