Class ProfileServiceRestClient
java.lang.Object
org.craftercms.commons.rest.AbstractRestClientBase
org.craftercms.profile.services.impl.AbstractProfileRestClientBase
org.craftercms.profile.services.impl.ProfileServiceRestClient
- All Implemented Interfaces:
ProfileService
public class ProfileServiceRestClient
extends AbstractProfileRestClientBase
implements ProfileService
REST client implementation of
ProfileService
.- Author:
- avasquez
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final org.springframework.core.ParameterizedTypeReference
<byte[]> static final String
static final String
static final String
static final org.springframework.core.ParameterizedTypeReference
<List<ProfileAttachment>> Fields inherited from class org.craftercms.profile.services.impl.AbstractProfileRestClientBase
accessTokenIdResolver
Fields inherited from class org.craftercms.commons.rest.AbstractRestClientBase
baseUrl, extension, restTemplate
-
Constructor Summary
ConstructorsConstructorDescriptionProfileServiceRestClient
(String baseUrl, org.springframework.web.client.RestTemplate restTemplate, AccessTokenIdResolver accessTokenIdResolver, com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
Method Summary
Modifier and TypeMethodDescriptionaddProfileAttachment
(String profileId, String attachmentName, InputStream file) Saves a Profile Attachmentprotected String
addQueryParams
(String url, org.springframework.util.MultiValueMap<String, String> params, boolean encodeValues) addRoles
(String profileId, Collection<String> roles, String... attributesToReturn) Assigns roles to the profile.changePassword
(String resetTokenId, String newPassword, String... attributesToReturn) Changes a profile's password, after a reset request has been sent.createProfile
(String tenantName, String username, String password, String email, boolean enabled, Set<String> roles, Map<String, Object> attributes, String verificationUrl) Creates a new profile for a specific tenant name.createVerificationToken
(String profileId) Creates a token that can be sent to the user in an email as a link.void
deleteProfile
(String profileId) Deletes a profile.void
deleteVerificationToken
(String tokenId) Deletes a verification token when it's not needed anymore (not necessary to call ifProfileService.verifyProfile(String, String...)
orProfileService.changePassword(String, String, String...)
, since they already delete the token.disableProfile
(String profileId, String... attributesToReturn) Disables a profile.enableProfile
(String profileId, String... attributesToReturn) Enables a profile.getAttributes
(String profileId, String... attributesToReturn) Returns the attributes of a profile.getProfile
(String profileId, String... attributesToReturn) Returns the profile for the specified ID.getProfileAttachment
(String attachmentId, String profileId) Given the Attachment Id and the Profile Id, gets the Actual Attachment.getProfileAttachmentInformation
(String profileId, String attachmentId) Gets Profile attachment Information.getProfileAttachments
(String profileId) List all Attachments for the given profile.getProfileByQuery
(String tenantName, String query, String... attributesToReturn) Returns the single profile that matches the specified querygetProfileByTicket
(String ticketId, String... attributesToReturn) Returns the profile for the specified ticket.getProfileByUsername
(String tenantName, String username, String... attributesToReturn) Returns the user for the specified tenant and usernamelong
getProfileCount
(String tenantName) Returns the number of profiles of the specified tenant.long
getProfileCountByQuery
(String tenantName, String query) Returns the number of profiles that match the query for the specified tenant.getProfileRange
(String tenantName, String sortBy, SortOrder sortOrder, Integer start, Integer count, String... attributesToReturn) Returns a range of profiles for the specified tenant.getProfilesByAttributeValue
(String tenantName, String attributeName, String attributeValue, String sortBy, SortOrder sortOrder, String... attributesToReturn) Returns the list of profiles that have the given attribute with the given value.getProfilesByExistingAttribute
(String tenantName, String attributeName, String sortBy, SortOrder sortOrder, String... attributesToReturn) Returns the list of profiles that have the given attribute, with any valuegetProfilesByIds
(List<String> profileIds, String sortBy, SortOrder sortOrder, String... attributesToReturn) Returns a list of profiles for the specified list of IDs.getProfilesByQuery
(String tenantName, String query, String sortBy, SortOrder sortOrder, Integer start, Integer count, String... attributesToReturn) Returns the profiles that match the specified query.getProfilesByRole
(String tenantName, String role, String sortBy, SortOrder sortOrder, String... attributesToReturn) Returns a list of profiles for a specific role and tenant.getVerificationToken
(String tokenId) Returns the verification token that corresponds to the given ID.removeAttributes
(String profileId, Collection<String> attributeNames, String... attributesToReturn) Removes a list of attributes of a profile.removeRoles
(String profileId, Collection<String> roles, String... attributesToReturn) Removes assigned roles from a profile.resetPassword
(String profileId, String resetPasswordUrl, String... attributesToReturn) Sends an email to the profile's user to indicate that the password needs to be reset.protected String
serializeAttributes
(Map<String, Object> attributes) setFailedLoginAttempts
(String profileId, int failedLoginAttempts, String... attributesToReturn) Sets the number of failed login attempts for the profile.setLastFailedLogin
(String profileId, Date lastFailedLogin, String... attributesToReturn) Sets the date of the last failed login for the profile.Updates the attributes of a profile, by merging the specified attributes with the existing attributes.updateProfile
(String profileId, String username, String password, String email, Boolean enabled, Set<String> roles, Map<String, Object> attributes, String... attributesToReturn) Updates the profile's info.verifyProfile
(String verificationTokenId, String... attributesToReturn) Sets the profile as verified if the verification token is valid.Methods inherited from class org.craftercms.profile.services.impl.AbstractProfileRestClientBase
createBaseParams, doGetForObject, doGetForObject, doGetForObject, doGetForObject, doPostForLocation, doPostForObject, doPostForUpload, getAbsoluteUrlWithAccessTokenIdParam, handleException, handleRestServiceException
Methods inherited from class org.craftercms.commons.rest.AbstractRestClientBase
getAbsoluteUrl, setExtension
-
Field Details
-
profileListTypeRef
-
byteArrayTypeRef
public static final org.springframework.core.ParameterizedTypeReference<byte[]> byteArrayTypeRef -
profileAttachmentListTypeRef
public static final org.springframework.core.ParameterizedTypeReference<List<ProfileAttachment>> profileAttachmentListTypeRef -
ERROR_KEY_ATTRIBUTES_SERIALIZATION_ERROR
- See Also:
-
ERROR_KEY_INVALID_URI_ERROR
- See Also:
-
ERROR_KEY_TMP_COPY_FAILED
- See Also:
-
-
Constructor Details
-
ProfileServiceRestClient
public ProfileServiceRestClient(String baseUrl, org.springframework.web.client.RestTemplate restTemplate, AccessTokenIdResolver accessTokenIdResolver, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
-
Method Details
-
createProfile
public Profile createProfile(String tenantName, String username, String password, String email, boolean enabled, Set<String> roles, Map<String, Object> attributes, String verificationUrl) throws ProfileExceptionDescription copied from interface:ProfileService
Creates a new profile for a specific tenant name.- Specified by:
createProfile
in interfaceProfileService
- Parameters:
tenantName
- the name of the tenant to add the profile tousername
- the profile's usernamepassword
- the profile's passwordemail
- the profile's emailenabled
- if the profile should be enabled or notroles
- the profile's roles (optional)attributes
- the additional attributes to add to the profile (optional)verificationUrl
- the URL (sans token) the user needs to go in case it needs to verify the created profile (verification depends on tenant) (optional).- Returns:
- the newly created profile
- Throws:
ProfileException
-
updateProfile
public Profile updateProfile(String profileId, String username, String password, String email, Boolean enabled, Set<String> roles, Map<String, Object> attributes, String... attributesToReturn) throws ProfileExceptionDescription copied from interface:ProfileService
Updates the profile's info.- Specified by:
updateProfile
in interfaceProfileService
- Parameters:
profileId
- the profile's IDusername
- the new username for the profile, or null if it shouldn't be updatedpassword
- the new password for the profile, or null if it shouldn't be updatedemail
- the new email for the profile, or null if it shouldn't be updatedenabled
- if the profile should be enabled or not, or null if it shouldn't be updatedroles
- the new roles for the profile, or null if the roles shouldn't be updatedattributes
- the attributes to update, or null if no attribute should be updatedattributesToReturn
- the names of the attributes to return (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
verifyProfile
public Profile verifyProfile(String verificationTokenId, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Sets the profile as verified if the verification token is valid.- Specified by:
verifyProfile
in interfaceProfileService
- Parameters:
verificationTokenId
- the verification token IDattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile associated to the token
- Throws:
ProfileException
-
enableProfile
public Profile enableProfile(String profileId, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Enables a profile.- Specified by:
enableProfile
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
disableProfile
public Profile disableProfile(String profileId, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Disables a profile.- Specified by:
disableProfile
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
addRoles
public Profile addRoles(String profileId, Collection<String> roles, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Assigns roles to the profile.- Specified by:
addRoles
in interfaceProfileService
- Parameters:
profileId
- the profile's IDroles
- the roles to assignattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
removeRoles
public Profile removeRoles(String profileId, Collection<String> roles, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Removes assigned roles from a profile.- Specified by:
removeRoles
in interfaceProfileService
- Parameters:
profileId
- the profile's IDroles
- the roles to removeattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
getAttributes
public Map<String,Object> getAttributes(String profileId, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the attributes of a profile.- Specified by:
getAttributes
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributesToReturn
- the names of the attributes to return (null to return all attributes)- Returns:
- the profile's attributes
- Throws:
ProfileException
-
updateAttributes
public Profile updateAttributes(String profileId, Map<String, Object> attributes, String... attributesToReturn) throws ProfileExceptionDescription copied from interface:ProfileService
Updates the attributes of a profile, by merging the specified attributes with the existing attributes.- Specified by:
updateAttributes
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributes
- the new attributesattributesToReturn
- the names of the attributes to return withe the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
removeAttributes
public Profile removeAttributes(String profileId, Collection<String> attributeNames, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Removes a list of attributes of a profile.- Specified by:
removeAttributes
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributeNames
- the names of the attributes to removeattributesToReturn
- the names of the attributes to return withe the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
deleteProfile
Description copied from interface:ProfileService
Deletes a profile.- Specified by:
deleteProfile
in interfaceProfileService
- Parameters:
profileId
- the profile's ID- Throws:
ProfileException
-
getProfileByQuery
public Profile getProfileByQuery(String tenantName, String query, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the single profile that matches the specified query- Specified by:
getProfileByQuery
in interfaceProfileService
- Parameters:
tenantName
- the tenant's namequery
- the Mongo query used to search for the profiles. Must not contain the $where operator, the tenant's name (already specified) or any non-readable attribute by the applicationattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the profile, or null if not found
- Throws:
ProfileException
-
getProfile
Description copied from interface:ProfileService
Returns the profile for the specified ID.- Specified by:
getProfile
in interfaceProfileService
- Parameters:
profileId
- the profile's IDattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the profile, or null if not found
- Throws:
ProfileException
-
getProfileByUsername
public Profile getProfileByUsername(String tenantName, String username, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the user for the specified tenant and username- Specified by:
getProfileByUsername
in interfaceProfileService
- Parameters:
tenantName
- the tenant's nameusername
- the profile's usernameattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the profile, or null if not found
- Throws:
ProfileException
-
getProfileByTicket
public Profile getProfileByTicket(String ticketId, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the profile for the specified ticket.- Specified by:
getProfileByTicket
in interfaceProfileService
- Parameters:
ticketId
- the ID ticket of the authenticated profileattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the profile, or null if not found
- Throws:
ProfileException
-
getProfileCount
Description copied from interface:ProfileService
Returns the number of profiles of the specified tenant.- Specified by:
getProfileCount
in interfaceProfileService
- Parameters:
tenantName
- the tenant's name- Returns:
- the number of profiles of the specified tenant
- Throws:
ProfileException
-
getProfileCountByQuery
Description copied from interface:ProfileService
Returns the number of profiles that match the query for the specified tenant.- Specified by:
getProfileCountByQuery
in interfaceProfileService
- Parameters:
tenantName
- the tenant's namequery
- the Mongo query used to search for the profiles. Must not contain the $where operator, the tenant's name (already specified) or any non-readable attribute by the application- Returns:
- the number of profiles of the specified tenant
- Throws:
ProfileException
-
getProfilesByQuery
public List<Profile> getProfilesByQuery(String tenantName, String query, String sortBy, SortOrder sortOrder, Integer start, Integer count, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the profiles that match the specified query.- Specified by:
getProfilesByQuery
in interfaceProfileService
- Parameters:
tenantName
- the tenant's namequery
- the Mongo query used to search for the profiles. Must not contain the $where operator, the tenant's name (already specified) or any non-readable attribute by the applicationsortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)start
- from the entire list of results, the position where the actual results should start (useful for pagination) (optional)count
- the number of profiles to return (optional)attributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the list of profiles found, or null if none match the query
- Throws:
ProfileException
-
getProfilesByIds
public List<Profile> getProfilesByIds(List<String> profileIds, String sortBy, SortOrder sortOrder, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns a list of profiles for the specified list of IDs.- Specified by:
getProfilesByIds
in interfaceProfileService
- Parameters:
profileIds
- the IDs of the profiles to look forsortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)attributesToReturn
- the names of the attributes to return for each profile (null to return all attributes)- Returns:
- the list of profiles (can be smaller than the list of ids if some where not found)
- Throws:
ProfileException
-
getProfileRange
public List<Profile> getProfileRange(String tenantName, String sortBy, SortOrder sortOrder, Integer start, Integer count, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns a range of profiles for the specified tenant.- Specified by:
getProfileRange
in interfaceProfileService
- Parameters:
tenantName
- the tenant's namesortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)start
- from the entire list of results, the position where the actual results should start (useful for pagination) (optional)count
- the number of profiles to return (optional)attributesToReturn
- the names of the attributes to return for each profile (null to return all attributes)- Returns:
- the list of profiles
- Throws:
ProfileException
-
getProfilesByRole
public List<Profile> getProfilesByRole(String tenantName, String role, String sortBy, SortOrder sortOrder, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns a list of profiles for a specific role and tenant.- Specified by:
getProfilesByRole
in interfaceProfileService
- Parameters:
tenantName
- the tenant's namerole
- the role's namesortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)attributesToReturn
- the names of the attributes to return for each profile (null to return all attributes)- Returns:
- the list of profiles
- Throws:
ProfileException
-
getProfilesByExistingAttribute
public List<Profile> getProfilesByExistingAttribute(String tenantName, String attributeName, String sortBy, SortOrder sortOrder, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the list of profiles that have the given attribute, with any value- Specified by:
getProfilesByExistingAttribute
in interfaceProfileService
- Parameters:
tenantName
- the tenant's nameattributeName
- the name of the attribute profiles must havesortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)attributesToReturn
- the names of the attributes to return for each profile (null to return all attributes)- Returns:
- the list of profiles
- Throws:
ProfileException
-
getProfilesByAttributeValue
public List<Profile> getProfilesByAttributeValue(String tenantName, String attributeName, String attributeValue, String sortBy, SortOrder sortOrder, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Returns the list of profiles that have the given attribute with the given value.- Specified by:
getProfilesByAttributeValue
in interfaceProfileService
- Parameters:
tenantName
- the tenant's nameattributeName
- the name of the attribute profiles must haveattributeValue
- the value of the attribute profiles must havesortBy
- profile attribute to sort the list by (optional)sortOrder
- the sort order (either ASC or DESC) (optional)attributesToReturn
- the names of the attributes to return for each profile (null to return all attributes)- Returns:
- the list of profiles
- Throws:
ProfileException
-
resetPassword
public Profile resetPassword(String profileId, String resetPasswordUrl, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Sends an email to the profile's user to indicate that the password needs to be reset.- Specified by:
resetPassword
in interfaceProfileService
- Parameters:
profileId
- the profile's IDresetPasswordUrl
- the base URL to use to build the final URL the profile will use to reset their password.attributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
changePassword
public Profile changePassword(String resetTokenId, String newPassword, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Changes a profile's password, after a reset request has been sent.- Specified by:
changePassword
in interfaceProfileService
- Parameters:
resetTokenId
- the reset token IDnewPassword
- the new passwordattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
createVerificationToken
Description copied from interface:ProfileService
Creates a token that can be sent to the user in an email as a link. After the user clicks the link, the token then can be passed toProfileService.verifyProfile(String, String...)
orProfileService.changePassword(String, String, String...)
to verify that the user agrees.- Specified by:
createVerificationToken
in interfaceProfileService
- Parameters:
profileId
- the profile ID of the user that needs to be contacted- Returns:
- the created token
- Throws:
ProfileException
-
getVerificationToken
Description copied from interface:ProfileService
Returns the verification token that corresponds to the given ID.- Specified by:
getVerificationToken
in interfaceProfileService
- Parameters:
tokenId
- the token ID- Returns:
- the verification token, or null if not found
- Throws:
ProfileException
-
deleteVerificationToken
Description copied from interface:ProfileService
Deletes a verification token when it's not needed anymore (not necessary to call ifProfileService.verifyProfile(String, String...)
orProfileService.changePassword(String, String, String...)
, since they already delete the token.- Specified by:
deleteVerificationToken
in interfaceProfileService
- Parameters:
tokenId
- the ID of the token to delete- Throws:
ProfileException
-
addProfileAttachment
public ProfileAttachment addProfileAttachment(String profileId, String attachmentName, InputStream file) throws ProfileException Description copied from interface:ProfileService
Saves a Profile Attachment- Specified by:
addProfileAttachment
in interfaceProfileService
- Parameters:
profileId
- Id of the profile owner of the attachment.attachmentName
- File name of the Attachment;file
- Actual File to be Attach.- Returns:
- A Profile Attachment Contains all the information of the Actual Attachment (including the id);
- Throws:
ProfileException
- If attachment can not be saved;
-
getProfileAttachmentInformation
public ProfileAttachment getProfileAttachmentInformation(String profileId, String attachmentId) throws ProfileException Description copied from interface:ProfileService
Gets Profile attachment Information.- Specified by:
getProfileAttachmentInformation
in interfaceProfileService
- Parameters:
profileId
- Profile owner of the Attachment.attachmentId
- Attachment Id.- Returns:
- Null if Attachment Id does not exist or does not belong to the user.
- Throws:
ProfileException
- If Attachment cannot be found.
-
getProfileAttachment
public InputStream getProfileAttachment(String attachmentId, String profileId) throws ProfileException Description copied from interface:ProfileService
Given the Attachment Id and the Profile Id, gets the Actual Attachment.- Specified by:
getProfileAttachment
in interfaceProfileService
- Parameters:
attachmentId
- Attachment Id to get.profileId
- Profile Owner of the Attachment.- Returns:
- Null If Attachment Id does no exist or does not belong to the given profile. InputStream of the actual File.
- Throws:
ProfileException
- If unable to get the Attachment.
-
getProfileAttachments
Description copied from interface:ProfileService
List all Attachments for the given profile.- Specified by:
getProfileAttachments
in interfaceProfileService
- Parameters:
profileId
- Profile to get all Attachments- Returns:
- The List of attachments that the profile has ,never null.
- Throws:
ProfileException
- If unable to get Profile attachments.
-
serializeAttributes
- Throws:
ProfileException
-
setLastFailedLogin
public Profile setLastFailedLogin(String profileId, Date lastFailedLogin, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Sets the date of the last failed login for the profile.- Specified by:
setLastFailedLogin
in interfaceProfileService
- Parameters:
profileId
- the profile's IDlastFailedLogin
- the date of the last failed loginattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
setFailedLoginAttempts
public Profile setFailedLoginAttempts(String profileId, int failedLoginAttempts, String... attributesToReturn) throws ProfileException Description copied from interface:ProfileService
Sets the number of failed login attempts for the profile.- Specified by:
setFailedLoginAttempts
in interfaceProfileService
- Parameters:
profileId
- the profile's IDfailedLoginAttempts
- the number of failed login attemptsattributesToReturn
- the names of the attributes to return with the profile (null to return all attributes)- Returns:
- the updated profile
- Throws:
ProfileException
-
addQueryParams
-