##// END OF EJS Templates
Added tag v1.0.0 for changeset 7110eac54b19
Added tag v1.0.0 for changeset 7110eac54b19

File last commit:

r0:7110eac54b19 v1.0.0 default
r1:8b476fada8c1 default
Show More
Identity.js
80 lines | 2.9 KiB | application/javascript | JavascriptLexer
cin
initial port of implab/web
r0 /**
* @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;
});