|
|
/**
|
|
|
* @class Identity идентификационная информация (удостоверение) пользователя.
|
|
|
* Описывает пользователя и способ его аутентификации в системе. Данный
|
|
|
* класс является заглушкой, описывающей интерфейс, а также может
|
|
|
* использоваться для создания идентификацинной информации вручную.
|
|
|
*/
|
|
|
define([
|
|
|
"dojo/_base/declare",
|
|
|
"implab/safe",
|
|
|
"./SecData"
|
|
|
], function (declare, safe, SecData) {
|
|
|
let identity = declare(null, {
|
|
|
_user : null,
|
|
|
|
|
|
_isAnonymous : null,
|
|
|
|
|
|
_secData : null,
|
|
|
|
|
|
constructor : function(user, opts) {
|
|
|
this._user = user;
|
|
|
safe.mixin(this, opts, {
|
|
|
isAnonymous : '_isAnonymous',
|
|
|
secData : '_secData'
|
|
|
});
|
|
|
},
|
|
|
|
|
|
getUser : function() {
|
|
|
return this._user;
|
|
|
},
|
|
|
|
|
|
getSecData : function() {
|
|
|
return this._secData;
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* Проводит раунд аутентификации, изменяет текущее состояние. Делегирует
|
|
|
* выполнение процедуры объекту SecData.
|
|
|
*
|
|
|
* @param challenge
|
|
|
* {*} - данные для аутентификации, зависит от реализации,
|
|
|
* например, пароль.
|
|
|
* @retuns authResult {Object} - результат аутентификации { challenge :
|
|
|
* 'response data', code : AUTH_* }.
|
|
|
* @throws {Error}
|
|
|
* в случае ошибки или если модуль аутентификации не задан.
|
|
|
*/
|
|
|
doAuth : function(challenge) {
|
|
|
if (this._secData)
|
|
|
return this._secData.doAuth(challenge);
|
|
|
|
|
|
throw new Error("Authentication is not available for this object");
|
|
|
},
|
|
|
|
|
|
getAuthType : function() {
|
|
|
if (this._secData)
|
|
|
return this._secData.getAuthType();
|
|
|
|
|
|
return null;
|
|
|
},
|
|
|
|
|
|
getIsAuthenticated : function() {
|
|
|
if (this._secData) {
|
|
|
return this._secData.getAuthSate() == SecData.AUTH_SUCCESS;
|
|
|
}
|
|
|
return false;
|
|
|
},
|
|
|
|
|
|
getIsAnonymous : function() {
|
|
|
return this._isAnonymous;
|
|
|
},
|
|
|
|
|
|
getAuthState : function() {
|
|
|
if (this._secData)
|
|
|
return this._secData.getAuthState();
|
|
|
|
|
|
throw new Error("Authentication is not available for this object");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return identity;
|
|
|
});
|