mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 05:31:22 +00:00
GUACAMOLE-708: Add calls for auto-creating DB users when so configured.
This commit is contained in:
@@ -27,6 +27,7 @@ import org.apache.guacamole.auth.jdbc.sharing.user.SharedAuthenticatedUser;
|
|||||||
import org.apache.guacamole.auth.jdbc.user.ModeledAuthenticatedUser;
|
import org.apache.guacamole.auth.jdbc.user.ModeledAuthenticatedUser;
|
||||||
import org.apache.guacamole.auth.jdbc.user.ModeledUser;
|
import org.apache.guacamole.auth.jdbc.user.ModeledUser;
|
||||||
import org.apache.guacamole.auth.jdbc.user.ModeledUserContext;
|
import org.apache.guacamole.auth.jdbc.user.ModeledUserContext;
|
||||||
|
import org.apache.guacamole.auth.jdbc.user.PrivilegedModeledAuthenticatedUser;
|
||||||
import org.apache.guacamole.auth.jdbc.user.UserService;
|
import org.apache.guacamole.auth.jdbc.user.UserService;
|
||||||
import org.apache.guacamole.language.TranslatableGuacamoleClientException;
|
import org.apache.guacamole.language.TranslatableGuacamoleClientException;
|
||||||
import org.apache.guacamole.net.auth.AuthenticatedUser;
|
import org.apache.guacamole.net.auth.AuthenticatedUser;
|
||||||
@@ -98,7 +99,7 @@ public class JDBCAuthenticationProviderService implements AuthenticationProvider
|
|||||||
ModeledUser user = userService.retrieveUser(authenticationProvider, authenticatedUser);
|
ModeledUser user = userService.retrieveUser(authenticationProvider, authenticatedUser);
|
||||||
ModeledUserContext context = userContextProvider.get();
|
ModeledUserContext context = userContextProvider.get();
|
||||||
if (user != null && !user.isDisabled()) {
|
if (user != null && !user.isDisabled()) {
|
||||||
|
|
||||||
// Enforce applicable account restrictions
|
// Enforce applicable account restrictions
|
||||||
if (databaseRestrictionsApplicable) {
|
if (databaseRestrictionsApplicable) {
|
||||||
|
|
||||||
@@ -126,9 +127,15 @@ public class JDBCAuthenticationProviderService implements AuthenticationProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If no user account is found, and database-specific account
|
// If no user account is found, and database-specific account
|
||||||
// restrictions do not apply, get an empty user.
|
// restrictions do not apply, get a skeleton user.
|
||||||
else if (!databaseRestrictionsApplicable) {
|
else if (!databaseRestrictionsApplicable) {
|
||||||
user = userService.retrieveSkeletonUser(authenticationProvider, authenticatedUser);
|
user = userService.retrieveSkeletonUser(authenticationProvider, authenticatedUser);
|
||||||
|
|
||||||
|
// If auto account creation is enabled, add user to DB.
|
||||||
|
if(environment.autoCreateAbsentAccounts()) {
|
||||||
|
userService.createObject(new PrivilegedModeledAuthenticatedUser(user.getCurrentUser()), user);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Veto authentication result only if database-specific account
|
// Veto authentication result only if database-specific account
|
||||||
|
@@ -52,6 +52,7 @@ import org.apache.guacamole.net.auth.ActivityRecord;
|
|||||||
import org.apache.guacamole.net.auth.AuthenticatedUser;
|
import org.apache.guacamole.net.auth.AuthenticatedUser;
|
||||||
import org.apache.guacamole.net.auth.AuthenticationProvider;
|
import org.apache.guacamole.net.auth.AuthenticationProvider;
|
||||||
import org.apache.guacamole.net.auth.User;
|
import org.apache.guacamole.net.auth.User;
|
||||||
|
import org.apache.guacamole.net.auth.UserContext;
|
||||||
import org.apache.guacamole.net.auth.credentials.CredentialsInfo;
|
import org.apache.guacamole.net.auth.credentials.CredentialsInfo;
|
||||||
import org.apache.guacamole.net.auth.permission.ObjectPermission;
|
import org.apache.guacamole.net.auth.permission.ObjectPermission;
|
||||||
import org.apache.guacamole.net.auth.permission.ObjectPermissionSet;
|
import org.apache.guacamole.net.auth.permission.ObjectPermissionSet;
|
||||||
@@ -407,11 +408,8 @@ public class UserService extends ModeledDirectoryObjectService<ModeledUser, User
|
|||||||
if (authenticatedUser instanceof ModeledAuthenticatedUser)
|
if (authenticatedUser instanceof ModeledAuthenticatedUser)
|
||||||
return ((ModeledAuthenticatedUser) authenticatedUser).getUser();
|
return ((ModeledAuthenticatedUser) authenticatedUser).getUser();
|
||||||
|
|
||||||
// Get username
|
|
||||||
String username = authenticatedUser.getIdentifier();
|
|
||||||
|
|
||||||
// Retrieve corresponding user model, if such a user exists
|
// Retrieve corresponding user model, if such a user exists
|
||||||
UserModel userModel = userMapper.selectOne(username);
|
UserModel userModel = userMapper.selectOne(authenticatedUser.getIdentifier());
|
||||||
if (userModel == null)
|
if (userModel == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -449,6 +447,8 @@ public class UserService extends ModeledDirectoryObjectService<ModeledUser, User
|
|||||||
public ModeledUser retrieveSkeletonUser(AuthenticationProvider authenticationProvider,
|
public ModeledUser retrieveSkeletonUser(AuthenticationProvider authenticationProvider,
|
||||||
AuthenticatedUser authenticatedUser) throws GuacamoleException {
|
AuthenticatedUser authenticatedUser) throws GuacamoleException {
|
||||||
|
|
||||||
|
logger.info(">>>JDBC<<< Creating skeleton user {}", authenticatedUser.getIdentifier());
|
||||||
|
|
||||||
// Set up an empty user model
|
// Set up an empty user model
|
||||||
ModeledUser user = getObjectInstance(null,
|
ModeledUser user = getObjectInstance(null,
|
||||||
new UserModel(authenticatedUser.getIdentifier()));
|
new UserModel(authenticatedUser.getIdentifier()));
|
||||||
|
Reference in New Issue
Block a user