|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.deepamehta.core.osgi.PluginActivator
de.deepamehta.plugins.accesscontrol.AccessControlPlugin
public class AccessControlPlugin
Field Summary | |
---|---|
private static String |
AUTHENTICATION_REALM
|
private static AccessControlList |
DEFAULT_INSTANCE_ACL
|
private static String |
DEFAULT_PASSWORD
|
private static AccessControlList |
DEFAULT_TYPE_ACL
|
private static AccessControlList |
DEFAULT_USER_ACCOUNT_ACL
|
private static String |
DEFAULT_USERNAME
|
private Logger |
logger
|
private static DeepaMehtaEvent |
POST_LOGIN_USER
|
private static DeepaMehtaEvent |
POST_LOGOUT_USER
|
private static boolean |
READ_REQUIRES_LOGIN
|
private javax.servlet.http.HttpServletRequest |
request
|
private static String |
SUBNET_FILTER
|
private static String |
URI_ACL
|
private static String |
URI_CREATOR
|
private static String |
URI_OWNER
|
private static boolean |
WRITE_REQUIRES_LOGIN
|
private WorkspacesService |
wsService
|
Fields inherited from class de.deepamehta.core.osgi.PluginActivator |
---|
bundle, dms |
Constructor Summary | |
---|---|
AccessControlPlugin()
|
Method Summary | |
---|---|
private void |
_login(String username,
javax.servlet.http.HttpServletRequest request)
|
private void |
_logout(javax.servlet.http.HttpServletRequest request)
|
void |
allPluginsActive()
Setup access control for the default user and the default topicmap. |
private void |
assignToDefaultWorkspace(Topic topic,
String info)
|
private void |
checkAuthorization(javax.servlet.http.HttpServletRequest request)
|
private boolean |
checkCredentials(Credentials cred)
|
private void |
checkRequestOrigin(javax.servlet.http.HttpServletRequest request)
|
private Permissions |
createPermissions(boolean write)
|
private Permissions |
createPermissions(boolean write,
boolean create)
|
private Topic |
createUserAccount(Credentials cred)
|
private void |
enrichWithPermissions(Type type,
Permissions permissions)
|
private Topic |
fetchDefaultTopicmap()
|
private Topic |
fetchDefaultUser()
Fetches the default user ("admin"). |
private Topic |
fetchUserAccount(Topic username)
Prerequisite: username is not null . |
AccessControlList |
getACL(DeepaMehtaObject object)
Returns the Access Control List of a topic or an association. |
Permissions |
getAssociationPermissions(long assocId)
|
Collection<Association> |
getAssociationsByCreator(String username)
|
Collection<Association> |
getAssociationsByOwner(String username)
|
String |
getCreator(DeepaMehtaObject object)
Returns the creator of a topic or an association. |
String |
getOwner(DeepaMehtaObject object)
Returns the owner of a topic or an association. |
private Permissions |
getPermissions(DeepaMehtaObject object)
|
private Permissions |
getPermissions(Type type)
|
Permissions |
getTopicPermissions(long topicId)
|
Collection<Topic> |
getTopicsByCreator(String username)
|
Collection<Topic> |
getTopicsByOwner(String username)
|
String |
getUsername()
Returns the username of the logged in user. |
Topic |
getUsername(String username)
Returns the "Username" topic for the specified username. |
private Topic |
getUsernameOrThrow(String username)
|
private boolean |
hasPermission(String username,
Operation operation,
DeepaMehtaObject object)
Checks if a user is allowed to perform an operation on an object (topic or association). |
private String |
info(DeepaMehtaObject object)
|
private String |
info(javax.servlet.http.HttpServletRequest request)
|
private String |
info(javax.servlet.http.HttpSession session)
|
void |
init()
|
void |
introduceAssociationType(AssociationType assocType,
ClientState clientState)
|
void |
introduceTopicType(TopicType topicType,
ClientState clientState)
|
private boolean |
isLoginRequired(javax.servlet.http.HttpServletRequest request)
|
private boolean |
isUserAccount(Topic topic)
|
private void |
joinIfWorkspace(Topic topic)
|
void |
joinWorkspace(String username,
long workspaceId)
|
void |
joinWorkspace(Topic username,
long workspaceId)
|
void |
login()
Checks weather the credentials in the authorization string match an existing User Account, and if so, creates an HTTP session. |
void |
logout()
Logs the user out. |
private boolean |
matches(Topic username,
String password)
Prerequisite: username is not null . |
private String |
password(Topic userAccount)
|
private CompositeValueModel |
permissions(DeepaMehtaObject object)
|
void |
postCreateAssociation(Association assoc,
ClientState clientState,
Directives directives)
|
void |
postCreateTopic(Topic topic,
ClientState clientState,
Directives directives)
|
void |
postInstall()
|
void |
postUpdateTopic(Topic topic,
TopicModel newModel,
TopicModel oldModel,
ClientState clientState,
Directives directives)
|
void |
preSendAssociationType(AssociationType assocType,
ClientState clientState)
|
void |
preSendTopicType(TopicType topicType,
ClientState clientState)
|
private void |
requestFilter(javax.servlet.http.HttpServletRequest request)
|
void |
resourceRequestFilter(javax.servlet.http.HttpServletRequest servletRequest)
|
void |
serviceArrived(PluginService service)
|
void |
serviceGone(PluginService service)
|
void |
serviceRequestFilter(com.sun.jersey.spi.container.ContainerRequest containerRequest)
|
void |
setACL(DeepaMehtaObject object,
AccessControlList acl)
Sets the Access Control List for a topic or an association. |
void |
setCreator(DeepaMehtaObject object,
String username)
Sets the creator of a topic or an association. |
void |
setOwner(DeepaMehtaObject object,
String username)
Sets the owner of a topic or an association. |
private void |
setupAccessControl(DeepaMehtaObject object,
AccessControlList acl,
String username)
|
private void |
setupAccessControlForDefaultTopicmap(Topic defaultTopicmap)
|
private void |
setupDefaultAccessControl(DeepaMehtaObject object)
Sets the logged in user as the creator and the owner of the specified object and creates a default access control entry for it. |
private void |
setupDefaultAccessControl(Type type)
|
private void |
setupUserAccountAccessControl(Topic topic)
|
private void |
setupViewConfigAccessControl(ViewConfiguration viewConfig)
|
private void |
throw401Unauthorized()
|
private void |
throw403Forbidden()
|
private boolean |
tryLogin(Credentials cred,
javax.servlet.http.HttpServletRequest request)
Checks weather the credentials are valid and if so logs the user in. |
private String |
userInfo(String username)
|
private boolean |
userIsCreator(String username,
DeepaMehtaObject object)
Checks if a user is the creator of the object. |
private boolean |
userIsMember(String username,
DeepaMehtaObject object)
Checks if a user is a member of any workspace the object is assigned to. |
private boolean |
userIsOwner(String username,
DeepaMehtaObject object)
Checks if a user is the owner of the object. |
private String |
username(javax.servlet.http.HttpSession session)
|
private boolean |
userOccupiesRole(String username,
UserRole userRole,
DeepaMehtaObject object)
Checks if a user occupies a role with regard to the specified object. |
Methods inherited from class de.deepamehta.core.osgi.PluginActivator |
---|
getBundleContext, getUri, publishDirectory, setCoreService, shutdown, start, stop, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private static final boolean READ_REQUIRES_LOGIN
private static final boolean WRITE_REQUIRES_LOGIN
private static final String SUBNET_FILTER
private static final String AUTHENTICATION_REALM
private static final String DEFAULT_USERNAME
private static final String DEFAULT_PASSWORD
private static final AccessControlList DEFAULT_INSTANCE_ACL
private static final AccessControlList DEFAULT_TYPE_ACL
private static final AccessControlList DEFAULT_USER_ACCOUNT_ACL
private static String URI_CREATOR
private static String URI_OWNER
private static String URI_ACL
private static DeepaMehtaEvent POST_LOGIN_USER
private static DeepaMehtaEvent POST_LOGOUT_USER
private WorkspacesService wsService
@Context private javax.servlet.http.HttpServletRequest request
private Logger logger
Constructor Detail |
---|
public AccessControlPlugin()
Method Detail |
---|
public void login()
AccessControlService
login
in interface AccessControlService
public void logout()
AccessControlService
logout
in interface AccessControlService
public String getUsername()
AccessControlService
getUsername
in interface AccessControlService
null
if no user is logged in.public Topic getUsername(String username)
AccessControlService
getUsername
in interface AccessControlService
dm4.accesscontrol.username
),
or null
if no such username exists.public Permissions getTopicPermissions(long topicId)
getTopicPermissions
in interface AccessControlService
public Permissions getAssociationPermissions(long assocId)
getAssociationPermissions
in interface AccessControlService
public String getCreator(DeepaMehtaObject object)
AccessControlService
getCreator
in interface AccessControlService
null
if no creator is set.public void setCreator(DeepaMehtaObject object, String username)
AccessControlService
setCreator
in interface AccessControlService
public String getOwner(DeepaMehtaObject object)
AccessControlService
getOwner
in interface AccessControlService
null
if no owner is set.public void setOwner(DeepaMehtaObject object, String username)
AccessControlService
setOwner
in interface AccessControlService
public AccessControlList getACL(DeepaMehtaObject object)
AccessControlService
getACL
in interface AccessControlService
public void setACL(DeepaMehtaObject object, AccessControlList acl)
AccessControlService
setACL
in interface AccessControlService
public void joinWorkspace(String username, long workspaceId)
joinWorkspace
in interface AccessControlService
public void joinWorkspace(Topic username, long workspaceId)
joinWorkspace
in interface AccessControlService
public Collection<Topic> getTopicsByCreator(String username)
getTopicsByCreator
in interface AccessControlService
public Collection<Topic> getTopicsByOwner(String username)
getTopicsByOwner
in interface AccessControlService
public Collection<Association> getAssociationsByCreator(String username)
getAssociationsByCreator
in interface AccessControlService
public Collection<Association> getAssociationsByOwner(String username)
getAssociationsByOwner
in interface AccessControlService
public void postInstall()
postInstall
in interface PluginContext
postInstall
in class PluginActivator
public void init()
init
in interface PluginContext
init
in class PluginActivator
public void serviceArrived(PluginService service)
serviceArrived
in interface PluginContext
serviceArrived
in class PluginActivator
public void serviceGone(PluginService service)
serviceGone
in interface PluginContext
serviceGone
in class PluginActivator
public void allPluginsActive()
allPluginsActive
in interface AllPluginsActiveListener
public void postCreateTopic(Topic topic, ClientState clientState, Directives directives)
postCreateTopic
in interface PostCreateTopicListener
public void postCreateAssociation(Association assoc, ClientState clientState, Directives directives)
postCreateAssociation
in interface PostCreateAssociationListener
public void postUpdateTopic(Topic topic, TopicModel newModel, TopicModel oldModel, ClientState clientState, Directives directives)
postUpdateTopic
in interface PostUpdateTopicListener
public void introduceTopicType(TopicType topicType, ClientState clientState)
introduceTopicType
in interface IntroduceTopicTypeListener
public void introduceAssociationType(AssociationType assocType, ClientState clientState)
introduceAssociationType
in interface IntroduceAssociationTypeListener
public void serviceRequestFilter(com.sun.jersey.spi.container.ContainerRequest containerRequest)
serviceRequestFilter
in interface ServiceRequestFilterListener
public void resourceRequestFilter(javax.servlet.http.HttpServletRequest servletRequest)
resourceRequestFilter
in interface ResourceRequestFilterListener
public void preSendTopicType(TopicType topicType, ClientState clientState)
preSendTopicType
in interface PreSendTopicTypeListener
public void preSendAssociationType(AssociationType assocType, ClientState clientState)
preSendAssociationType
in interface PreSendAssociationTypeListener
private Topic createUserAccount(Credentials cred)
private boolean isUserAccount(Topic topic)
private Topic fetchDefaultUser()
dm4.accesscontrol.username
).
RuntimeException
- If the default user doesn't exist.private Topic getUsernameOrThrow(String username)
private void joinIfWorkspace(Topic topic)
private void assignToDefaultWorkspace(Topic topic, String info)
private void setupAccessControlForDefaultTopicmap(Topic defaultTopicmap)
private Topic fetchDefaultTopicmap()
private void requestFilter(javax.servlet.http.HttpServletRequest request)
private void checkRequestOrigin(javax.servlet.http.HttpServletRequest request)
private void checkAuthorization(javax.servlet.http.HttpServletRequest request)
private boolean isLoginRequired(javax.servlet.http.HttpServletRequest request)
private boolean tryLogin(Credentials cred, javax.servlet.http.HttpServletRequest request)
private boolean checkCredentials(Credentials cred)
private void _login(String username, javax.servlet.http.HttpServletRequest request)
private void _logout(javax.servlet.http.HttpServletRequest request)
private boolean matches(Topic username, String password)
null
.
password
- The encrypted password.private Topic fetchUserAccount(Topic username)
null
.
private String username(javax.servlet.http.HttpSession session)
private String password(Topic userAccount)
private void throw401Unauthorized()
private void throw403Forbidden()
private void setupDefaultAccessControl(DeepaMehtaObject object)
private void setupDefaultAccessControl(Type type)
private void setupUserAccountAccessControl(Topic topic)
private void setupViewConfigAccessControl(ViewConfiguration viewConfig)
private void setupAccessControl(DeepaMehtaObject object, AccessControlList acl, String username)
username
- must not be null.private Permissions getPermissions(DeepaMehtaObject object)
private Permissions getPermissions(Type type)
private boolean hasPermission(String username, Operation operation, DeepaMehtaObject object)
true
is returned.
username
- the logged in user (a Topic of type "Username" / dm4.accesscontrol.username
),
or null
if no user is logged in.private boolean userOccupiesRole(String username, UserRole userRole, DeepaMehtaObject object)
true
is returned.
username
- the logged in user (a Topic of type "Username" / dm4.accesscontrol.username
),
or null
if no user is logged in.private boolean userIsMember(String username, DeepaMehtaObject object)
true
is returned.
Prerequisite: a user is logged in (username
is not null
).
username
- a Topic of type "Username" (dm4.accesscontrol.username
). ### FIXDOCobject
- the object in question.private boolean userIsOwner(String username, DeepaMehtaObject object)
true
is returned.
Prerequisite: a user is logged in (username
is not null
).
username
- a Topic of type "Username" (dm4.accesscontrol.username
). ### FIXDOCprivate boolean userIsCreator(String username, DeepaMehtaObject object)
true
is returned.
Prerequisite: a user is logged in (username
is not null
).
username
- a Topic of type "Username" (dm4.accesscontrol.username
). ### FIXDOCprivate void enrichWithPermissions(Type type, Permissions permissions)
private CompositeValueModel permissions(DeepaMehtaObject object)
private Permissions createPermissions(boolean write)
private Permissions createPermissions(boolean write, boolean create)
private String info(DeepaMehtaObject object)
private String userInfo(String username)
private String info(javax.servlet.http.HttpSession session)
private String info(javax.servlet.http.HttpServletRequest request)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |