architect-sdk
Version:
Essentialz Architect SDK
56 lines (55 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthService = void 0;
var errors_1 = require("../errors");
var providers_1 = require("./providers");
var types_1 = require("./types");
var AuthService = /** @class */ (function () {
function AuthService(httpClient, tokenManager) {
this.httpClient = httpClient;
this.tokenManager = tokenManager;
}
AuthService.prototype.login = function (credentials, provider) {
var _this = this;
var providerService = this.getProvider(provider);
return providerService.handleLogin(credentials)
.then(function (response) { return _this.handleLoginResponse(response); });
};
AuthService.prototype.logout = function () {
this.tokenManager.setToken(null);
this.tokenManager.setUserId(null);
// TODO: Invalidate token on server-side
return Promise.resolve({});
};
AuthService.prototype.isAuthenticated = function () {
return !!this.tokenManager.getToken();
};
AuthService.prototype.getUserId = function () {
if (this.isAuthenticated()) {
return this.tokenManager.getUserId();
}
return null;
};
AuthService.prototype.handleLoginResponse = function (response) {
var id = response.id, token = response.authorization.token;
this.tokenManager.setToken(token);
this.tokenManager.setUserId(id);
return response;
};
AuthService.prototype.getProvider = function (provider) {
switch (provider) {
case types_1.ArchitectAuthProvider.Apple:
return new providers_1.AppleProvider(this.httpClient);
case types_1.ArchitectAuthProvider.Email:
return new providers_1.EmailProvider(this.httpClient);
case types_1.ArchitectAuthProvider.Facebook:
return new providers_1.FacebookProvider(this.httpClient);
case types_1.ArchitectAuthProvider.Google:
return new providers_1.GoogleProvider(this.httpClient);
default:
throw new errors_1.ArchitectError("Unknown auth provider: " + provider);
}
};
return AuthService;
}());
exports.AuthService = AuthService;