]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/internal/CurrentUser.java
Update license headers
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / internal / CurrentUser.java
index ed50d1e3ccd521d864d5e1ac77a8ee5b4a6bdc82..f9eff6ff92084d191c140c90d21322b05824be02 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.argeo.security.ui.internal;
 
 import java.security.AccessController;
@@ -12,6 +27,10 @@ import org.argeo.ArgeoException;
 import org.springframework.security.Authentication;
 import org.springframework.security.GrantedAuthority;
 
+/**
+ * Retrieves information about the current user. Not an API, can change without
+ * notice.
+ */
 public class CurrentUser {
        public final static String getUsername() {
                Subject subject = getSubject();
@@ -24,25 +43,28 @@ public class CurrentUser {
 
        public final static Set<String> roles() {
                Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
+               Authentication authentication = getAuthentication();
+               for (GrantedAuthority ga : authentication.getAuthorities()) {
+                       roles.add(ga.getAuthority());
+               }
+               return Collections.unmodifiableSet(roles);
+       }
 
+       public final static Authentication getAuthentication() {
                Set<Authentication> authens = getSubject().getPrincipals(
                                Authentication.class);
                if (authens != null && !authens.isEmpty()) {
                        Principal principal = authens.iterator().next();
                        Authentication authentication = (Authentication) principal;
-                       for (GrantedAuthority ga : authentication.getAuthorities()) {
-                               roles.add(ga.getAuthority());
-                       }
+                       return authentication;
                }
-               return Collections.unmodifiableSet(roles);
+               throw new ArgeoException("No authentication found");
        }
 
        public final static Subject getSubject() {
-
                Subject subject = Subject.getSubject(AccessController.getContext());
                if (subject == null)
                        throw new ArgeoException("Not authenticated.");
                return subject;
-
        }
 }