scripts/core/auth/auth-service.ts
/**
* @ngdoc service
* @module superdesk.core.auth
* @name auth
* @description auth-service handles the authentication by sending crendentials
* to backend endpoints.
*/
angular.module('superdesk.core.auth.auth', []).service('auth', ['api', 'session', 'authAdapter',
function(api, session, authAdapter) {
/**
* @ngdoc method
* @name auth#login
* @param {string} username User's login
* @param {string} password Users's password
* @returns {Promise} If successful, session identity is returned
* @description authenticate user using database auth
*/
this.login = function(username, password) {
return authAdapter.authenticate(username, password)
.then((sessionData) => api.users.getById(sessionData.user)
.then((userData) => {
session.start(sessionData, userData);
return session.identity;
}),
);
};
this.loginOIDC = function(authorization_code) {
return authAdapter.authenticateOIDC(authorization_code)
.then((sessionData) => api.users.getById(sessionData.user)
.then((userData) => {
session.start(sessionData, userData);
return session.identity;
}),
)
.catch((err) => {
// eslint-disable-next-line no-console
console.log(err.data._message);
});
};
/**
* @ngdoc method
* @name auth#loginOAuth
* @param {Object} data
* @return {Promise}
*/
this.loginOAuth = function(response) {
authAdapter.setToken(response);
return api.users.getById(response.data.user)
.then((userData) => {
session.start(response.data, userData);
return session.identity;
});
};
/**
* @ngdoc method
* @name auth#loginXMPP
* @param {string} jid XMPP identified (Jabber ID)
* @param {string} transactionId ID which will be sent to the device, to check transaction
* @returns {Promise} If successful, session identity is returned
* @description authenticate user using XMPP auth (aka secure login)
*/
this.loginXMPP = function(jid, transactionId) {
return authAdapter.authenticateXMPP(jid, transactionId)
.then((sessionData) => api.users.getById(sessionData.user)
.then((userData) => {
session.start(sessionData, userData);
return session.identity;
}),
);
};
}]);