You've already forked pigallery2
							
							
				mirror of
				https://github.com/bpatrik/pigallery2.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {Injectable} from "@angular/core";
 | |
| import {UserDTO, UserRoles} from "../../../../common/entities/UserDTO";
 | |
| import {BehaviorSubject} from "rxjs/BehaviorSubject";
 | |
| import {UserService} from "./user.service";
 | |
| import {LoginCredential} from "../../../../common/entities/LoginCredential";
 | |
| import {Cookie} from "ng2-cookies";
 | |
| import {Config} from "../../../../common/config/public/Config";
 | |
| 
 | |
| declare module ServerInject {
 | |
|   export let user: UserDTO;
 | |
| }
 | |
| 
 | |
| @Injectable()
 | |
| export class AuthenticationService {
 | |
| 
 | |
|   public user: BehaviorSubject<UserDTO>;
 | |
| 
 | |
|   constructor(private _userService: UserService) {
 | |
|     this.user = new BehaviorSubject(null);
 | |
| 
 | |
|     console.log(ServerInject.user);
 | |
|     //picking up session..
 | |
|     if (this.isAuthenticated() == false && Cookie.get('pigallery2-session') != null) {
 | |
|       if (typeof ServerInject !== "undefined" && typeof ServerInject.user !== "undefined") {
 | |
|         console.log(ServerInject.user);
 | |
|         this.user.next(ServerInject.user);
 | |
|       }
 | |
|       this.getSessionUser();
 | |
|     } else {
 | |
|       if (Config.Client.authenticationRequired === false) {
 | |
|         this.user.next(<UserDTO>{name: "", password: "", role: UserRoles.Admin});
 | |
|       }
 | |
|     }
 | |
| 
 | |
|   }
 | |
| 
 | |
|   private async getSessionUser(): Promise<void> {
 | |
|     try {
 | |
|       this.user.next(await this._userService.getSessionUser());
 | |
|     } catch (error) {
 | |
|       console.log(error);
 | |
|     }
 | |
| 
 | |
|   }
 | |
| 
 | |
| 
 | |
|   public async login(credential: LoginCredential): Promise<UserDTO> {
 | |
|     const user = await this._userService.login(credential);
 | |
|     this.user.next(user);
 | |
|     return user;
 | |
|   }
 | |
| 
 | |
| 
 | |
|   public async shareLogin(password: string): Promise<UserDTO> {
 | |
|     const user = await this._userService.shareLogin(password);
 | |
|     this.user.next(user);
 | |
|     return user;
 | |
|   }
 | |
| 
 | |
| 
 | |
|   public isAuthenticated(): boolean {
 | |
|     if (Config.Client.authenticationRequired === false) {
 | |
|       return true;
 | |
|     }
 | |
|     return !!(this.user.value && this.user.value != null);
 | |
|   }
 | |
| 
 | |
|   public isAuthorized(role: UserRoles) {
 | |
|     return this.user.value && this.user.value.role >= role;
 | |
|   }
 | |
| 
 | |
|   public logout() {
 | |
|     this._userService.logout();
 | |
|     this.user.next(null);
 | |
|   }
 | |
| 
 | |
| 
 | |
| }
 |