* @param tenantInfoBean tenant details
* @return true if the reset request is processed successfully.
* @throws Exception if reset password failed.
*/
public static boolean resetPassword(TenantInfoBean tenantInfoBean) throws Exception {
AdminManagementSubscriber adminMgtSubscriber = new AdminManagementSubscriber();
String adminName = tenantInfoBean.getAdmin();
String domainName = tenantInfoBean.getTenantDomain();
TenantManager tenantManager = TenantMgtServiceComponent.getTenantManager();
int tenantId = tenantManager.getTenantId(domainName);
if (tenantId < 1) {
String msg = "Tenant with the domain " + domainName + " doesn't exist.";
log.error(msg);
return false; // tenant doesn't exist
}
Tenant tenant = (Tenant) tenantManager.getTenant(tenantId);
String email = tenant.getEmail();
String adminNameFromUserStore = ClaimsMgtUtil.getAdminUserNameFromTenantId(
TenantMgtServiceComponent.getRealmService(), tenantId);
// Admin Name is included in the email, in case if the user has
// forgotten that.
if (adminName.equals("")) {
log.debug("User provided only the domain name");
adminName = adminNameFromUserStore;
} else if (!(adminNameFromUserStore.equalsIgnoreCase(adminName))) {
log.warn("User provided incorrect admin name. Admin Name is: " +
adminNameFromUserStore);
adminName = adminNameFromUserStore;
}
// generating the confirmation key
String confirmationKey = UUIDGenerator.generateUUID();
UserRegistry superTenantGovernanceSystemRegistry =
TenantMgtServiceComponent.getGovernanceSystemRegistry(
MultitenantConstants.SUPER_TENANT_ID);
Resource resource;
String adminManagementPath = StratosConstants.ADMIN_MANAGEMENT_FLAG_PATH +
RegistryConstants.PATH_SEPARATOR + tenantId;
if (superTenantGovernanceSystemRegistry.resourceExists(adminManagementPath)) {
resource = superTenantGovernanceSystemRegistry.get(adminManagementPath);
} else {
resource = superTenantGovernanceSystemRegistry.newResource();
}
resource.setContent(confirmationKey);
superTenantGovernanceSystemRegistry.put(adminManagementPath, resource);
// data map
Map<String, String> dataToStore = new HashMap<String, String>();
dataToStore.put("email", email);
dataToStore.put("first-name", ClaimsMgtUtil.getFirstName(
TenantMgtServiceComponent.getRealmService(), tenant, tenantId));
dataToStore.put("admin", adminName);
dataToStore.put("tenantDomain", tenantInfoBean.getTenantDomain());
dataToStore.put("confirmationKey", confirmationKey);
try {
// Uses admin-mgt component to handle the admin credentials
// management.
adminMgtSubscriber.requestUserVerification(dataToStore);
log.info("Credentials Configurations mail has been sent for: " + domainName);
return true;
} catch (Exception e) {
String msg = "Error in verifying the user for the configuration of the admin " +
"management for " + domainName + ".";