isa-auth-core
Version:
71 lines (70 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _service = require("./service");
const _providers = require("./providers");
const _components = require("./components");
const _customAuth = require("./event/customAuth");
const _mappings = require("./mappings");
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
// provider와 service를 결합한 로직을 만들고 싶은데 어떻게 하는게 좋을까 고민중.
// 그냥 core에서 이 정도만 관리하고 외부 pkg에서 결합해도 되긴함.
class AuthCore {
// 서비스 인스턴스(state관리)
getService() {
return this.serviceInstance;
}
// 외부 OAuth 서비스 사용을 안할시 null을 리턴함.
getProvider() {
return this.provider;
}
// 버튼 컴포넌트 데이터를 담은 객체를 리턴함.
getButton() {
return this.button;
}
// 웹컴포넌트용 API들
getWebComponentAPI() {
return {
addAuthEventListener: _customAuth.addAuthEventListener,
removeAuthEventListener: _customAuth.removeAuthEventListener,
dispatchAuthEvent: _customAuth.dispatchAuthEvent,
watchAuthState: this.serviceInstance.watchAuthState.bind(this.serviceInstance)
};
}
constructor({ providerType = 'base', secret = 'isa-auth-secret' }){
_define_property(this, "provider", void 0);
_define_property(this, "button", void 0);
_define_property(this, "serviceInstance", void 0);
var _providerToServiceMap_providerType;
const serviceType = (_providerToServiceMap_providerType = _mappings.providerToServiceMap[providerType]) !== null && _providerToServiceMap_providerType !== void 0 ? _providerToServiceMap_providerType : 'base';
var _providerToButtonMap_providerType;
const buttonType = (_providerToButtonMap_providerType = _mappings.providerToButtonMap[providerType]) !== null && _providerToButtonMap_providerType !== void 0 ? _providerToButtonMap_providerType : 'none';
const isProviderRequired = providerType !== 'base' && providerType !== 'jwt';
const ServiceClass = (0, _service.getAuthService)(serviceType);
this.serviceInstance = new ServiceClass(secret);
this.serviceInstance.initStore(false);
this.provider = (0, _providers.getProvider)(isProviderRequired ? providerType : 'none');
this.button = (0, _components.getButton)(buttonType);
}
}
const _default = AuthCore;
//# sourceMappingURL=authCore.js.map