diff --git a/src/main/java/caosdb/server/accessControl/UserSources.java b/src/main/java/caosdb/server/accessControl/UserSources.java index 3aea63cb744874d65845b9c82359a76518dfcd3d..32b851e8a69f9382c589ceabdafc419bcaaf2c47 100644 --- a/src/main/java/caosdb/server/accessControl/UserSources.java +++ b/src/main/java/caosdb/server/accessControl/UserSources.java @@ -122,6 +122,7 @@ public class UserSources extends HashMap<String, UserSource> { /** * Return the roles of a given user. + * * @param realm * @param username * @return diff --git a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java index a9a485459af75cf630d569024a4b0263b8cf82ff..5e8599978a9bf287b4f5e5f8d40192bffd4a3624 100644 --- a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java +++ b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java @@ -170,35 +170,36 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { /** * Add the user info to the Response Element. + * * @param retRoot * @param user */ private void addUserInfo(Element retRoot, Subject user) { - - if (user != null && user.isAuthenticated()){ + + if (user != null && user.isAuthenticated()) { Element userInfo = new Element("UserInfo"); - if(!user.getPrincipal().equals(AuthenticationUtils.ANONYMOUS_USER.getPrincipal())) { + if (!user.getPrincipal().equals(AuthenticationUtils.ANONYMOUS_USER.getPrincipal())) { // TODO: deprecated addNameAndRealm(retRoot, user); - + // this is the new, correct way addNameAndRealm(userInfo, user); - } - + } + addRoles(userInfo, user); } } - + /** * Add all roles of the current user to the user info, like this: * `<UserInfo><Roles><Role>role1</Role><Role>role2</Role>...</Roles></UserInfo>` - * + * * @param userInfo * @param user */ private void addRoles(Element userInfo, Subject user) { Element roles = new Element("Roles"); - for(String role : UserSources.resolve(user.getPrincipals())){ + for (String role : UserSources.resolve(user.getPrincipals())) { Element r = new Element("Role"); r.addContent(role); roles.addContent(r); @@ -208,6 +209,7 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { /** * Add the username and the realm of the current user to the user info (as attributes). + * * @param userInfo */ private void addNameAndRealm(Element userInfo, Subject user) { diff --git a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java index 034ac59d255824e9adb4afedfecd7b48c3d7d8df..9240843855cbd3b6bd75e010f44616188d4d3a24 100644 --- a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java +++ b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java @@ -1,74 +1,71 @@ package caosdb.server.resource; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import caosdb.server.CaosDBException; +import caosdb.server.accessControl.AnonymousAuthenticationToken; +import caosdb.server.accessControl.AnonymousRealm; +import caosdb.server.database.backend.implementation.MySQL.ConnectionException; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.sql.SQLException; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.SimpleAccount; import org.apache.shiro.mgt.DefaultSecurityManager; -import org.apache.shiro.session.mgt.DelegatingSession; import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.support.DelegatingSubject; import org.jdom2.Element; import org.junit.Test; import org.restlet.data.Reference; import org.restlet.representation.Representation; -import caosdb.server.CaosDBException; -import caosdb.server.accessControl.AnonymousAuthenticationToken; -import caosdb.server.accessControl.AnonymousRealm; -import caosdb.server.accessControl.CaosDBAuthorizingRealm; -import caosdb.server.database.backend.implementation.MySQL.ConnectionException; public class TestAbstractCaosDBServerResource { - @Test - public void testReponseRootElement(){ + @Test + public void testReponseRootElement() { final Subject user = new DelegatingSubject(new DefaultSecurityManager(new AnonymousRealm())); user.login(AnonymousAuthenticationToken.getInstance()); - AbstractCaosDBServerResource s = new AbstractCaosDBServerResource() { - - @Override - protected Representation httpGetInChildClass() throws ConnectionException, IOException, - SQLException, CaosDBException, NoSuchAlgorithmException, Exception { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getSRID() { - return "TEST-SRID"; - } + AbstractCaosDBServerResource s = + new AbstractCaosDBServerResource() { + + @Override + protected Representation httpGetInChildClass() + throws ConnectionException, IOException, SQLException, CaosDBException, + NoSuchAlgorithmException, Exception { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getSRID() { + return "TEST-SRID"; + } + + @Override + public String getCRID() { + return "TEST-CRID"; + } + + @Override + public Long getTimestamp() { + return 0L; + } + + @Override + public Reference getRootRef() { + return new Reference("https://example.com/root/"); + } - @Override - public String getCRID() { - return "TEST-CRID"; - } - - @Override - public Long getTimestamp() { - return 0L; - } - - @Override - public Reference getRootRef() { - return new Reference("https://example.com/root/"); - } - - @Override - public Subject getUser() { - // TODO Auto-generated method stub - return user; - } - }; + @Override + public Subject getUser() { + // TODO Auto-generated method stub + return user; + } + }; Element response = s.generateRootElement(); assertNotNull(response); assertEquals("TEST-SRID", response.getAttribute("srid").getValue()); assertEquals("TEST-CRID", response.getAttribute("crid").getValue()); assertEquals("0", response.getAttribute("timestamp").getValue()); assertEquals("https://example.com/root/", response.getAttributeValue("baseuri")); - Element userInfo = response.getChild("UserInfo"); - assertNotNull(userInfo); - } + } }