#656: AccessControlInterface.java

projectforge-business/src/main/java/org/projectforge/framework/access/AccessControlInterface.java Lines: 87 · Author: Kai Reinhard · Type: Java interface — DO-level access control contract 87 lines · 12 code · 65 comments · 10 blank

Interface for per-DO access control in "restricted" application mode. 87 lines. The Javadoc states: "All methods of this interface should be implemented by every DOAccessControl class needed by every DO class in access-type='restricted' application mode (productive mode)." — this is for production deployments where access control must be enforced at the DO level.

Five CRUD check methods:

Design philosophy: CheckSave/CheckUpdate can mutate the object to enforce access rules (e.g. force-owning the object to the current user), while CheckLoad/CheckDestroy cannot — they either allow or throw. This is the pre-AOP era approach to access control, before @PreAuthorize annotations and Spring Security method security became standard. The interface uses raw Object types — no generics — because it operates at the framework level where DO types aren't known at compile time.

#656: AccessControlInterface.java

Lines: 87 · Author: Kai Reinhard · Type: Java interface — DO-level access control contract

Interface for per-DO access control in "restricted" application mode. 87 lines. The Javadoc states: "All methods of this interface should be implemented by every DOAccessControl class needed by every DO class in access-type='restricted' application mode (productive mode)." — this is for production deployments where access control must be enforced at the DO level.

Five CRUD check methods:

Design philosophy: CheckSave/CheckUpdate can mutate the object to enforce access rules (e.g. force-owning the object to the current user), while CheckLoad/CheckDestroy cannot — they either allow or throw. This is the pre-AOP era approach to access control, before @PreAuthorize annotations and Spring Security method security became standard. The interface uses raw Object types — no generics — because it operates at the framework level where DO types aren't known at compile time.