(function(window)
{
var Gitana = window.Gitana;
Gitana.Identity = Gitana.AbstractDirectoryObject.extend(
/** @lends Gitana.Identity.prototype */
{
/**
* @constructs
* @augments Gitana.AbstractDirectoryObject
*
* @class Identity
*
* @param {Gitana.Directory} directory
* @param [Object] object json object (if no callback required for populating)
*/
constructor: function(directory, object)
{
this.base(directory, object);
this.objectType = function() { return "Gitana.Identity"; };
},
/**
* @OVERRIDE
*/
getType: function()
{
return Gitana.TypedIDConstants.TYPE_IDENTITY;
},
/**
* @OVERRIDE
*/
getUri: function()
{
return "/directories/" + this.getDirectoryId() + "/identities/" + this.getId();
},
/**
* @override
*/
clone: function()
{
return this.getFactory().identity(this.getDirectory(), this);
},
/**
* Changes the password for this identity.
*
* @param password
* @param verifyPassword
*
* @chained this
* @public
*/
changePassword: function(password, verifyPassword)
{
var object = {
"password": password,
"verifyPassword": verifyPassword
};
return this.chainPostEmpty(null, this.getUri() + "/changepassword", {}, object);
},
/**
* Retrieves a list of all of the users on any domain that have this identity applied to them.
*
* @param tenantId
*/
findPolicyUsers: function(tenantId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/policy/users";
};
var domain = new Gitana.Domain(this.getPlatform());
var chainable = this.getFactory().domainPrincipalMap(domain);
// prepare params
var params = {};
if (tenantId)
{
params.tenantId = tenantId;
}
return this.chainGet(chainable, uriFunction, params);
},
/**
* Finds the user on a tenant platform that has this identity.
* If multiple users have this identity, the first one is chosen.
*
* @param pagination
*/
findPolicyUserForTenant: function(tenantId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/policy/user";
};
var chainable = this.getFactory().domainPrincipal(this);
// prepare params (with pagination)
var params = {};
params["tenantId"] = tenantId;
return this.chainGet(chainable, uriFunction, params);
},
/**
* Finds the user on a tenant platform that has this identity.
* If multiple users have this identity, the first one is chosen.
*
* @param pagination
*/
findPolicyUsersForTenant: function(tenantId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/policy/users";
};
var chainable = this.getFactory().domainPrincipalMap(this);
// prepare params (with pagination)
var params = {};
params["tenantId"] = tenantId;
return this.chainGet(chainable, uriFunction, params);
},
/**
* Retrieves the tenants that this identity participates in.
* Optionally allows you to filter down to a particular registrar.
*
* @chained principal map
*
* @param [String] registrarId
*/
findPolicyTenants: function(registrarId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/policy/tenants";
};
var chainable = this.getFactory().tenantMap(this);
// prepare params
var params = {};
if (registrarId)
{
params["registrarId"] = registrarId;
}
return this.chainGet(chainable, uriFunction, params);
}
});
})(window);