/*
This file is part of Cyclos (www.cyclos.org).
A project of the Social Trade Organisation (www.socialtrade.org).
Cyclos is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Cyclos 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with Cyclos; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package nl.strohalm.cyclos.access;
import nl.strohalm.cyclos.entities.Relationship;
import nl.strohalm.cyclos.entities.groups.AdminGroup;
import nl.strohalm.cyclos.entities.groups.Group;
import nl.strohalm.cyclos.entities.groups.SystemGroup;
import nl.strohalm.cyclos.utils.access.PermissionHelper;
/**
* This enum contains all permissions related to the ADMIN_SYSTEM module type
* @author ameyer
*/
public enum AdminSystemPermission implements AdminPermission {
/* Permissions for the SYSTEM_CURRENCIES module */
CURRENCIES_MANAGE(Module.SYSTEM_CURRENCIES),
CURRENCIES_VIEW(Module.SYSTEM_CURRENCIES), // Having this permission means that the administrator can view all the currencies of the system.
/* Permissions for the SYSTEM_ACCOUNTS module */
ACCOUNTS_MANAGE(Module.SYSTEM_ACCOUNTS),
ACCOUNTS_VIEW(Module.SYSTEM_ACCOUNTS),
ACCOUNTS_INFORMATION(Module.SYSTEM_ACCOUNTS, AdminGroup.Relationships.VIEW_INFORMATION_OF),
ACCOUNTS_AUTHORIZED_INFORMATION(Module.SYSTEM_ACCOUNTS),
ACCOUNTS_SCHEDULED_INFORMATION(Module.SYSTEM_ACCOUNTS),
/* Permissions for the SYSTEM_SETTINGS module */
SETTINGS_MANAGE_LOCAL(Module.SYSTEM_SETTINGS),
SETTINGS_MANAGE_ALERT(Module.SYSTEM_SETTINGS),
SETTINGS_MANAGE_ACCESS(Module.SYSTEM_SETTINGS),
SETTINGS_MANAGE_MAIL(Module.SYSTEM_SETTINGS),
SETTINGS_MANAGE_LOG(Module.SYSTEM_SETTINGS),
SETTINGS_VIEW(Module.SYSTEM_SETTINGS),
SETTINGS_FILE(Module.SYSTEM_SETTINGS),
/* Permissions for the SYSTEM_CUSTOMIZED_FILES module */
CUSTOMIZED_FILES_MANAGE(Module.SYSTEM_CUSTOMIZED_FILES),
CUSTOMIZED_FILES_VIEW(Module.SYSTEM_CUSTOMIZED_FILES),
/* Permissions for the SYSTEM_CUSTOM_IMAGES module */
CUSTOM_IMAGES_MANAGE(Module.SYSTEM_CUSTOM_IMAGES),
CUSTOM_IMAGES_VIEW(Module.SYSTEM_CUSTOM_IMAGES),
/* Permissions for the SYSTEM_CUSTOM_FIELDS module */
CUSTOM_FIELDS_MANAGE(Module.SYSTEM_CUSTOM_FIELDS),
CUSTOM_FIELDS_VIEW(Module.SYSTEM_CUSTOM_FIELDS),
/* Permissions for the SYSTEM_TRANSLATION module */
TRANSLATION_MANAGE(Module.SYSTEM_TRANSLATION),
TRANSLATION_VIEW(Module.SYSTEM_TRANSLATION),
TRANSLATION_FILE(Module.SYSTEM_TRANSLATION),
TRANSLATION_MANAGE_MAIL_TRANSLATION(Module.SYSTEM_TRANSLATION),
TRANSLATION_MANAGE_NOTIFICATION(Module.SYSTEM_TRANSLATION),
/* Permissions for the SYSTEM_THEMES module */
THEMES_SELECT(Module.SYSTEM_THEMES),
THEMES_REMOVE(Module.SYSTEM_THEMES),
THEMES_IMPORT(Module.SYSTEM_THEMES),
THEMES_EXPORT(Module.SYSTEM_THEMES),
/* Permissions for the SYSTEM_PAYMENTS module */
PAYMENTS_PAYMENT(Module.SYSTEM_PAYMENTS, Group.Relationships.TRANSFER_TYPES),
PAYMENTS_AUTHORIZE(Module.SYSTEM_PAYMENTS),
PAYMENTS_CANCEL(Module.SYSTEM_PAYMENTS),
PAYMENTS_CHARGEBACK(Module.SYSTEM_PAYMENTS, SystemGroup.Relationships.CHARGEBACK_TRANSFER_TYPES),
PAYMENTS_CANCEL_SCHEDULED(Module.SYSTEM_PAYMENTS),
PAYMENTS_BLOCK_SCHEDULED(Module.SYSTEM_PAYMENTS),
/* Permissions for the SYSTEM_ACCOUNT_FEES module */
ACCOUNT_FEES_VIEW(Module.SYSTEM_ACCOUNT_FEES),
ACCOUNT_FEES_CHARGE(Module.SYSTEM_ACCOUNT_FEES),
/* Permissions for the SYSTEM_AD_CATEGORIES module */
AD_CATEGORIES_MANAGE(Module.SYSTEM_AD_CATEGORIES),
AD_CATEGORIES_VIEW(Module.SYSTEM_AD_CATEGORIES),
AD_CATEGORIES_FILE(Module.SYSTEM_AD_CATEGORIES),
/* Permissions for the SYSTEM_MESSAGE_CATEGORIES module */
MESSAGE_CATEGORIES_MANAGE(Module.SYSTEM_MESSAGE_CATEGORIES),
MESSAGE_CATEGORIES_VIEW(Module.SYSTEM_MESSAGE_CATEGORIES),
/* Permissions for the SYSTEM_ALERTS module */
ALERTS_MANAGE_MEMBER_ALERTS(Module.SYSTEM_ALERTS),
ALERTS_MANAGE_SYSTEM_ALERTS(Module.SYSTEM_ALERTS),
ALERTS_VIEW_MEMBER_ALERTS(Module.SYSTEM_ALERTS),
ALERTS_VIEW_SYSTEM_ALERTS(Module.SYSTEM_ALERTS),
/* Permissions for the SYSTEM_ERROR_LOG module */
ERROR_LOG_MANAGE(Module.SYSTEM_ERROR_LOG),
ERROR_LOG_VIEW(Module.SYSTEM_ERROR_LOG),
/* Permissions for the SYSTEM_GROUPS module */
GROUPS_MANAGE_MEMBER(Module.SYSTEM_GROUPS),
GROUPS_MANAGE_BROKER(Module.SYSTEM_GROUPS),
GROUPS_MANAGE_ADMIN(Module.SYSTEM_GROUPS),
/* Permissions for the SYSTEM_REGISTRATION_AGREEMENTS module */
REGISTRATION_AGREEMENTS_VIEW(Module.SYSTEM_REGISTRATION_AGREEMENTS),
REGISTRATION_AGREEMENTS_MANAGE(Module.SYSTEM_REGISTRATION_AGREEMENTS),
/* Permissions for the SYSTEM_ADMIN_GROUPS module */
ADMIN_GROUPS_VIEW(Module.SYSTEM_ADMIN_GROUPS),
ADMIN_GROUPS_MANAGE_ADMIN_CUSTOMIZED_FILES(Module.SYSTEM_ADMIN_GROUPS),
/* Permissions for the SYSTEM_GROUP_FILTERS module */
GROUP_FILTERS_MANAGE(Module.SYSTEM_GROUP_FILTERS),
GROUP_FILTERS_VIEW(Module.SYSTEM_GROUP_FILTERS),
GROUP_FILTERS_MANAGE_CUSTOMIZED_FILES(Module.SYSTEM_GROUP_FILTERS),
/* Permissions for the SYSTEM_LOAN_GROUPS module */
LOAN_GROUPS_MANAGE(Module.SYSTEM_LOAN_GROUPS),
LOAN_GROUPS_VIEW(Module.SYSTEM_LOAN_GROUPS),
/* Permissions for the SYSTEM_REPORTS module */
REPORTS_CURRENT(Module.SYSTEM_REPORTS),
REPORTS_MEMBER_LIST(Module.SYSTEM_REPORTS),
REPORTS_SMS_LOGS(Module.SYSTEM_REPORTS),
REPORTS_STATISTICS(Module.SYSTEM_REPORTS),
REPORTS_SIMULATIONS(Module.SYSTEM_REPORTS),
/* Permissions for the SYSTEM_TASKS module */
TASKS_ONLINE_STATE(Module.SYSTEM_TASKS),
TASKS_MANAGE_INDEXES(Module.SYSTEM_TASKS),
/* Permissions for the SYSTEM_STATUS module */
STATUS_VIEW(Module.SYSTEM_STATUS),
STATUS_VIEW_CONNECTED_ADMINS(Module.SYSTEM_STATUS, AdminGroup.Relationships.VIEW_CONNECTED_ADMINS_OF),
STATUS_VIEW_CONNECTED_BROKERS(Module.SYSTEM_STATUS),
STATUS_VIEW_CONNECTED_MEMBERS(Module.SYSTEM_STATUS),
STATUS_VIEW_CONNECTED_OPERATORS(Module.SYSTEM_STATUS),
/* Permissions for the SYSTEM_EXTERNAL_ACCOUNTS module */
EXTERNAL_ACCOUNTS_MANAGE(Module.SYSTEM_EXTERNAL_ACCOUNTS),
EXTERNAL_ACCOUNTS_VIEW(Module.SYSTEM_EXTERNAL_ACCOUNTS),
EXTERNAL_ACCOUNTS_DETAILS(Module.SYSTEM_EXTERNAL_ACCOUNTS),
EXTERNAL_ACCOUNTS_PROCESS_PAYMENT(Module.SYSTEM_EXTERNAL_ACCOUNTS),
EXTERNAL_ACCOUNTS_CHECK_PAYMENT(Module.SYSTEM_EXTERNAL_ACCOUNTS),
EXTERNAL_ACCOUNTS_MANAGE_PAYMENT(Module.SYSTEM_EXTERNAL_ACCOUNTS),
/* Permissions for the SYSTEM_MEMBER_RECORD_TYPES module */
MEMBER_RECORD_TYPES_MANAGE(Module.SYSTEM_MEMBER_RECORD_TYPES),
MEMBER_RECORD_TYPES_VIEW(Module.SYSTEM_MEMBER_RECORD_TYPES),
/* Permissions for the SYSTEM_SERVICE_CLIENTS module */
SERVICE_CLIENTS_MANAGE(Module.SYSTEM_SERVICE_CLIENTS),
SERVICE_CLIENTS_VIEW(Module.SYSTEM_SERVICE_CLIENTS),
/* Permissions for the SYSTEM_CHANNELS module */
CHANNELS_MANAGE(Module.SYSTEM_CHANNELS),
CHANNELS_VIEW(Module.SYSTEM_CHANNELS),
/* Permissions for the SYSTEM_GUARANTEE_TYPES module */
GUARANTEE_TYPES_MANAGE(Module.SYSTEM_GUARANTEE_TYPES),
GUARANTEE_TYPES_VIEW(Module.SYSTEM_GUARANTEE_TYPES),
/* Permissions for the SYSTEM_CARD_TYPES module */
CARD_TYPES_MANAGE(Module.SYSTEM_CARD_TYPES),
CARD_TYPES_VIEW(Module.SYSTEM_CARD_TYPES),
/* Permissions for the SYSTEM_INFO_TEXTS module */
INFO_TEXTS_MANAGE(Module.SYSTEM_INFO_TEXTS),
INFO_TEXTS_VIEW(Module.SYSTEM_INFO_TEXTS);
private final Module module;
private String value;
private String qualifiedName;
private Relationship relationship;
/**
* Constructor for boolean permissions
*/
private AdminSystemPermission(final Module module) {
this(module, null);
}
private AdminSystemPermission(final Module module, final Relationship relationship) {
this.module = module;
this.relationship = relationship;
}
@Override
public Module getModule() {
return module;
}
@Override
public String getQualifiedName() {
if (qualifiedName == null) {
qualifiedName = PermissionHelper.getQualifiedPermissionName(this);
}
return qualifiedName;
}
@Override
public String getValue() {
if (value == null) {
value = PermissionHelper.getValue(this);
}
return value;
}
@Override
public Relationship relationship() {
return relationship;
}
}