CCM NG: Preparation for replacing privilege strings with enums.
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4350 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
ddc70c795d
commit
1ebbe0e59d
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.librecms;
|
||||
|
||||
import org.libreccm.security.Privilege;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public enum CmsPrivileges implements Privilege {
|
||||
|
||||
ADMINISTER_CATEGORIES,
|
||||
ADMINISTER_CONTENT_TYPES,
|
||||
ADMINISTER_LIFECYLES,
|
||||
ADMINISTER_ROLES,
|
||||
ADMINISTER_WORKFLOW,
|
||||
ITEMS_APPROVE,
|
||||
ITEMS_PUBLISH,
|
||||
ITEMS_CATEGORIZE,
|
||||
ITEMS_CREATE_NEW,
|
||||
ITEMS_DELETE,
|
||||
ITEMS_EDIT,
|
||||
ITEMS_PREVIEW,
|
||||
ITEMS_VIEW_PUBLISHED,
|
||||
APPLY_ALTERNATE_WORKFLOW;
|
||||
|
||||
@Override
|
||||
public String getBundle() {
|
||||
return CmsConstants.CMS_BUNDLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPrefix() {
|
||||
return "privileges";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.categorization;
|
||||
|
||||
import org.libreccm.security.Privilege;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public enum Privileges implements Privilege {
|
||||
|
||||
MANAGAE_CATEGORIES,
|
||||
MANAGE_CATEGORY_OBJECTS,
|
||||
MANAGE_DOMAINS;
|
||||
|
||||
@Override
|
||||
public String getBundle() {
|
||||
return "org.libreccm.categorization.PrivilegesBundle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPrefix() {
|
||||
return "categorization.privileges";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.core;
|
||||
|
||||
import org.libreccm.security.Privilege;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public enum Privileges implements Privilege {
|
||||
|
||||
ADMIN,
|
||||
SYSTEM;
|
||||
|
||||
@Override
|
||||
public String getBundle() {
|
||||
return "org.libreccm.core.PrivilegesBundle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPrefix() {
|
||||
return "core.privileges";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.security;
|
||||
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
/**
|
||||
* Interface to extend by privilege enums of the various modules.
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public interface Privilege {
|
||||
|
||||
/**
|
||||
* Return to non localised key for the privilege. The default implementation
|
||||
* uses the {@code toString} method.
|
||||
*
|
||||
* @return The non localised identifier of the privilege.
|
||||
*/
|
||||
default String getKey() {
|
||||
return toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* An optional prefix for the key to be used to retrieve the localised
|
||||
* label. The default implementation returns an empty string.
|
||||
*
|
||||
* @return An optional prefix for the key.
|
||||
*/
|
||||
default String getPrefix() {
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the localised label for the role. Primarily for use in the user
|
||||
* interface. The default implementation the return value
|
||||
* {@link #getBundle()} to get the fully qualified name of the bundle to
|
||||
* use. The key is generated by joining the return value from {@link #getPrefix()}
|
||||
* (if not an empty string) and the return value from {@link #getKey()}.
|
||||
* The separator between prefix and key is a dot.
|
||||
*
|
||||
* @return The localised label for the privilege.
|
||||
*/
|
||||
default GlobalizedMessage getLabel() {
|
||||
final String prefix = getPrefix();
|
||||
final String key;
|
||||
if (prefix != null && !prefix.isEmpty()) {
|
||||
key = String.join(".", getPrefix(), getKey());
|
||||
} else {
|
||||
key = getKey();
|
||||
}
|
||||
|
||||
return new GlobalizedMessage(key, getBundle());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bundle containing the localised labels for the privileges.
|
||||
*
|
||||
* @return The fully qualified name of the resource bundle which provides
|
||||
* the localised labels for the privileges.
|
||||
*/
|
||||
String getBundle();
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
categorization.privileges.MANAGE_CATEGORIES=Manage categories
|
||||
categorization.privileges.MANAGE_CATEGORY_OBJECTS=Manage categorized objects
|
||||
categorization.privileges.MANAGE_DOMAINS=Manage domains
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
categorization.privileges.MANAGE_CATEGORIES=Kategorien verwalten
|
||||
categorization.privileges.MANAGE_CATEGORY_OBJECTS=Kategorisierte Objekte verwalten
|
||||
categorization.privileges.MANAGE_DOMAINS=Domains verwalten
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
core.privileges.ADMIN=admin
|
||||
core.privileges.SYSTEM=system
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
core.privileges.ADMIN=admin
|
||||
core.privileges.SYSTEM=system
|
||||
|
|
@ -35,6 +35,7 @@ import org.junit.After;
|
|||
import org.junit.AfterClass;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import static org.libreccm.testutils.DependenciesHelpers.*;
|
||||
|
||||
import org.junit.Before;
|
||||
|
|
@ -46,13 +47,14 @@ import org.libreccm.core.CcmObject;
|
|||
import org.libreccm.jpa.EntityManagerProducer;
|
||||
import org.libreccm.jpa.utils.UriConverter;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
import org.libreccm.security.Permission;
|
||||
import org.libreccm.tests.categories.IntegrationTest;
|
||||
import org.libreccm.web.ApplicationRepository;
|
||||
import org.libreccm.workflow.Workflow;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.libreccm.security.Privilege;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
|
|
@ -88,7 +90,7 @@ public class SecurityConfigTest {
|
|||
"LibreCCM-com.arsdigita.kernel.security.SecurityConfigTest.war")
|
||||
.addPackage(CcmObject.class.getPackage())
|
||||
.addPackage(Categorization.class.getPackage())
|
||||
.addPackage(Permission.class.getPackage())
|
||||
.addPackage(Privilege.class.getPackage())
|
||||
.addPackage(LocalizedString.class.getPackage())
|
||||
.addPackage(Workflow.class.getPackage())
|
||||
.addPackage(UriConverter.class.getPackage())
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ public class CategoryManagerTest {
|
|||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Privilege.class.getPackage())
|
||||
.addPackage(org.libreccm.testutils.EqualsVerifier.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public class CategoryRepositoryTest {
|
|||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Privilege.class.getPackage())
|
||||
.addPackage(org.libreccm.testutils.EqualsVerifier.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public class ConfigurationManagerTest {
|
|||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Privilege.class.getPackage())
|
||||
.addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
.addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public class CcmObjectRepositoryTest {
|
|||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||
.addPackage(org.libreccm.security.Privilege.class.getPackage())
|
||||
.addPackage(org.libreccm.testutils.EqualsVerifier.class.getPackage())
|
||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
.getPackage())
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class EqualsAndHashCodeTest extends EqualsVerifier {
|
|||
Group.class,
|
||||
GroupMembership.class,
|
||||
Party.class,
|
||||
Permission.class,
|
||||
Privilege.class,
|
||||
OneTimeAuthToken.class,
|
||||
Role.class,
|
||||
RoleMembership.class,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.security;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public enum ExamplePrivileges implements Privilege {
|
||||
|
||||
ADMIN_EXAMPLES,
|
||||
CREATE_EXAMPLES,
|
||||
EDIT_EXAMPLES,
|
||||
PREVIEW_EXAMPLES,
|
||||
VIEW_EXAMPLES,
|
||||
PUBLISH_EXAMPLES;
|
||||
|
||||
@Override
|
||||
public String getBundle() {
|
||||
return "org.libreccm.security.ExamplePrivilegesBundle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPrefix() {
|
||||
return "example.privileges";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* Copyright (C) 2016 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.security;
|
||||
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
import org.apache.oro.text.GlobCompiler;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.libreccm.tests.categories.UnitTest;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* A test for verifying that the default implementations of the methods of the
|
||||
* {@link Privilege} interface work as expected.
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@org.junit.experimental.categories.Category(UnitTest.class)
|
||||
public class PrivilegeTest {
|
||||
|
||||
public PrivilegeTest() {
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpClass() {
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownClass() {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyKeys() {
|
||||
assertThat(ExamplePrivileges.ADMIN_EXAMPLES.getKey(),
|
||||
is(equalTo("ADMIN_EXAMPLES")));
|
||||
assertThat(ExamplePrivileges.CREATE_EXAMPLES.getKey(),
|
||||
is(equalTo("CREATE_EXAMPLES")));
|
||||
assertThat(ExamplePrivileges.EDIT_EXAMPLES.getKey(),
|
||||
is(equalTo("EDIT_EXAMPLES")));
|
||||
assertThat(ExamplePrivileges.PREVIEW_EXAMPLES.getKey(),
|
||||
is(equalTo("PREVIEW_EXAMPLES")));
|
||||
assertThat(ExamplePrivileges.PUBLISH_EXAMPLES.getKey(),
|
||||
is(equalTo("PUBLISH_EXAMPLES")));
|
||||
assertThat(ExamplePrivileges.VIEW_EXAMPLES.getKey(),
|
||||
is(equalTo("VIEW_EXAMPLES")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyLabels() {
|
||||
final GlobalizedMessage adminLabel = ExamplePrivileges.ADMIN_EXAMPLES
|
||||
.getLabel();
|
||||
final GlobalizedMessage createLabel = ExamplePrivileges.CREATE_EXAMPLES
|
||||
.getLabel();
|
||||
final GlobalizedMessage editLabel = ExamplePrivileges.EDIT_EXAMPLES
|
||||
.getLabel();
|
||||
final GlobalizedMessage previewLabel
|
||||
= ExamplePrivileges.PREVIEW_EXAMPLES
|
||||
.getLabel();
|
||||
final GlobalizedMessage publishLabel
|
||||
= ExamplePrivileges.PUBLISH_EXAMPLES
|
||||
.getLabel();
|
||||
final GlobalizedMessage viewLabel = ExamplePrivileges.VIEW_EXAMPLES
|
||||
.getLabel();
|
||||
|
||||
assertThat(adminLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("Administer examples")));
|
||||
assertThat(adminLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Beispiele verwalten")));
|
||||
|
||||
assertThat(createLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("Create new examples")));
|
||||
assertThat(createLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Neue Beispiele anlegen")));
|
||||
|
||||
assertThat(editLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("Edit examples")));
|
||||
assertThat(editLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Beispiele bearbeiten")));
|
||||
|
||||
assertThat(previewLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("Preview examples")));
|
||||
assertThat(previewLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Vorschau ansehen")));
|
||||
|
||||
assertThat(publishLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("Publish examples")));
|
||||
assertThat(publishLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Beispiele veröffentlichen")));
|
||||
|
||||
assertThat(viewLabel.localize(Locale.ENGLISH),
|
||||
is(equalTo("View examples")));
|
||||
assertThat(viewLabel.localize(Locale.GERMAN),
|
||||
is(equalTo("Beispiele ansehen")));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ public class ToStringTest extends ToStringVerifier {
|
|||
GroupMembership.class,
|
||||
Party.class,
|
||||
OneTimeAuthToken.class,
|
||||
Permission.class,
|
||||
Privilege.class,
|
||||
Role.class,
|
||||
RoleMembership.class,
|
||||
User.class
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
example.privileges.ADMIN_EXAMPLES=Administer examples
|
||||
example.privileges.CREATE_EXAMPLES=Create new examples
|
||||
example.privileges.EDIT_EXAMPLES=Edit examples
|
||||
example.privileges.PREVIEW_EXAMPLES=Preview examples
|
||||
example.privileges.VIEW_EXAMPLES=View examples
|
||||
example.privileges.PUBLISH_EXAMPLES=Publish examples
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
example.privileges.ADMIN_EXAMPLES=Beispiele verwalten
|
||||
example.privileges.CREATE_EXAMPLES=Neue Beispiele anlegen
|
||||
example.privileges.EDIT_EXAMPLES=Beispiele bearbeiten
|
||||
example.privileges.PREVIEW_EXAMPLES=Vorschau ansehen
|
||||
example.privileges.VIEW_EXAMPLES=Beispiele ansehen
|
||||
example.privileges.PUBLISH_EXAMPLES=Beispiele ver\u00f6ffentlichen
|
||||
Loading…
Reference in New Issue