blob: ca90165ee60e6633749029d2e2aab32337929fdd [file] [log] [blame]
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001/**
2 * userModel
3 *
4 * @module app/common/services/userModel
5 * @exports userModel
6 * @name userModel
7
Iftekharul Islam99d199f2017-03-24 15:28:25 -05008 */
9
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070010window.angular && (function(angular) {
11 'use strict';
Iftekharul Islam99d199f2017-03-24 15:28:25 -050012
Andrew Geisslerd27bb132018-05-24 11:07:27 -070013 angular.module('app.common.services').service('userModel', [
Wiktor Gołgowskif2127ef2019-12-10 12:46:45 +010014 '$cookies', 'APIUtils',
15 function($cookies, APIUtils) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070016 return {
17 login: function(username, password, callback) {
18 APIUtils.login(username, password, function(response, error) {
19 if (response &&
Andrew Geisslerd27bb132018-05-24 11:07:27 -070020 (response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS ||
21 response.status === undefined)) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070022 sessionStorage.setItem('LOGIN_ID', username);
23 callback(true);
Andrew Geisslerd27bb132018-05-24 11:07:27 -070024 } else if (
25 response && response.data && response.data.data &&
26 response.data.data.description) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070027 callback(false, response.data.data.description);
beccabroekb5c5dc52019-03-21 16:54:19 -050028 } else if (response && response.statusText) {
29 callback(false, response.statusText);
Andrew Geisslerd27bb132018-05-24 11:07:27 -070030 } else if (error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070031 callback(false, 'Server unreachable');
Andrew Geisslerd27bb132018-05-24 11:07:27 -070032 } else {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070033 callback(false, 'Internal error');
34 }
35 });
36 },
37 isLoggedIn: function() {
Wiktor Gołgowskif2127ef2019-12-10 12:46:45 +010038 if ((sessionStorage.getItem('LOGIN_ID') === null) &&
39 (($cookies.get('IsAuthenticated') === undefined) ||
40 ($cookies.get('IsAuthenticated') == 'false'))) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070041 return false;
42 }
43 return true;
44 },
45 logout: function(callback) {
46 APIUtils.logout(function(response, error) {
47 if (response &&
Andrew Geisslerd27bb132018-05-24 11:07:27 -070048 response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070049 sessionStorage.removeItem('LOGIN_ID');
50 sessionStorage.removeItem(APIUtils.HOST_SESSION_STORAGE_KEY);
Wiktor Gołgowskif2127ef2019-12-10 12:46:45 +010051 $cookies.remove('IsAuthenticated');
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070052 callback(true);
Andrew Geisslerd27bb132018-05-24 11:07:27 -070053 } else if (response.status == APIUtils.API_RESPONSE.ERROR_STATUS) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070054 callback(false);
Andrew Geisslerd27bb132018-05-24 11:07:27 -070055 } else {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070056 callback(false, error);
57 }
58 });
59 }
60 };
Andrew Geisslerd27bb132018-05-24 11:07:27 -070061 }
62 ]);
Ed Tanousbbcf6702017-10-06 13:53:06 -070063})(window.angular);