/*! * Copyright 2010 - 2015 Pentaho Corporation. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.pentaho.di.repository.pur; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.repository.IUser; import org.pentaho.di.repository.ObjectId; import org.pentaho.di.repository.RepositoryCommonValidations; import org.pentaho.di.repository.RepositorySecurityUserValidator; import org.pentaho.di.repository.pur.model.EERoleInfo; import org.pentaho.di.repository.pur.model.EEUserInfo; import org.pentaho.di.repository.pur.model.IRole; import org.pentaho.di.ui.repository.pur.services.IRoleSupportSecurityManager; import org.pentaho.di.ui.repository.pur.services.RepositorySecurityRoleValidator; import org.pentaho.platform.security.userroledao.ws.UserRoleException; import java.util.List; public class PurRepositorySecurityManager implements IRoleSupportSecurityManager, IUserRoleListChangeListener, java.io.Serializable, RepositorySecurityUserValidator, RepositorySecurityRoleValidator { private static final long serialVersionUID = 6820830385234412904L; /* EESOURCE: UPDATE SERIALVERUID */ private PurRepository repository; private UserRoleDelegate userRoleDelegate; private static final Log logger = LogFactory.getLog( UserRoleDelegate.class ); public PurRepositorySecurityManager( PurRepository repository, PurRepositoryMeta repositoryMeta, IUser user, ServiceManager serviceManager ) { this.repository = repository; this.userRoleDelegate = new UserRoleDelegate( this, repositoryMeta, user, logger, serviceManager ); userRoleDelegate.addUserRoleListChangeListener( this ); this.setUserRoleDelegate( userRoleDelegate ); } public UserRoleDelegate getUserRoleDelegate() { return userRoleDelegate; } public void setUserRoleDelegate( UserRoleDelegate userRoleDelegate ) { this.userRoleDelegate = userRoleDelegate; } public PurRepository getRepository() { return repository; } public boolean supportsMetadata() { return true; } public boolean supportsRevisions() { return true; } public boolean supportsUsers() { return true; } public void delUser( ObjectId id_user ) throws KettleException { } public ObjectId getUserID( String login ) throws KettleException { return null; } public ObjectId[] getUserIDs() throws KettleException { return null; } public IUser loadUserInfo( String login ) throws KettleException { // Create a UserInfo object IUser user = constructUser(); user.setLogin( login ); user.setName( login ); return user; } public IUser loadUserInfo( String login, String password ) throws KettleException { // Create a UserInfo object IUser user = constructUser(); user.setLogin( login ); user.setPassword( password ); user.setName( login ); return user; } public void renameUser( ObjectId id_user, String newname ) throws KettleException { } public void saveUserInfo( IUser user ) throws KettleException { normalizeUserInfo( user ); if ( !validateUserInfo( user ) ) { throw new KettleException( BaseMessages.getString( PurRepositorySecurityManager.class, "PurRepositorySecurityManager.ERROR_0001_INVALID_NAME" ) ); } userRoleDelegate.createUser( user ); } @Override public boolean validateUserInfo( IUser user ) { return RepositoryCommonValidations.checkUserInfo( user ); } @Override public void normalizeUserInfo( IUser user ) { RepositoryCommonValidations.normalizeUserInfo( user ); } public void createRole( IRole newRole ) throws KettleException { normalizeRoleInfo( newRole ); if ( !validateRoleInfo( newRole ) ) { throw new KettleException( BaseMessages.getString( PurRepositorySecurityManager.class, "PurRepositorySecurityManager.ERROR_0001_INVALID_NAME" ) ); } userRoleDelegate.createRole( newRole ); } @Override public boolean validateRoleInfo( IRole role ) { return StringUtils.isNotBlank( role.getName() ); } @Override public void normalizeRoleInfo( IRole role ) { role.setName( role.getName().trim() ); } public void deleteRoles( List<IRole> roles ) throws KettleException { userRoleDelegate.deleteRoles( roles ); } public void deleteUsers( List<IUser> users ) throws KettleException { userRoleDelegate.deleteUsers( users ); } public IRole getRole( String name ) throws KettleException { return userRoleDelegate.getRole( name ); } public List<IRole> getRoles() throws KettleException { return userRoleDelegate.getRoles(); } public List<IRole> getDefaultRoles() throws KettleException { return userRoleDelegate.getDefaultRoles(); } public void updateRole( IRole role ) throws KettleException { userRoleDelegate.updateRole( role ); } public void updateUser( IUser user ) throws KettleException { userRoleDelegate.updateUser( user ); } public void delUser( String name ) throws KettleException { userRoleDelegate.deleteUser( name ); } public void deleteRole( String name ) throws KettleException { userRoleDelegate.deleteRole( name ); } public List<IUser> getUsers() throws KettleException { return userRoleDelegate.getUsers(); } public void setRoles( List<IRole> roles ) throws KettleException { userRoleDelegate.setRoles( roles ); } public void setUsers( List<IUser> users ) throws KettleException { userRoleDelegate.setUsers( users ); } public IRole constructRole() throws KettleException { return new EERoleInfo(); } public IUser constructUser() throws KettleException { return new EEUserInfo(); } public void onChange() { try { userRoleDelegate.updateUserRoleInfo(); } catch ( UserRoleException e ) { e.printStackTrace(); } } public static Log getLogger() { return logger; } public boolean isManaged() throws KettleException { return userRoleDelegate.isManaged(); } }