cmsuserdriver.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,629 行 · 第 1/5 页
JAVA
1,629 行
if (parentFolder != null) {
internalValidateResourceForOrgUnit(
dbc,
internalCreateOrgUnitFromResource(dbc, parentFolder),
resource.getRootPath());
ouPath = parentFolder.getRootPath();
if (!ouPath.endsWith("/")) {
ouPath += "/";
}
}
// create the resource
CmsResource ouFolder = internalCreateResourceForOrgUnit(dbc, ouPath + name, flags);
// write description property
internalWriteOrgUnitProperty(
dbc,
ouFolder,
new CmsProperty(ORGUNIT_PROPERTY_DESCRIPTION, description, null));
// create the ou object
CmsOrganizationalUnit ou = internalCreateOrgUnitFromResource(dbc, ouFolder);
if (ou.getParentFqn() != null) {
// if not the root ou, create default roles & groups
// for the root ou, are created in #fillDefaults
Locale locale = dbc.getRequestContext().getLocale();
if (locale == null) {
locale = CmsLocaleManager.getDefaultLocale();
}
// create default groups
internalCreateDefaultGroups(dbc, ou.getName(), ou.getDisplayName(locale));
// create default project
CmsProject project = m_driverManager.createProject(
dbc,
ou.getName() + OFFLINE_PROJECT_NAME,
"",
ou.getName() + OpenCms.getDefaultUsers().getGroupUsers(),
ou.getName() + OpenCms.getDefaultUsers().getGroupUsers(),
CmsProject.PROJECT_TYPE_NORMAL);
// write project id property
internalWriteOrgUnitProperty(dbc, ouFolder, new CmsProperty(
ORGUNIT_PROPERTY_PROJECTID,
project.getUuid().toString(),
null));
} else {
// write project id property
internalWriteOrgUnitProperty(dbc, ouFolder, new CmsProperty(
ORGUNIT_PROPERTY_PROJECTID,
CmsUUID.getNullUUID().toString(),
null));
}
// reread the ou, to actualize the project id
ou = internalCreateOrgUnitFromResource(dbc, ouFolder);
// add the given resource
m_driverManager.addResourceToOrgUnit(dbc, ou, resource);
OpenCms.fireCmsEvent(I_CmsEventListener.EVENT_CLEAR_ONLINE_CACHES, null);
// return the new created ou
return ou;
} catch (CmsException e) {
throw new CmsDataAccessException(e.getMessageContainer(), e);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#createRootOrganizationalUnit(org.opencms.db.CmsDbContext)
*/
public void createRootOrganizationalUnit(CmsDbContext dbc) {
try {
readOrganizationalUnit(dbc, "");
} catch (CmsException e) {
try {
CmsProject onlineProject = dbc.currentProject();
CmsProject setupProject = onlineProject;
// get the right offline project
try {
// this if setting up OpenCms
setupProject = m_driverManager.readProject(
new CmsDbContext(),
I_CmsProjectDriver.SETUP_PROJECT_NAME);
} catch (CmsException exc) {
// this if updating OpenCms
try {
setupProject = m_driverManager.readProject(new CmsDbContext(), "Offline");
} catch (CmsException exc2) {
// there is nothing to do, if no offline project found
}
}
dbc.getRequestContext().setCurrentProject(setupProject);
try {
createOrganizationalUnit(dbc, "", CmsMacroResolver.localizedKeyMacro(
Messages.GUI_ORGUNIT_ROOT_DESCRIPTION_0,
null), 0, null, "/");
} finally {
dbc.getRequestContext().setCurrentProject(onlineProject);
}
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ROOT_ORGUNIT_DEFAULTS_INITIALIZED_0));
}
} catch (CmsException exc) {
if (CmsLog.INIT.isErrorEnabled()) {
CmsLog.INIT.error(
Messages.get().getBundle().key(Messages.INIT_ROOT_ORGUNIT_INITIALIZATION_FAILED_0),
exc);
}
throw new CmsInitException(Messages.get().container(Messages.ERR_INITIALIZING_USER_DRIVER_0), exc);
}
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#createUser(CmsDbContext, CmsUUID, String, String, String, String, String, long, int, long, Map)
*/
public CmsUser createUser(
CmsDbContext dbc,
CmsUUID id,
String userFqn,
String password,
String firstname,
String lastname,
String email,
long lastlogin,
int flags,
long dateCreated,
Map additionalInfos) throws CmsDataAccessException {
Connection conn = null;
PreparedStatement stmt = null;
if (existsUser(dbc, userFqn)) {
CmsMessageContainer message = Messages.get().container(
Messages.ERR_USER_WITH_NAME_ALREADY_EXISTS_1,
userFqn);
if (LOG.isErrorEnabled()) {
LOG.error(message.key());
}
throw new CmsDbEntryAlreadyExistsException(message);
}
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_ADD_10");
stmt.setString(1, id.toString());
stmt.setString(2, CmsOrganizationalUnit.getSimpleName(userFqn));
stmt.setString(3, password);
stmt.setString(4, m_sqlManager.validateEmpty(firstname));
stmt.setString(5, m_sqlManager.validateEmpty(lastname));
stmt.setString(6, m_sqlManager.validateEmpty(email));
stmt.setLong(7, lastlogin);
stmt.setInt(8, flags);
stmt.setString(9, CmsOrganizationalUnit.SEPARATOR + CmsOrganizationalUnit.getParentFqn(userFqn));
stmt.setLong(10, (dateCreated == 0 ? System.currentTimeMillis() : dateCreated));
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
internalWriteUserInfos(dbc, id, additionalInfos);
return readUser(dbc, id);
}
/**
* @see org.opencms.db.I_CmsUserDriver#createUserInGroup(org.opencms.db.CmsDbContext, org.opencms.util.CmsUUID, org.opencms.util.CmsUUID)
*/
public void createUserInGroup(CmsDbContext dbc, CmsUUID userId, CmsUUID groupId) throws CmsDataAccessException {
Connection conn = null;
PreparedStatement stmt = null;
// check if user is already in group
if (!internalValidateUserInGroup(dbc, userId, groupId)) {
// if not, add this user to the group
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_ADD_USER_TO_GROUP_3");
// write the new assignment to the database
stmt.setString(1, groupId.toString());
stmt.setString(2, userId.toString());
// flag field is not used yet
stmt.setInt(3, 0);
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteAccessControlEntries(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID)
*/
public void deleteAccessControlEntries(CmsDbContext dbc, CmsProject project, CmsUUID resource)
throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, project, "C_ACCESS_SET_FLAGS_ALL_2");
stmt.setInt(1, CmsAccessControlEntry.ACCESS_FLAGS_DELETED);
stmt.setString(2, resource.toString());
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteGroup(org.opencms.db.CmsDbContext, java.lang.String)
*/
public void deleteGroup(CmsDbContext dbc, String groupFqn) throws CmsDataAccessException {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_DELETE_GROUP_2");
stmt.setString(1, CmsOrganizationalUnit.getSimpleName(groupFqn));
stmt.setString(2, CmsOrganizationalUnit.SEPARATOR + CmsOrganizationalUnit.getParentFqn(groupFqn));
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteOrganizationalUnit(org.opencms.db.CmsDbContext, org.opencms.security.CmsOrganizationalUnit)
*/
public void deleteOrganizationalUnit(CmsDbContext dbc, CmsOrganizationalUnit organizationalUnit)
throws CmsDataAccessException {
try {
CmsResource resource = m_driverManager.readResource(
dbc,
organizationalUnit.getId(),
CmsResourceFilter.DEFAULT);
internalDeleteOrgUnitResource(dbc, resource);
try {
// maintain the default project synchronized
m_driverManager.deleteProject(dbc, m_driverManager.readProject(dbc, organizationalUnit.getProjectId()));
} catch (CmsDbEntryNotFoundException e) {
// ignore
}
} catch (CmsException e) {
throw new CmsDataAccessException(e.getMessageContainer(), e);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteUser(org.opencms.db.CmsDbContext, java.lang.String)
*/
public void deleteUser(CmsDbContext dbc, String userFqn) throws CmsDataAccessException {
CmsUser user = readUser(dbc, userFqn);
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_DELETE_2");
stmt.setString(1, CmsOrganizationalUnit.getSimpleName(userFqn));
stmt.setString(2, CmsOrganizationalUnit.SEPARATOR + CmsOrganizationalUnit.getParentFqn(userFqn));
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
// delete the additional infos
deleteUserInfos(dbc, user.getId());
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteUserInfos(org.opencms.db.CmsDbContext, org.opencms.util.CmsUUID)
*/
public void deleteUserInfos(CmsDbContext dbc, CmsUUID userId) throws CmsDataAccessException {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_USERDATA_DELETE_1");
stmt.setString(1, userId.toString());
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#deleteUserInGroup(org.opencms.db.CmsDbContext, org.opencms.util.CmsUUID, org.opencms.util.CmsUUID)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?