@ -1,56 +1,51 @@
/ *
* Copyright ( c ) 201 6 , WSO2 Inc . ( http : //www.wso2.org) All Rights Reserved.
* Copyright ( c ) 201 5 , WSO2 Inc . ( http : //www.wso2.org) All Rights Reserved.
*
* WSO2 Inc . licenses this file to you under the Apache License ,
* Version 2.0 ( the "License" ) ; you may not use this file except
* in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing ,
* software distributed under the License is distributed on an
* "AS IS" BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied . See the License for the
* "AS IS" BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND ,
* either express or implied . See the License for the
* specific language governing permissions and limitations
* under the License .
* /
/ *
* This module contains user and roles related functionality
* This module contains user and roles related functionality .
* /
var userModule = function ( ) {
var log = new Log ( "/app/modules/user.js" ) ;
var constants = require ( "/app/modules/constants.js" ) ;
var utility = require ( "/app/modules/utility.js" ) [ "utility" ] ;
var devicemgtProps = require ( '/app/conf/devicemgt-props.js' ) . config ( ) ;
var serviceInvokers = require ( "/app/modules/backend-service-invoker.js" ) .backendServiceInvoker ;
var devicemgtProps = require ( "/app/conf/devicemgt-props.js" ) . config ( ) ;
var serviceInvokers = require ( "/app/modules/backend-service-invoker.js" ) ["backendServiceInvoker" ] ;
/* Initializing user manager */
var carbon = require ( 'carbon' ) ;
var tenantId = carbon . server . tenantId ( ) ;
var url = carbon . server . address ( 'https' ) + "/admin/services" ;
var carbon = require ( "carbon" ) ;
var url = carbon . server . address ( "https" ) + "/admin/services" ;
var server = new carbon . server . Server ( url ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
var deviceManagementService = utility . getDeviceManagementService ( ) ;
var EmailMessageProperties = Packages . org . wso2 . carbon . device . mgt . common . EmailMessageProperties ;
var publicMethods = { } ;
var privateMethods = { } ;
/ * *
* Get the carbon user object from the session . If not found - it will throw a user not found error .
* @ returns { carbon user object }
* Get the carbon user object from the session . If not found - it will throw a user not found error .
* @ returns { object} carbon user object
* /
privateMethods . getCarbonUser = function ( ) {
var carbon = require ( 'carbon' ) ;
var carbonUser = session . get ( constants .USER _SESSION _KEY ) ;
var utility = require ( '/app/modules/utility.js' ) . utility ;
var carbon = require ( "carbon" ) ;
var carbonUser = session . get ( constants ["USER_SESSION_KEY" ] ) ;
var utility = require ( "/modules/utility.js" ) [ "utility" ] ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants .ERRORS . USER _NOT _FOUND ;
throw constants ["ERRORS" ] [ "USER_NOT_FOUND" ] ;
}
return carbonUser ;
} ;
@ -59,83 +54,25 @@ var userModule = function () {
* Only GET method is implemented for now since there are no other type of methods used this method .
* @ param url - URL to call the backend without the host
* @ param method - HTTP Method ( GET , POST )
* @ returns {
* 'status' : 'success' | 'error' ,
* 'content' : { }
* }
* @ returns An object with 'status' : 'success' | 'error' , 'content' : { }
* /
privateMethods . callBackend = function ( url , method ) {
if ( constants . HTTP _GET == method ) {
var response = serviceInvokers . XMLHttp . get ( url , function ( responsePayload ) {
var response = { } ;
response . content = responsePayload [ "responseContent" ] ;
if ( responsePayload [ "responseContent" ] == null && responsePayload != null ) {
response . content = responsePayload ;
if ( constants [ "HTTP_GET" ] == method ) {
return serviceInvokers . XMLHttp . get ( url ,
function ( backendResponse ) {
var response = { } ;
response . content = backendResponse . responseText ;
if ( backendResponse . status == 200 ) {
response . status = "success" ;
} else if ( backendResponse . status == 400 || backendResponse . status == 401 ||
backendResponse . status == 404 || backendResponse . status == 500 ) {
response . status = "error" ;
}
return response ;
}
response . status = "success" ;
return response ;
} ,
function ( responsePayload ) {
var response = { } ;
response . content = responsePayload ;
response . status = "error" ;
return response ;
} ) ;
return response ;
) ;
} else {
log . error ( "Programming error : This method only support HTTP GET requests." ) ;
}
} ;
/ *
@ Deprecated
* /
/ * *
* Add user to mdm - user - store .
*
* @ param username Username of the user
* @ param firstname First name of the user
* @ param lastname Last name of the user
* @ param emailAddress Email address of the user
* @ param userRoles Roles assigned to the user
*
* @ returns { number } HTTP Status code 201 if succeeded , 409 if user already exists
* /
publicMethods . addUser = function ( username , firstname , lastname , emailAddress , userRoles ) {
var statusCode , carbon = require ( 'carbon' ) ;
var carbonUser = session . get ( constants . USER _SESSION _KEY ) ;
var utility = require ( '/app/modules/utility.js' ) . utility ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants . ERRORS . USER _NOT _FOUND ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var tenantId = carbon . server . tenantId ( ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
if ( userManager . userExists ( username ) ) {
if ( log . isDebugEnabled ( ) ) {
log . debug ( "A user with name '" + username + "' already exists." ) ;
}
// http status code 409 refers to - conflict.
statusCode = 409 ;
} else {
var initialUserPassword = privateMethods . generateInitialUserPassword ( ) ;
var defaultUserClaims = privateMethods . buildDefaultUserClaims ( firstname , lastname , emailAddress ) ;
userManager . addUser ( username , initialUserPassword , userRoles , defaultUserClaims , "default" ) ;
privateMethods . inviteUserToEnroll ( username , initialUserPassword ) ;
if ( log . isDebugEnabled ( ) ) {
log . debug ( "A new user with name '" + username + "' was created." ) ;
}
// http status code 201 refers to - created.
statusCode = 201 ;
}
return statusCode ;
} catch ( e ) {
throw e ;
} finally {
utility . endTenantFlow ( ) ;
log . error ( "Runtime error : This method only support HTTP GET requests." ) ;
}
} ;
@ -179,197 +116,6 @@ var userModule = function () {
}
} ;
/ *
@ Deprecated
* /
/ * *
* Remove an existing user from mdm - user - store .
*
* @ param username Username of the user
* @ returns { number } HTTP Status code 200 if succeeded , 409 if the user does not exist
* /
publicMethods . removeUser = function ( username ) {
var statusCode , carbon = require ( 'carbon' ) ;
var carbonUser = session . get ( constants . USER _SESSION _KEY ) ;
var utility = require ( '/app/modules/utility.js' ) . utility ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants . ERRORS . USER _NOT _FOUND ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var tenantId = carbon . server . tenantId ( ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
if ( userManager . userExists ( username ) ) {
userManager . removeUser ( username ) ;
if ( log . isDebugEnabled ( ) ) {
log . debug ( "An existing user with name '" + username + "' was removed." ) ;
}
// http status code 200 refers to - success.
statusCode = 200 ;
} else {
if ( log . isDebugEnabled ( ) ) {
log . debug ( "A user with name '" + username + "' does not exist to remove." ) ;
}
// http status code 409 refers to - conflict.
statusCode = 409 ;
}
return statusCode ;
} catch ( e ) {
throw e ;
} finally {
utility . endTenantFlow ( ) ;
}
} ;
/ *
@ Deprecated
* /
/ * *
* Private method to be used by addUser ( ) to
* generate an initial user password for a user .
* This will be the password used by a user for his initial login to the system .
*
* @ returns { string } Initial User Password
* /
privateMethods . generateInitialUserPassword = function ( ) {
var passwordLength = 6 ;
//defining the pool of characters to be used for initial password generation
var lowerCaseCharset = "abcdefghijklmnopqrstuvwxyz" ;
var upperCaseCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
var numericCharset = "0123456789" ;
var totalCharset = lowerCaseCharset + upperCaseCharset + numericCharset ;
var totalCharsetLength = totalCharset . length ;
var initialUserPassword = "" ;
for ( var i = 0 ; i < passwordLength ; ++ i ) {
initialUserPassword += totalCharset . charAt ( Math . floor ( Math . random ( ) * totalCharsetLength ) ) ;
}
if ( log . isDebugEnabled ( ) ) {
log . debug ( "Initial password created for new user : " + initialUserPassword ) ;
}
return String ( initialUserPassword ) ;
} ;
/ *
@ Deprecated
* /
/ * *
* Build default user claims .
*
* @ param firstname First name of the user
* @ param lastname Last name of the user
* @ param emailAddress Email address of the user
*
* @ returns { Object } Default user claims to be provided
* /
privateMethods . buildDefaultUserClaims = function ( firstname , lastname , emailAddress ) {
var defaultUserClaims = {
"http://wso2.org/claims/givenname" : firstname ,
"http://wso2.org/claims/lastname" : lastname ,
"http://wso2.org/claims/emailaddress" : emailAddress
} ;
if ( log . isDebugEnabled ( ) ) {
log . debug ( "ClaimMap created for new user : " + stringify ( defaultUserClaims ) ) ;
}
return defaultUserClaims ;
} ;
/ *
@ Deprecated
* /
/ * *
* Send an initial invitation email to a user with username / password attached
* for the very - first enrollment with WSO2 MDM .
*
* @ param username Username of the user
* @ param password Password of the user
* /
privateMethods . inviteUserToEnroll = function ( username , password ) {
var carbon = require ( 'carbon' ) ;
var enrollmentURL = devicemgtProps . generalConfig . host + devicemgtProps . webAgentContext + "download-agent" ;
var carbonUser = session . get ( constants . USER _SESSION _KEY ) ;
var utility = require ( '/app/modules/utility.js' ) . utility ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants . ERRORS . USER _NOT _FOUND ;
}
//var user = userManagementService.getUser(username, carbonUser.tenantId);
try {
utility . startTenantFlow ( carbonUser ) ;
var tenantId = carbon . server . tenantId ( ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
var emailTo = [ ] ;
var user = userManager . getUser ( username ) ;
emailTo [ 0 ] = privateMethods . getEmail ( username , userManager ) ;
var emailMessageProperties = new EmailMessageProperties ( ) ;
emailMessageProperties . setMailTo ( emailTo ) ;
emailMessageProperties . setFirstName ( privateMethods . getFirstName ( username , userManager ) ) ;
emailMessageProperties . setUserName ( username ) ;
emailMessageProperties . setPassword ( password ) ;
emailMessageProperties . setEnrolmentUrl ( enrollmentURL ) ;
deviceManagementService . sendRegistrationEmail ( emailMessageProperties ) ;
} catch ( e ) {
throw e ;
} finally {
utility . endTenantFlow ( ) ;
}
} ;
/ *
@ Deprecated
* /
privateMethods . getEmail = function ( username , userManager ) {
return userManager . getClaim ( username , "http://wso2.org/claims/emailaddress" , null )
} ;
/ *
@ Deprecated
* /
privateMethods . getFirstName = function ( username , userManager ) {
return userManager . getClaim ( username , "http://wso2.org/claims/givenname" , null )
} ;
/ *
@ Deprecated
* /
privateMethods . getLastName = function ( username , userManager ) {
return userManager . getClaim ( username , "http://wso2.org/claims/lastname" , null )
} ;
/ *
@ Deprecated
* /
publicMethods . inviteUser = function ( username ) {
var carbonUser = session . get ( constants . USER _SESSION _KEY ) ;
var utility = require ( '/app/modules/utility.js' ) . utility ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants . ERRORS . USER _NOT _FOUND ;
}
var enrollmentURL = devicemgtProps . generalConfig . host + devicemgtProps . webAgentContext + "download-agent" ;
try {
utility . startTenantFlow ( carbonUser ) ;
var tenantId = carbon . server . tenantId ( ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
var user = userManager . getUser ( username ) ;
var emailProperties = new EmailMessageProperties ( ) ;
var emailTo = [ ] ;
emailTo [ 0 ] = privateMethods . getEmail ( username , userManager ) ;
emailProperties . setMailTo ( emailTo ) ;
//emailProperties.setFirstName(user.getFirstName());
emailProperties . setFirstName ( privateMethods . getFirstName ( username , userManager ) ) ;
emailProperties . setEnrolmentUrl ( enrollmentURL ) ;
deviceManagementService . sendEnrolmentInvitation ( emailProperties ) ;
} catch ( e ) {
throw e ;
} finally {
utility . endTenantFlow ( ) ;
}
} ;
/ *
@ Updated
* /
@ -382,9 +128,12 @@ var userModule = function () {
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/users" ;
return privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] + "/users?offset=0&limit=100" ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
if ( response . status == "success" ) {
response . content = parse ( response . content ) . users ;
}
return response ;
} catch ( e ) {
throw e ;
} finally {
@ -395,22 +144,16 @@ var userModule = function () {
/ * *
* Return a User object from the backend by calling the JAX - RS
* @ param username
* @ returns {
* 'status' : 'success' | 'error' ,
* 'content' : {
"username" : "abc" ,
"firstname" : "abc" ,
"lastname" : "efj" ,
"emailAddress" : "abc@abc.com"
}
* }
* @ returns { object } a response object with status and content on success .
* /
publicMethods . getUser = function ( username ) {
var carbonUser = privateMethods . getCarbonUser ( ) ;
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/users/view?username=" + username ;
var response = privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] + "/users/" +
encodeURIComponent ( username ) ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
response [ "content" ] = parse ( response . content ) ;
response [ "userDomain" ] = carbonUser . domain ;
return response ;
} catch ( e ) {
@ -419,18 +162,19 @@ var userModule = function () {
utility . endTenantFlow ( ) ;
}
} ;
/ * *
* TODO: comment
* Returns a set of roles assigned to a particular user
* @ param username
* @ returns { * }
* @ returns { object } a response object with status and content on success .
* /
publicMethods . getRolesByUsername = function ( username ) {
var carbonUser = privateMethods . getCarbonUser ( ) ;
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants. ADMIN _SERVICE _CONTEXT + "/users/roles?username=" + username ;
var response = privateMethods . callBackend ( url , constants . HTTP _GET ) ;
return response ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps[ "backendRestEndpoints" ] [ "deviceMgt" ] + "/users/" +
encodeURIComponent ( username ) + "/roles" ;
return privateMethods. callBackend ( url , constants [ "HTTP_GET" ] ) ;
} catch ( e ) {
throw e ;
} finally {
@ -450,8 +194,8 @@ var userModule = function () {
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + " /users/users-by-username";
return privateMethods . callBackend ( url , constants .HTTP _GET )
var url = devicemgtProps [ "httpsURL" ] + " /mdm-admin /users/users-by-username";
return privateMethods . callBackend ( url , constants ["HTTP_GET" ] ) ;
} catch ( e ) {
throw e ;
} finally {
@ -467,15 +211,19 @@ var userModule = function () {
* /
publicMethods . getRoles = function ( ) {
var carbonUser = session . get ( constants [ "USER_SESSION_KEY" ] ) ;
var utility = require ( '/app/modules/utility.js' ) [ "utility" ] ;
var utility = require ( "/app/modules/utility.js" ) [ "utility" ] ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants [ "ERRORS" ] [ "USER_NOT_FOUND" ] ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/roles" ;
return privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] + "/roles" ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
if ( response . status == "success" ) {
response . content = parse ( response . content ) . roles ;
}
return response ;
} catch ( e ) {
throw e ;
} finally {
@ -488,18 +236,24 @@ var userModule = function () {
* /
/ * *
* Get User Roles from user store ( Internal roles not included ) .
* @ returns { object } a response object with status and content on success .
* /
publicMethods . getRolesByUserStore = function ( userStore ) {
publicMethods . getRolesByUserStore = function ( ) {
var ROLE _LIMIT = devicemgtProps [ "pageSize" ] ;
var carbonUser = session . get ( constants [ "USER_SESSION_KEY" ] ) ;
var utility = require ( '/app/modules/utility.js' ) [ "utility" ] ;
var utility = require ( "/app/modules/utility.js" ) [ "utility" ] ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants [ "ERRORS" ] [ "USER_NOT_FOUND" ] ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/roles/" + encodeURIComponent ( userStore ) ;
return privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] + "/roles?limit=" + ROLE _LIMIT ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
if ( response . status == "success" ) {
response . content = parse ( response . content ) . roles ;
}
return response ;
} catch ( e ) {
throw e ;
} finally {
@ -510,40 +264,45 @@ var userModule = function () {
/ * *
* Get Platforms .
* /
//TODO Move this piece of logic out of user.js to somewhere else appropriate.
publicMethods . getPlatforms = function ( ) {
var carbonUser = session . get ( constants [ "USER_SESSION_KEY" ] ) ;
var utility = require ( '/app/modules/utility.js' ) [ "utility" ] ;
var utility = require ( "/app/modules/utility.js" ) [ "utility" ] ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants [ "ERRORS" ] [ "USER_NOT_FOUND" ] ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/devices/types" ;
return privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] + "/admin/device-types" ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
if ( response . status == "success" ) {
response . content = parse ( response . content ) ;
}
return response ;
} catch ( e ) {
throw e ;
} finally {
utility . endTenantFlow ( ) ;
}
} ;
/ *
@ Updated
* /
/ * *
* Get role
* /
publicMethods . getRole = function ( roleName ) {
var carbonUser = session . get ( constants [ "USER_SESSION_KEY" ] ) ;
var utility = require ( '/app/modules/utility.js' ) [ "utility" ] ;
var utility = require ( "/app/modules/utility.js" ) [ "utility" ] ;
if ( ! carbonUser ) {
log . error ( "User object was not found in the session" ) ;
throw constants [ "ERRORS" ] [ "USER_NOT_FOUND" ] ;
}
try {
utility . startTenantFlow ( carbonUser ) ;
var url = devicemgtProps [ "httpsURL" ] + constants . ADMIN _SERVICE _CONTEXT + "/roles/role?rolename=" + encodeURIComponent ( roleName ) ;
var response = privateMethods . callBackend ( url , constants . HTTP _GET ) ;
var url = devicemgtProps [ "httpsURL" ] + devicemgtProps [ "backendRestEndpoints" ] [ "deviceMgt" ] +
"/roles/" + encodeURIComponent ( roleName ) ;
var response = privateMethods . callBackend ( url , constants [ "HTTP_GET" ] ) ;
response . content = parse ( response . content ) ;
return response ;
} catch ( e ) {
throw e ;
@ -687,30 +446,6 @@ var userModule = function () {
return permissions ;
} ;
/ * *
* Add new role with permissions .
*
* @ param roleName Name of the role
* @ param users List of users to assign the role
* @ param permissions List of permissions
* /
publicMethods . addRole = function ( roleName , users , permissions ) {
var carbon = require ( 'carbon' ) ;
var tenantId = carbon . server . tenantId ( ) ;
var url = carbon . server . address ( 'https' ) + "/admin/services" ;
var server = new carbon . server . Server ( url ) ;
var userManager = new carbon . user . UserManager ( server , tenantId ) ;
try {
if ( ! userManager . roleExists ( roleName ) ) {
userManager . addRole ( roleName , users , permissions ) ;
} else {
log . info ( "Role exist with name: " + roleName ) ;
}
} catch ( e ) {
throw e ;
}
} ;
publicMethods . addPermissions = function ( permissionList , path , init ) {
var registry , carbon = require ( "carbon" ) ;
var carbonServer = application . get ( "carbonServer" ) ;
@ -776,24 +511,29 @@ var userModule = function () {
* retrieve secondary user stores .
* This needs Authentication since the method access admin services .
*
* @ returns { string array } Array of secondary user stores .
* @ returns Array of secondary user stores .
* /
publicMethods . getSecondaryUserStores = function ( ) {
var returnVal = [ ] ;
var endpoint = devicemgtProps .adminService + constants . USER _STORE _CONFIG _ADMIN _SERVICE _END _POINT ;
var endpoint = devicemgtProps ["adminService" ] + constants [ "USER_STORE_CONFIG_ADMIN_SERVICE_END_POINT" ] ;
var wsPayload = "<xsd:getSecondaryRealmConfigurations xmlns:xsd='http://org.apache.axis2/xsd'/>" ;
serviceInvokers . WS . soapRequest (
"urn:getSecondaryRealmConfigurations" , endpoint , wsPayload , function ( wsResponse ) {
"urn:getSecondaryRealmConfigurations" ,
wsPayload ,
endpoint ,
function ( wsResponse ) {
var domainIDs = stringify ( wsResponse . * : : [ 'return' ] . * : : domainId . text ( ) ) ;
if ( domainIDs != "\"\"" ) {
var regExpForSearch = new RegExp ( constants . USER _STORES _NOISY _CHAR , "g" ) ;
var regExpForSearch = new RegExp ( constants ["USER_STORES_NOISY_CHAR" ] , "g" ) ;
domainIDs = domainIDs . replace ( regExpForSearch , "" ) ;
returnVal = domainIDs . split ( constants .USER _STORES _SPLITTING _CHAR ) ;
returnVal = domainIDs . split ( constants ["USER_STORES_SPLITTING_CHAR" ] ) ;
}
} , function ( e ) {
log . error ( "Error retrieving secondary user stores" , e ) ;
} , constants . SOAP _VERSION ) ;
} ,
constants [ "SOAP_VERSION" ] ) ;
return returnVal ;
} ;
return publicMethods ;
} ( ) ;