///
import {Injectable} from "@angular/core";
import {User} from "../../../../common/entities/User";
import {Event} from "../../../../common/event/Event";
import {UserService} from "./user.service.ts";
import {LoginCredential} from "../../../../common/entities/LoginCredential";
import {Message} from "../../../../common/entities/Message";
import {Cookie} from "ng2-cookies/ng2-cookies";
import {ErrorCodes} from "../../../../common/entities/Error";
declare module ServerInject {
export var user;
}
@Injectable()
export class AuthenticationService {
private _user:User = null;
public OnUserChanged:Event;
constructor(private _userService:UserService) {
this.OnUserChanged = new Event();
//picking up session..
if (this.isAuthenticated() == false && Cookie.get('pigallery2-session') != null) {
if (typeof ServerInject !== "undefined" && typeof ServerInject.user !== "undefined") {
console.log("user found");
this.setUser(ServerInject.user);
}
this.getSessionUser();
}
}
private getSessionUser() {
this._userService.getSessionUser().then((message:Message) => {
if (message.error) {
console.log(message.error);
} else {
this._user = message.result;
this.OnUserChanged.trigger(this._user);
}
});
}
private setUser(user:User) {
this._user = user;
this.OnUserChanged.trigger(this._user);
}
public login(credential:LoginCredential) {
this._userService.login(credential).then((message:Message) => {
if (message.error) {
console.log(ErrorCodes[message.error.code] + "message: " + message.error.message);
} else {
this.setUser(message.result);
}
});
}
public isAuthenticated():boolean {
return (this._user && this._user != null) ? true : false;
}
public getUser() {
return this._user;
}
public logout() {
this._userService.logout();
this.setUser(null);
}
}