mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUAC-586: Add convenience methods for retrieving objects directly from session.
This commit is contained in:
@@ -25,6 +25,7 @@ package org.glyptodon.guacamole.net.basic.rest;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
import org.glyptodon.guacamole.GuacamoleException;
|
||||||
import org.glyptodon.guacamole.GuacamoleResourceNotFoundException;
|
import org.glyptodon.guacamole.GuacamoleResourceNotFoundException;
|
||||||
|
import org.glyptodon.guacamole.net.auth.AuthenticationProvider;
|
||||||
import org.glyptodon.guacamole.net.auth.Connection;
|
import org.glyptodon.guacamole.net.auth.Connection;
|
||||||
import org.glyptodon.guacamole.net.auth.ConnectionGroup;
|
import org.glyptodon.guacamole.net.auth.ConnectionGroup;
|
||||||
import org.glyptodon.guacamole.net.auth.Directory;
|
import org.glyptodon.guacamole.net.auth.Directory;
|
||||||
@@ -48,7 +49,7 @@ public class ObjectRetrievalService {
|
|||||||
* @param session
|
* @param session
|
||||||
* The GuacamoleSession to retrieve the UserContext from.
|
* The GuacamoleSession to retrieve the UserContext from.
|
||||||
*
|
*
|
||||||
* @param identifier
|
* @param authProviderIdentifier
|
||||||
* The unique identifier of the AuthenticationProvider that created the
|
* The unique identifier of the AuthenticationProvider that created the
|
||||||
* UserContext being retrieved. Only one UserContext per
|
* UserContext being retrieved. Only one UserContext per
|
||||||
* AuthenticationProvider can exist.
|
* AuthenticationProvider can exist.
|
||||||
@@ -62,7 +63,7 @@ public class ObjectRetrievalService {
|
|||||||
* UserContext does not exist.
|
* UserContext does not exist.
|
||||||
*/
|
*/
|
||||||
public UserContext retrieveUserContext(GuacamoleSession session,
|
public UserContext retrieveUserContext(GuacamoleSession session,
|
||||||
String identifier) throws GuacamoleException {
|
String authProviderIdentifier) throws GuacamoleException {
|
||||||
|
|
||||||
// Get list of UserContexts
|
// Get list of UserContexts
|
||||||
List<UserContext> userContexts = session.getUserContexts();
|
List<UserContext> userContexts = session.getUserContexts();
|
||||||
@@ -70,11 +71,17 @@ public class ObjectRetrievalService {
|
|||||||
// Locate and return the UserContext associated with the
|
// Locate and return the UserContext associated with the
|
||||||
// AuthenticationProvider having the given identifier, if any
|
// AuthenticationProvider having the given identifier, if any
|
||||||
for (UserContext userContext : userContexts) {
|
for (UserContext userContext : userContexts) {
|
||||||
if (userContext.getAuthenticationProvider().getIdentifier().equals(identifier))
|
|
||||||
|
// Get AuthenticationProvider associated with current UserContext
|
||||||
|
AuthenticationProvider authProvider = userContext.getAuthenticationProvider();
|
||||||
|
|
||||||
|
// If AuthenticationProvider identifier matches, done
|
||||||
|
if (authProvider.getIdentifier().equals(authProviderIdentifier))
|
||||||
return userContext;
|
return userContext;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new GuacamoleResourceNotFoundException("Session not associated with authentication provider \"" + identifier + "\".");
|
throw new GuacamoleResourceNotFoundException("Session not associated with authentication provider \"" + authProviderIdentifier + "\".");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,6 +116,35 @@ public class ObjectRetrievalService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a single user from the given GuacamoleSession.
|
||||||
|
*
|
||||||
|
* @param session
|
||||||
|
* The GuacamoleSession to retrieve the user from.
|
||||||
|
*
|
||||||
|
* @param authProviderIdentifier
|
||||||
|
* The unique identifier of the AuthenticationProvider that created the
|
||||||
|
* UserContext from which the user should be retrieved. Only one
|
||||||
|
* UserContext per AuthenticationProvider can exist.
|
||||||
|
*
|
||||||
|
* @param identifier
|
||||||
|
* The identifier of the user to retrieve.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The user having the given identifier.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If an error occurs while retrieving the user, or if the
|
||||||
|
* user does not exist.
|
||||||
|
*/
|
||||||
|
public User retrieveUser(GuacamoleSession session, String authProviderIdentifier,
|
||||||
|
String identifier) throws GuacamoleException {
|
||||||
|
|
||||||
|
UserContext userContext = retrieveUserContext(session, authProviderIdentifier);
|
||||||
|
return retrieveUser(userContext, identifier);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a single connection from the given user context.
|
* Retrieves a single connection from the given user context.
|
||||||
*
|
*
|
||||||
@@ -140,6 +176,36 @@ public class ObjectRetrievalService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a single connection from the given GuacamoleSession.
|
||||||
|
*
|
||||||
|
* @param session
|
||||||
|
* The GuacamoleSession to retrieve the connection from.
|
||||||
|
*
|
||||||
|
* @param authProviderIdentifier
|
||||||
|
* The unique identifier of the AuthenticationProvider that created the
|
||||||
|
* UserContext from which the connection should be retrieved. Only one
|
||||||
|
* UserContext per AuthenticationProvider can exist.
|
||||||
|
*
|
||||||
|
* @param identifier
|
||||||
|
* The identifier of the connection to retrieve.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The connection having the given identifier.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If an error occurs while retrieving the connection, or if the
|
||||||
|
* connection does not exist.
|
||||||
|
*/
|
||||||
|
public Connection retrieveConnection(GuacamoleSession session,
|
||||||
|
String authProviderIdentifier, String identifier)
|
||||||
|
throws GuacamoleException {
|
||||||
|
|
||||||
|
UserContext userContext = retrieveUserContext(session, authProviderIdentifier);
|
||||||
|
return retrieveConnection(userContext, identifier);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a single connection group from the given user context. If
|
* Retrieves a single connection group from the given user context. If
|
||||||
* the given identifier the REST API root identifier, the root connection
|
* the given identifier the REST API root identifier, the root connection
|
||||||
@@ -178,4 +244,37 @@ public class ObjectRetrievalService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a single connection group from the given GuacamoleSession. If
|
||||||
|
* the given identifier the REST API root identifier, the root connection
|
||||||
|
* group will be returned. The underlying authentication provider may
|
||||||
|
* additionally use a different identifier for root.
|
||||||
|
*
|
||||||
|
* @param session
|
||||||
|
* The GuacamoleSession to retrieve the connection group from.
|
||||||
|
*
|
||||||
|
* @param authProviderIdentifier
|
||||||
|
* The unique identifier of the AuthenticationProvider that created the
|
||||||
|
* UserContext from which the connection group should be retrieved.
|
||||||
|
* Only one UserContext per AuthenticationProvider can exist.
|
||||||
|
*
|
||||||
|
* @param identifier
|
||||||
|
* The identifier of the connection group to retrieve.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The connection group having the given identifier, or the root
|
||||||
|
* connection group if the identifier the root identifier.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If an error occurs while retrieving the connection group, or if the
|
||||||
|
* connection group does not exist.
|
||||||
|
*/
|
||||||
|
public ConnectionGroup retrieveConnectionGroup(GuacamoleSession session,
|
||||||
|
String authProviderIdentifier, String identifier) throws GuacamoleException {
|
||||||
|
|
||||||
|
UserContext userContext = retrieveUserContext(session, authProviderIdentifier);
|
||||||
|
return retrieveConnectionGroup(userContext, identifier);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014 Glyptodon LLC
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.glyptodon.guacamole.net.basic.rest.auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple object to represent an auth token/username pair in the API.
|
||||||
|
*
|
||||||
|
* @author James Muehlner
|
||||||
|
*/
|
||||||
|
public class APIAuthenticationResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The auth token.
|
||||||
|
*/
|
||||||
|
private final String authToken;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The username of the user that authenticated.
|
||||||
|
*/
|
||||||
|
private final String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The unique identifier of the data source from which this user account
|
||||||
|
* came. Although this user account may exist across several data sources
|
||||||
|
* (AuthenticationProviders), this will be the unique identifier of the
|
||||||
|
* AuthenticationProvider that authenticated this user for the current
|
||||||
|
* session.
|
||||||
|
*/
|
||||||
|
private final String dataSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the unique authentication token which identifies the current
|
||||||
|
* session.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The user's authentication token.
|
||||||
|
*/
|
||||||
|
public String getAuthToken() {
|
||||||
|
return authToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the user identified by the authentication token associated with
|
||||||
|
* the current session.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The user identified by this authentication token.
|
||||||
|
*/
|
||||||
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the unique identifier of the data source associated with the user
|
||||||
|
* account associated with this auth token.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The unique identifier of the data source associated with the user
|
||||||
|
* account associated with this auth token.
|
||||||
|
*/
|
||||||
|
public String getDataSource() {
|
||||||
|
return dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new APIAuthToken Object with the given auth token.
|
||||||
|
*
|
||||||
|
* @param dataSource
|
||||||
|
* The unique identifier of the AuthenticationProvider which
|
||||||
|
* authenticated the user.
|
||||||
|
*
|
||||||
|
* @param authToken
|
||||||
|
* The auth token to create the new APIAuthToken with.
|
||||||
|
*
|
||||||
|
* @param username
|
||||||
|
* The username of the user owning the given token.
|
||||||
|
*/
|
||||||
|
public APIAuthenticationResponse(String dataSource, String authToken, String username) {
|
||||||
|
this.dataSource = dataSource;
|
||||||
|
this.authToken = authToken;
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user