Identity.js
80 lines
| 2.9 KiB
| application/javascript
|
JavascriptLexer
|
|
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; | |||
| }); |
