/* 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.Group; import nl.strohalm.cyclos.entities.groups.OperatorGroup; import nl.strohalm.cyclos.utils.access.PermissionHelper; /** * This enum contains all permissions related to the OPERATOR module type * @author ameyer */ public enum OperatorPermission implements Permission { /* Permissions for the OPERATOR_ACCOUNT module */ ACCOUNT_AUTHORIZED_INFORMATION(Module.OPERATOR_ACCOUNT, MemberPermission.ACCOUNT_AUTHORIZED_INFORMATION), ACCOUNT_SCHEDULED_INFORMATION(Module.OPERATOR_ACCOUNT, MemberPermission.ACCOUNT_SCHEDULED_INFORMATION), ACCOUNT_ACCOUNT_INFORMATION(Module.OPERATOR_ACCOUNT, OperatorGroup.Relationships.CAN_VIEW_INFORMATION_OF), /* Permissions for the OPERATOR_PAYMENTS module */ PAYMENTS_PAYMENT_TO_SELF(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_PAYMENT_TO_SELF), PAYMENTS_PAYMENT_TO_MEMBER(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_PAYMENT_TO_MEMBER), PAYMENTS_PAYMENT_TO_SYSTEM(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_PAYMENT_TO_SYSTEM), PAYMENTS_POSWEB_MAKE_PAYMENT(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_PAYMENT_TO_MEMBER), // PosWeb permission PAYMENTS_POSWEB_RECEIVE_PAYMENT(Module.OPERATOR_PAYMENTS), // PosWeb permission PAYMENTS_AUTHORIZE(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_AUTHORIZE), PAYMENTS_CANCEL_AUTHORIZED(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_CANCEL_AUTHORIZED), PAYMENTS_CANCEL_SCHEDULED(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_CANCEL_SCHEDULED), PAYMENTS_BLOCK_SCHEDULED(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_BLOCK_SCHEDULED), PAYMENTS_REQUEST(Module.OPERATOR_PAYMENTS, MemberPermission.PAYMENTS_REQUEST), /* Permissions for the OPERATOR_INVOICES module */ INVOICES_VIEW(Module.OPERATOR_INVOICES, MemberPermission.INVOICES_VIEW), INVOICES_SEND_TO_MEMBER(Module.OPERATOR_INVOICES, MemberPermission.INVOICES_SEND_TO_MEMBER), INVOICES_SEND_TO_SYSTEM(Module.OPERATOR_INVOICES, MemberPermission.INVOICES_SEND_TO_SYSTEM), INVOICES_MANAGE(Module.OPERATOR_INVOICES, MemberPermission.INVOICES_SEND_TO_MEMBER, MemberPermission.INVOICES_SEND_TO_SYSTEM), /* Permissions for the OPERATOR_REFERENCES module */ REFERENCES_VIEW(Module.OPERATOR_REFERENCES, MemberPermission.REFERENCES_VIEW), REFERENCES_MANAGE_MEMBER_REFERENCES(Module.OPERATOR_REFERENCES, MemberPermission.REFERENCES_GIVE), REFERENCES_MANAGE_MEMBER_TRANSACTION_FEEDBACKS(Module.OPERATOR_REFERENCES, MemberPermission.REFERENCES_GIVE), /* Permissions for the OPERATOR_LOANS module */ LOANS_VIEW(Module.OPERATOR_LOANS, MemberPermission.LOANS_VIEW), LOANS_REPAY(Module.OPERATOR_LOANS, MemberPermission.LOANS_REPAY), /* Permissions for the OPERATOR_ADS module */ ADS_PUBLISH(Module.OPERATOR_ADS, MemberPermission.ADS_PUBLISH), /* Permissions for the OPERATOR_REPORTS module */ REPORTS_VIEW_MEMBER(Module.OPERATOR_REPORTS), /* Permissions for the OPERATOR_CONTACTS module */ CONTACTS_MANAGE(Module.OPERATOR_CONTACTS), CONTACTS_VIEW(Module.OPERATOR_CONTACTS), /* Permissions for the OPERATOR_GUARANTEES module */ GUARANTEES_ISSUE_GUARANTEES(Module.OPERATOR_GUARANTEES, Group.Relationships.GUARANTEE_TYPES, MemberPermission.GUARANTEES_ISSUE_GUARANTEES), GUARANTEES_ISSUE_CERTIFICATIONS(Module.OPERATOR_GUARANTEES, MemberPermission.GUARANTEES_ISSUE_CERTIFICATIONS), GUARANTEES_BUY_WITH_PAYMENT_OBLIGATIONS(Module.OPERATOR_GUARANTEES, MemberPermission.GUARANTEES_BUY_WITH_PAYMENT_OBLIGATIONS), GUARANTEES_SELL_WITH_PAYMENT_OBLIGATIONS(Module.OPERATOR_GUARANTEES, MemberPermission.GUARANTEES_SELL_WITH_PAYMENT_OBLIGATIONS), /* Permissions for the OPERATOR_MESSAGES module */ MESSAGES_VIEW(Module.OPERATOR_MESSAGES, MemberPermission.MESSAGES_VIEW), MESSAGES_SEND_TO_MEMBER(Module.OPERATOR_MESSAGES, MemberPermission.MESSAGES_SEND_TO_MEMBER), MESSAGES_SEND_TO_ADMINISTRATION(Module.OPERATOR_MESSAGES, MemberPermission.MESSAGES_SEND_TO_ADMINISTRATION), MESSAGES_MANAGE(Module.OPERATOR_MESSAGES, MemberPermission.MESSAGES_MANAGE); private final Module module; private String value; private MemberPermission[] parentPermissions; private String qualifiedName; private Relationship relationship; private OperatorPermission(final Module module) { this(module, (Relationship) null); } private OperatorPermission(final Module module, final MemberPermission... parentPermissions) { this(module, null, parentPermissions); } private OperatorPermission(final Module module, final Relationship relationship) { this(module, relationship, new MemberPermission[0]); } private OperatorPermission(final Module module, final Relationship relationship, final MemberPermission... parentPermissions) { this.module = module; this.parentPermissions = parentPermissions; this.relationship = relationship; } @Override public Module getModule() { return module; } /** * @return the member permissions that will be checked along with this operator permission.<br> * If this is not null (or empty) then before checking the operator permission we'll check if the operator's owner member has at least one of * these (related) permissions. */ public MemberPermission[] getParentPermissions() { return parentPermissions; } @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; } }