blob: 1792920198de6b3f78d0508e751466fb94ae6662 [file] [log] [blame]
Matteo Scandolo035c5932016-12-14 09:55:15 -08001import {AppConfig} from '../../config/app.config';
Matteo Scandolof6acdbe2016-12-13 10:29:37 -08002import IHttpPromiseCallbackArg = angular.IHttpPromiseCallbackArg;
3export interface IAuthRequestData {
4 username: string;
5 password: string;
6}
7
8export interface IAuthResponseData extends IHttpPromiseCallbackArg<any> {
9 data: {
10 user: string;
11 xoscsrftoken: string;
12 xossessionid: string;
13 };
14}
Matteo Scandoloa4a47112016-12-16 10:06:13 -080015
16export interface IXosAuthService {
17 login(data: IAuthRequestData): Promise<any>;
18 logout(): Promise<any>;
19}
Matteo Scandolof6acdbe2016-12-13 10:29:37 -080020export class AuthService {
21
Matteo Scandolof6acdbe2016-12-13 10:29:37 -080022 constructor(
23 private $http: angular.IHttpService,
24 private $q: angular.IQService,
25 private $cookies: angular.cookies.ICookiesService
26 ) {
27 }
28
29 public login(data: IAuthRequestData): Promise<any> {
30 const d = this.$q.defer();
31 this.$http.post(`${AppConfig.apiEndpoint}/utility/login/`, data)
32 .then((res: IAuthResponseData) => {
33 this.$cookies.put('xoscsrftoken', res.data.xoscsrftoken);
34 this.$cookies.put('xossessionid', res.data.xossessionid);
35 this.$cookies.put('xosuser', res.data.user);
36 res.data.user = JSON.parse(res.data.user);
37 d.resolve(res.data);
38 })
39 .catch(e => {
40 d.reject(e);
41 });
42 return d.promise;
43 }
Matteo Scandoloa4a47112016-12-16 10:06:13 -080044
45 public logout(): Promise<any> {
46 const d = this.$q.defer();
47 this.$http.post(`${AppConfig.apiEndpoint}/utility/login/`, {
48 xoscsrftoken: this.$cookies.get('xoscsrftoken'),
49 xossessionid: this.$cookies.get('xossessionid')
50 })
51 .then(() => {
52 this.$cookies.remove('xoscsrftoken');
53 this.$cookies.remove('xossessionid');
54 this.$cookies.remove('xosuser');
55 d.resolve();
56 })
57 .catch(e => {
58 d.reject(e);
59 });
60 return d.promise;
61 }
Matteo Scandolof6acdbe2016-12-13 10:29:37 -080062}