@Transactional public class EmailChangeManagerImpl extends Object implements EmailChangeManager
Constructor and Description |
---|
EmailChangeManagerImpl(ChangeEmailLinkMailer changeEmailLinkMailer,
com.atlassian.security.random.SecureTokenGenerator tokenGenerator,
ExpirableUserTokenDao expirableUserTokenDao,
ApplicationService applicationService,
com.atlassian.sal.api.ApplicationProperties applicationProperties,
Clock clock,
ApplicationManager applicationManager,
ClientProperties clientProperties,
com.atlassian.event.api.EventPublisher eventPublisher,
DirectoryManager directoryManager,
MailConfigurationService mailConfigurationService,
PermissionManager permissionManager,
EmailAddressValidator emailValidator) |
Modifier and Type | Method and Description |
---|---|
void |
abort(String username,
long directoryId)
Aborts a pending e-mail validation for a given user in crowd app.
|
void |
changeEmail(String token,
String username)
Changes e-mail for a user in crowd app.
|
String |
getPendingNewEmailByToken(String token)
Returns new e-mail address for a e-mail change token.
|
String |
getPendingNewEmailByUser(String username,
long directoryId)
Returns new e-mail address for a user in crowd app for whom there's a pending e-mail verification.
|
boolean |
hasUserEmailChangePending(String username,
long directoryId)
Returns true if there is a pending e-mail verification for a user in crowd app, false otherwise.
|
boolean |
isAvailableForDirectory(long dirId)
Returns true if e-mail change by end-user feature is available for a given directory.
|
boolean |
isTokenValid(String token)
Returns true if a given token is a valid e-mail change verification token.
|
void |
resendEmail(String username,
long directoryId)
Resends an e-mail with a new token for a user in crowd app that has a pending e-mail verification.
|
void |
sendEmailAuthorization(String username,
String password,
long directoryId,
String newEmail)
Starts e-mail change flow for a user in crowd app, by sending two e-mails.
|
public EmailChangeManagerImpl(ChangeEmailLinkMailer changeEmailLinkMailer, com.atlassian.security.random.SecureTokenGenerator tokenGenerator, ExpirableUserTokenDao expirableUserTokenDao, ApplicationService applicationService, com.atlassian.sal.api.ApplicationProperties applicationProperties, Clock clock, ApplicationManager applicationManager, ClientProperties clientProperties, com.atlassian.event.api.EventPublisher eventPublisher, DirectoryManager directoryManager, MailConfigurationService mailConfigurationService, PermissionManager permissionManager, EmailAddressValidator emailValidator)
public void sendEmailAuthorization(String username, String password, long directoryId, String newEmail) throws InvalidAuthenticationException, InvalidEmailAddressException, MailSendException, OperationNotPermittedException, ApplicationNotFoundException, SameEmailAddressException
EmailChangeManager
newEmail
. The first one contains info for an ongoing e-mail change.
The second one contains a link with a token which is required to change an e-mail. In order to do change an
e-mail, EmailChangeManager.changeEmail(java.lang.String, java.lang.String)
needs to be called with the aforementioned token passed as
an argument.sendEmailAuthorization
in interface EmailChangeManager
username
- username of the user for whom we're changing an e-mailpassword
- password of the user for whom we're changing an e-maildirectoryId
- directory ID of the user for whom we're changing an e-mailnewEmail
- e-mail to which we'll replace an old email of the userInvalidAuthenticationException
- if authentication fails for given username
and password
InvalidEmailAddressException
- if passed newEmail
is not a valid e-mail addressMailSendException
- if Crowd failed to send e-mail with a tokenOperationNotPermittedException
- if feature is not availableApplicationNotFoundException
- if 'crowd' app has not been foundSameEmailAddressException
- if passed newEmail
is the same as the one currently used by a userpublic void changeEmail(String token, String username) throws UserNotFoundException, InvalidChangeEmailTokenException, InvalidAuthenticationException, OperationFailedException, ApplicationNotFoundException, OperationNotPermittedException
EmailChangeManager
This method SHALL only be called after calling EmailChangeManager.sendEmailAuthorization(java.lang.String, java.lang.String, long, java.lang.String)
.
changeEmail
in interface EmailChangeManager
token
- token sent in email by EmailChangeManager.sendEmailAuthorization(java.lang.String, java.lang.String, long, java.lang.String)
username
- username of the user for whom we're changing an e-mailUserNotFoundException
- if user does not existInvalidChangeEmailTokenException
- if provide token
is not validInvalidAuthenticationException
- if user identified by username
is not the one who generated a tokenOperationFailedException
- if Crowd failed to update e-mailApplicationNotFoundException
- if 'crowd' app has not been foundOperationNotPermittedException
- if feature is not availablepublic boolean hasUserEmailChangePending(String username, long directoryId)
EmailChangeManager
hasUserEmailChangePending
in interface EmailChangeManager
username
- username of the userdirectoryId
- directory ID of the userpublic String getPendingNewEmailByUser(String username, long directoryId)
EmailChangeManager
getPendingNewEmailByUser
in interface EmailChangeManager
username
- username of the userdirectoryId
- directory ID of the userpublic String getPendingNewEmailByToken(String token)
EmailChangeManager
getPendingNewEmailByToken
in interface EmailChangeManager
token
- e-mail change tokenpublic void resendEmail(String username, long directoryId) throws InvalidEmailAddressException, MailSendException, UserNotFoundException, ApplicationNotFoundException
EmailChangeManager
resendEmail
in interface EmailChangeManager
username
- of the userdirectoryId
- directory ID of the userInvalidEmailAddressException
- if pending e-mail address is not a valid e-mail addressMailSendException
- if Crowd failed to re-send e-mail with a tokenUserNotFoundException
- if user does not existApplicationNotFoundException
- if 'crowd' app has not been foundpublic void abort(String username, long directoryId)
EmailChangeManager
abort
in interface EmailChangeManager
username
- username of the userdirectoryId
- directory ID of the userpublic boolean isTokenValid(String token)
EmailChangeManager
isTokenValid
in interface EmailChangeManager
token
- e-mail change tokenpublic boolean isAvailableForDirectory(long dirId)
EmailChangeManager
Feature might be disabled for a given directory because: - Crowd's e-mail server is NOT configured - Directory does not have permissions to change user e-mail
isAvailableForDirectory
in interface EmailChangeManager
dirId
- ID of the directoryCopyright © 2024 Atlassian. All rights reserved.