Project

General

Profile

Download (1.87 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.security;
2

    
3
import java.util.EnumSet;
4
import java.util.List;
5

    
6
import org.eclipse.core.expressions.PropertyTester;
7
import org.eclipse.jface.viewers.IStructuredSelection;
8

    
9
import eu.etaxonomy.cdm.model.common.CdmBase;
10
import eu.etaxonomy.cdm.model.permission.CRUD;
11
import eu.etaxonomy.cdm.persistence.permission.CdmAuthority;
12
import eu.etaxonomy.taxeditor.store.CdmStore;
13
import eu.etaxonomy.taxeditor.store.StoreUtil;
14

    
15
/**
16
 * Checks if the currently authenticated user for {@link CdmAuthority} assignments.
17
 *
18
 * @author andreas
19
 */
20
public class PermissionPropertyTester extends PropertyTester {
21

    
22
	private static final String HAS_PERMISSIONS = "hasPermissions";
23

    
24
	private static final String CREATE = CRUD.CREATE.toString();
25
	private static final String READ = CRUD.READ.toString();
26
	private static final String UPDATE = CRUD.UPDATE.toString();
27
	private static final String DELETE = CRUD.DELETE.toString();
28

    
29
	@Override
30
	public boolean test(Object receiver, String property, Object[] args,
31
			Object expectedValue) {
32

    
33
		if(property.equals(HAS_PERMISSIONS)){
34
			return checkHasPermission(receiver, args);
35
		}
36

    
37
		return false;
38
	}
39

    
40
	private boolean checkHasPermission(Object receiver, Object[] args) {
41
		EnumSet<CRUD> crudSet = crudSetFromArgs(args);
42

    
43

    
44
		List<Object> selectedElements = ((IStructuredSelection) receiver).toList();
45
		for(Object selectedElement : selectedElements){
46
			if(selectedElement instanceof CdmBase && ! CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(selectedElement), crudSet)){
47
				return false;
48
			}
49
		}
50

    
51
		return true;
52
	}
53

    
54
	private EnumSet<CRUD> crudSetFromArgs(Object[] args) {
55
		EnumSet<CRUD> crudSet = EnumSet.noneOf(CRUD.class);
56
		for(int i = 0; i < args.length; i++){
57
			try {
58
				crudSet.add(CRUD.valueOf(args[i].toString()));
59
			} catch (Exception e){
60
				System.err.println("could not add " + args[i]);
61
			}
62
		}
63
		return crudSet;
64
	}
65

    
66
}
(2-2/3)