/*******************************************************************************
* Copyright (c) 2007-2015, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
* MEDEVIT <office@medevit.at> - adapted to RBAC
*******************************************************************************/
package ch.elexis.agenda.acl;
import ch.elexis.actions.Activator;
import ch.elexis.admin.ACE;
import ch.elexis.admin.AbstractAccessControl;
import ch.elexis.admin.IACLContributor;
import ch.elexis.core.model.RoleConstants;
import ch.elexis.data.Role;
/**
* Define access rights needed for the various actions with the agenda
*
* @author gerry
*
*/
public class ACLContributor implements IACLContributor {
/** The right to use the agenda at all */
public static final ACE ACE_AGENDA = new ACE(ACE.ACE_ROOT, Activator.PLUGIN_ID, "Agenda"); //$NON-NLS-1$
public static final ACE USE_AGENDA = new ACE(ACE_AGENDA,
"user", Messages.ACLContributor_acl_use); //$NON-NLS-1$
/** administrative rights to the agenda */
public static final ACE ADMIN_AGENDA = new ACE(ACE_AGENDA,
"admin", Messages.ACLContributor_acl_administer); //$NON-NLS-1$
/** The right to see appointments */
public static final ACE DISPLAY_APPOINTMENTS = new ACE(USE_AGENDA,
"zeigeTermine", Messages.ACLContributor_acl_showAppointments); //$NON-NLS-1$
/** The right to modify appointments */
public static final ACE CHANGE_APPOINTMENTS = new ACE(USE_AGENDA,
"ändereTermine", Messages.ACLContributor_acl_changeAppointments); //$NON-NLS-1$
/** The right to delete appointments */
public static final ACE DELETE_APPOINTMENTS = new ACE(USE_AGENDA,
"löscheTermine", Messages.ACLContributor_acl_deleteAppointments); //$NON-NLS-1$
/** The right to modify the day limits */
public static final ACE CHANGE_DAYSETTINGS = new ACE(ADMIN_AGENDA,
"Tagesgrenzen", Messages.ACLContributor_acl_daylimits); //$NON-NLS-1$
/** The right to lock or unlock appointments */
public static final ACE CHANGE_APPLOCK = new ACE(ADMIN_AGENDA,
"TerminSperren", Messages.ACLContributor_acl_lockappointments); //$NON-NLS-1$
/**
* get the ACE's that should be managed.
*/
public ACE[] getACL(){
return new ACE[] {
ACE_AGENDA, USE_AGENDA, ADMIN_AGENDA, DISPLAY_APPOINTMENTS, CHANGE_APPOINTMENTS,
DELETE_APPOINTMENTS, CHANGE_DAYSETTINGS, CHANGE_APPLOCK
};
}
@Override
public void initializeDefaults(AbstractAccessControl ac){
ac.grant(RoleConstants.SYSTEMROLE_LITERAL_USER, USE_AGENDA);
ac.grant(RoleConstants.SYSTEMROLE_LITERAL_USER, DISPLAY_APPOINTMENTS);
ac.grant(RoleConstants.SYSTEMROLE_LITERAL_EXECUTIVE_DOCTOR, ADMIN_AGENDA);
}
}