Creating your own login module
The class must implement PrincipalAdapter interface.
package com.openkm.plugin.principal;
import com.openkm.bean.CommonUser;
import com.openkm.db.bean.Profile;
import com.openkm.principal.PrincipalAdapterException;
import net.xeoh.plugins.base.Plugin;
import java.util.List;
public interface PrincipalAdapter extends Plugin {
/**
* Method to retrieve all users from a authentication source.
*
* @return A Collection with all the users.
* @throws PrincipalAdapterException If any error occurs.
*/
List<CommonUser> getUsers() throws PrincipalAdapterException;
/**
* Method to retrieve all roles from a authentication source.
*
* @return A Collection with all the roles.
* @throws PrincipalAdapterException If any error occurs.
*/
List<String> getRoles() throws PrincipalAdapterException;
/**
* Method to retrieve user data
*
* @return the user data
* @throws PrincipalAdapterException If any error occurs.
*/
CommonUser getUser(String userId) throws PrincipalAdapterException;
/**
* Method to retrieve all users from a role.
*
* @return A Collection with all the users within a role.
* @throws PrincipalAdapterException If any error occurs.
*/
List<CommonUser> getUsersByRole(String role) throws PrincipalAdapterException;
/**
* Method to retrieve all roles from a user.
*
* @return A Collection with all the roles of the user.
* @throws PrincipalAdapterException If any error occurs.
*/
List<String> getRolesByUser(String user) throws PrincipalAdapterException;
/**
* Method to retrieve the user password
*
* @param user A user id.
* @return The password of the user.
* @throws PrincipalAdapterException If any error occurs.
*/
String getPassword(String user) throws PrincipalAdapterException;
/*
* ------------------------------------------------------------------
* These methods only works if using the OpenKM user database.
* ------------------------------------------------------------------
*/
/**
* Method to create a new user
*
* @param user User data
* @return User
* @throws PrincipalAdapterException If any error occurs.
*/
CommonUser createUser(CommonUser user) throws PrincipalAdapterException;
/**
* Method to create a delete a user
*
* @param user A user id.
* @throws PrincipalAdapterException If any error occurs.
*/
void deleteUser(String user) throws PrincipalAdapterException;
/**
* Update user information
*
* @param user User data
* @return User
* @throws PrincipalAdapterException If any error occurs.
*/
CommonUser updateUser(CommonUser user) throws PrincipalAdapterException;
/**
* Method to create a new role
*
* @param role A role id.
* @throws PrincipalAdapterException If any error occurs.
*/
void createRole(String role, boolean active) throws PrincipalAdapterException;
/**
* Method to create a delete a role
*
* @param role A role id.
* @throws PrincipalAdapterException If any error occurs.
*/
void deleteRole(String role) throws PrincipalAdapterException;
/**
* Update role information
*
* @param role A role id..
* @throws PrincipalAdapterException If any error occurs.
*/
void updateRole(String role, boolean active) throws PrincipalAdapterException;
/**
* Method to assign a role
*
* @param user A user id.
* @param role A role id.
* @throws PrincipalAdapterException If any error occurs.
*/
void assignRole(String user, String role) throws PrincipalAdapterException;
/**
* Method to remove a role
*
* @param user A user id.
* @param role A role id.
* @throws PrincipalAdapterException If any error occurs.
*/
void removeRole(String user, String role) throws PrincipalAdapterException;
/**
* Get all profiles
*
* @param filterByActive
* @return A list with all the registered profiles
* @throws PrincipalAdapterException
*/
List<Profile> getProfiles(boolean filterByActive) throws PrincipalAdapterException;
/**
* Get user profile
*
* @return The profile assigned to this user
* @throws PrincipalAdapterException
*/
Profile getUserProfile(String userId) throws PrincipalAdapterException;
/**
* Set the user profile
*
* @param userId The user id.
* @param profileId The profile to be assigned.
* @throws PrincipalAdapterException
*/
void setUserProfile(String userId, long profileId) throws PrincipalAdapterException;
boolean isManageUsers();
boolean isManageRoles();
}
PrincipalAdapter sample based on properties
package com.openkm.plugin.principal;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.openkm.api.OKMAuth;
import com.openkm.bean.CommonUser;
import com.openkm.core.Config;
import com.openkm.db.bean.Profile;
import com.openkm.plugin.BasePlugin;
import com.openkm.principal.PrincipalAdapterException;
public class UsersRolesPrincipalAdapter extends BasePlugin implements PrincipalAdapter {
private static Logger log = LoggerFactory.getLogger(UsersRolesPrincipalAdapter.class);
@Autowired
private OKMAuth okmAuth;
@Override
public List<CommonUser> getUsers() throws PrincipalAdapterException {
log.debug("getUsers()");
List<CommonUser> list = new ArrayList<>();
Properties prop = new Properties();
try {
prop.load(new FileInputStream(Config.HOME_DIR + "/server/default/conf/props/openkm-users.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) {
String user = (String) e.nextElement();
if (!Config.SYSTEM_USER.equals(user)) {
CommonUser commonUser = okmAuth.getUser(null, user);
list.add(commonUser);
}
}
log.debug("getUsers: {}", list);
return list;
}
@Override
public List<String> getRoles() throws PrincipalAdapterException {
log.debug("getRoles()");
List<String> list = new ArrayList<String>();
Properties prop = new Properties();
try {
prop.load(new FileInputStream(Config.HOME_DIR + "/server/default/conf/props/openkm-roles.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
for (Enumeration<Object> e = prop.elements(); e.hasMoreElements();) {
for (StringTokenizer st = new StringTokenizer((String) e.nextElement(), ","); st.hasMoreTokens();) {
String role = st.nextToken();
if (!Config.DEFAULT_ADMIN_ROLE.equals(role) && !list.contains(role)) {
list.add(role);
}
}
}
log.debug("getRoles: {}", list);
return list;
}
@Override
public CommonUser getUser(String userId) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getUser");
}
@Override
public List<CommonUser> getUsersByRole(String role) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getUsersByRole");
}
@Override
public List<String> getRolesByUser(String user) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getRolesByUser");
}
@Override
public String getPassword(String user) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getPassword");
}
@Override
public CommonUser createUser(CommonUser user) throws PrincipalAdapterException {
throw new UnsupportedOperationException("createUser");
}
@Override
public void deleteUser(String user) throws PrincipalAdapterException {
throw new UnsupportedOperationException("deleteUser");
}
@Override
public CommonUser updateUser(CommonUser user) throws PrincipalAdapterException {
throw new UnsupportedOperationException("updateUser");
}
@Override
public void createRole(String role, boolean active) throws PrincipalAdapterException {
throw new UnsupportedOperationException("createRole");
}
@Override
public void deleteRole(String role) throws PrincipalAdapterException {
throw new UnsupportedOperationException("deleteRole");
}
@Override
public void updateRole(String role, boolean active) throws PrincipalAdapterException {
throw new UnsupportedOperationException("updateRole");
}
@Override
public void assignRole(String user, String role) throws PrincipalAdapterException {
throw new UnsupportedOperationException("assignRole");
}
@Override
public void removeRole(String user, String role) throws PrincipalAdapterException {
throw new UnsupportedOperationException("removeRole");
}
@Override
public List<Profile> getProfiles(boolean filterByActive) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getProfiles");
}
@Override
public Profile getUserProfile(String userId) throws PrincipalAdapterException {
throw new UnsupportedOperationException("getUserProfile");
}
@Override
public void setUserProfile(String userId, long profileId) throws PrincipalAdapterException {
throw new UnsupportedOperationException("setUserProfile");
}
@Override
public boolean isManageUsers() {
throw new UnsupportedOperationException("isManageUsers");
}
@Override
public boolean isManageRoles() {
throw new UnsupportedOperationException("isManageRoles");
}
}