
org.marketcetera.admin.AuthorizationInitializer Maven / Gradle / Ivy
The newest version!
package org.marketcetera.admin;
import java.util.Set;
import javax.annotation.PostConstruct;
import org.apache.commons.lang.Validate;
import org.marketcetera.admin.impl.SimpleUser;
import org.marketcetera.admin.service.AuthorizationService;
import org.marketcetera.admin.service.PasswordService;
import org.marketcetera.admin.service.UserService;
import org.marketcetera.util.log.SLF4JLoggerProxy;
import org.springframework.beans.factory.annotation.Autowired;
/* $License$ */
/**
* Initializes the authorization system.
*
* @author Colin DuPlantis
* @version $Id$
* @since 1.0.1
*/
public class AuthorizationInitializer
{
/**
* Validates and starts the object.
*/
@PostConstruct
public void start()
{
Validate.notNull(authzService);
Validate.notNull(userService);
Validate.notNull(permissionFactory);
Validate.notNull(roleFactory);
if(users != null) {
for(UserDescriptor userDescriptor : users) {
if(userService.findByName(userDescriptor.getName()) == null) {
SLF4JLoggerProxy.info(this,
"Adding user {}",
userDescriptor);
SimpleUser user = new SimpleUser();
user.setDescription(userDescriptor.getDescription());
user.setName(userDescriptor.getName());
user.setHashedPassword(passwordService.getHash(userDescriptor.getPassword()));
userService.save(user);
} else {
SLF4JLoggerProxy.info(this,
"Not adding user {} because a user by that name already exists",
userDescriptor);
}
}
}
if(permissions != null) {
for(PermissionDescriptor permissionDescriptor : permissions) {
if(authzService.findPermissionByName(permissionDescriptor.getName()) == null) {
SLF4JLoggerProxy.info(this,
"Adding permission {}",
permissionDescriptor);
authzService.save(permissionFactory.create(permissionDescriptor.getName(),
permissionDescriptor.getDescription()));
} else {
SLF4JLoggerProxy.info(this,
"Not adding permission {} because a permission by that name already exists",
permissionDescriptor);
}
}
}
if(roles != null) {
for(RoleDescriptor roleDescriptor : roles) {
if(authzService.findRoleByName(roleDescriptor.getName()) == null) {
Role role = roleFactory.create(roleDescriptor.getName(),
roleDescriptor.getDescription());
for(String permissionName : roleDescriptor.getPermissionNames()) {
Permission permission = authzService.findPermissionByName(permissionName);
if(permission != null) {
SLF4JLoggerProxy.info(this,
"Adding role {}",
roleDescriptor);
role.getPermissions().add(permission);
} else {
SLF4JLoggerProxy.warn(this,
"Not adding {} to role {} because no permission by that name exists",
permissionName,
role);
}
}
for(String username : roleDescriptor.getUsernames()) {
User user = userService.findByName(username);
if(user != null) {
role.getSubjects().add(user);
} else {
SLF4JLoggerProxy.warn(this,
"Not adding {} to role {} because no user by that name exists",
username,
role);
}
}
authzService.save(role);
} else {
SLF4JLoggerProxy.info(this,
"Not adding or modifying role {} because a role by that name already exists",
roleDescriptor);
}
}
}
if(supervisorPermissions != null) {
for(SupervisorPermissionDescriptor supervisorDescriptor: supervisorPermissions) {
if(authzService.findSupervisorPermissionByName(supervisorDescriptor.getName()) == null) {
SupervisorPermission supervisorPermission = supervisorPermissionFactory.create(supervisorDescriptor.getName(),
supervisorDescriptor.getDescription());
User supervisor = userService.findByName(supervisorDescriptor.getSupervisorUsername());
if(supervisor == null) {
SLF4JLoggerProxy.warn(this,
"Not adding {} because no supervisor user by name {} exists",
supervisorDescriptor,
supervisorDescriptor.getSupervisorUsername());
continue;
} else {
supervisorPermission.setSupervisor(supervisor);
}
for(String permissionName : supervisorDescriptor.getPermissionNames()) {
Permission permission = authzService.findPermissionByName(permissionName);
if(permission != null) {
SLF4JLoggerProxy.info(this,
"Adding supervisor permission {}",
supervisorDescriptor);
supervisorPermission.getPermissions().add(permission);
} else {
SLF4JLoggerProxy.warn(this,
"Not adding {} to supervisor permission {} because no permission by that name exists",
permissionName,
supervisorPermission);
}
}
for(String username : supervisorDescriptor.getSubjectUsernames()) {
User user = userService.findByName(username);
if(user != null) {
supervisorPermission.getSubjects().add(user);
} else {
SLF4JLoggerProxy.warn(this,
"Not adding {} to supervisor permission {} because no user by that name exists",
username,
supervisorPermission);
}
}
authzService.save(supervisorPermission);
} else {
SLF4JLoggerProxy.info(this,
"Not adding or modifying supervisor permission {} because a supervisor permission by that name already exists",
supervisorDescriptor);
}
}
}
}
/**
* Get the users value.
*
* @return a Set<UserDescriptor>
value
*/
public Set getUsers()
{
return users;
}
/**
* Sets the users value.
*
* @param inUsers a Set<UserDescriptor>
value
*/
public void setUsers(Set inUsers)
{
users = inUsers;
}
/**
* Get the permissions value.
*
* @return a Set<PermissionDescriptor>
value
*/
public Set getPermissions()
{
return permissions;
}
/**
* Sets the permissions value.
*
* @param inPermissions a Set<PermissionDescriptor>
value
*/
public void setPermissions(Set inPermissions)
{
permissions = inPermissions;
}
/**
* Get the authzService value.
*
* @return an AuthorizationService
value
*/
public AuthorizationService getAuthzService()
{
return authzService;
}
/**
* Sets the authzService value.
*
* @param inAuthzService an AuthorizationService
value
*/
public void setAuthzService(AuthorizationService inAuthzService)
{
authzService = inAuthzService;
}
/**
* Get the roles value.
*
* @return a Set<RoleDescriptor>
value
*/
public Set getRoles()
{
return roles;
}
/**
* Sets the roles value.
*
* @param inRoles a Set<RoleDescriptor>
value
*/
public void setRoles(Set inRoles)
{
roles = inRoles;
}
/**
* Get the supervisorPermissions value.
*
* @return a Set<SupervisorPermissionDescriptor>
value
*/
public Set getSupervisorPermissions()
{
return supervisorPermissions;
}
/**
* Sets the supervisorPermissions value.
*
* @param inSupervisorPermissions a Set<SupervisorPermissionDescriptor>
value
*/
public void setSupervisorPermissions(Set inSupervisorPermissions)
{
supervisorPermissions = inSupervisorPermissions;
}
/**
* Get the permissionFactory value.
*
* @return a PermissionFactory
value
*/
public PermissionFactory getPermissionFactory()
{
return permissionFactory;
}
/**
* Sets the permissionFactory value.
*
* @param inPermissionFactory a PermissionFactory
value
*/
public void setPermissionFactory(PermissionFactory inPermissionFactory)
{
permissionFactory = inPermissionFactory;
}
/**
* Get the roleFactory value.
*
* @return a RoleFactory
value
*/
public RoleFactory getRoleFactory()
{
return roleFactory;
}
/**
* Sets the roleFactory value.
*
* @param inRoleFactory a RoleFactory
value
*/
public void setRoleFactory(RoleFactory inRoleFactory)
{
roleFactory = inRoleFactory;
}
/**
* Get the userService value.
*
* @return a UserService
value
*/
public UserService getUserService()
{
return userService;
}
/**
* Sets the userService value.
*
* @param inUserService a UserService
value
*/
public void setUserService(UserService inUserService)
{
userService = inUserService;
}
/**
* creates Permission
objects
*/
@Autowired
private PermissionFactory permissionFactory;
/**
* creates Role
objects
*/
@Autowired
private RoleFactory roleFactory;
/**
* provides access to authorization services
*/
@Autowired
private AuthorizationService authzService;
/**
* provides access to user services
*/
@Autowired
private UserService userService;
/**
* permissions to add
*/
private Set permissions;
/**
* roles to add
*/
private Set roles;
/**
* users to add
*/
private Set users;
/**
* supervisors to add
*/
private Set supervisorPermissions;
/**
* creates SupervisorPermission
objects
*/
@Autowired
private SupervisorPermissionFactory supervisorPermissionFactory;
/**
* provides password services
*/
@Autowired
private PasswordService passwordService;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy