aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/app/_services
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/app/_services')
-rw-r--r--frontend/src/app/_services/auth-guard.service.spec.ts (renamed from frontend/src/app/_services/register.service.spec.ts)8
-rw-r--r--frontend/src/app/_services/auth-guard.service.ts21
-rw-r--r--frontend/src/app/_services/auth.service.ts24
-rw-r--r--frontend/src/app/_services/register.service.ts9
4 files changed, 48 insertions, 14 deletions
diff --git a/frontend/src/app/_services/register.service.spec.ts b/frontend/src/app/_services/auth-guard.service.spec.ts
index 2ba39608..35afd377 100644
--- a/frontend/src/app/_services/register.service.spec.ts
+++ b/frontend/src/app/_services/auth-guard.service.spec.ts
@@ -1,13 +1,13 @@
import { TestBed } from '@angular/core/testing';
-import { RegisterService } from './register.service';
+import { AuthGuardService } from './auth-guard.service';
-describe('RegisterService', () => {
- let service: RegisterService;
+describe('AuthGuardService', () => {
+ let service: AuthGuardService;
beforeEach(() => {
TestBed.configureTestingModule({});
- service = TestBed.inject(RegisterService);
+ service = TestBed.inject(AuthGuardService);
});
it('should be created', () => {
diff --git a/frontend/src/app/_services/auth-guard.service.ts b/frontend/src/app/_services/auth-guard.service.ts
new file mode 100644
index 00000000..b6d3678d
--- /dev/null
+++ b/frontend/src/app/_services/auth-guard.service.ts
@@ -0,0 +1,21 @@
+import { Injectable } from '@angular/core';
+import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
+import { Observable } from 'rxjs';
+import { AuthService } from './auth.service';
+
+
+@Injectable({
+ providedIn: 'root'
+})
+export class AuthGuardService implements CanActivate {
+
+ constructor(private auth: AuthService, private router: Router) { }
+
+ canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {
+ if (this.auth.isAuthenticated()) {
+ return true;
+ }
+ this.router.navigate(['login']);
+ return false;
+ }
+}
diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts
index af27fdec..d1012d37 100644
--- a/frontend/src/app/_services/auth.service.ts
+++ b/frontend/src/app/_services/auth.service.ts
@@ -1,9 +1,31 @@
import { Injectable } from '@angular/core';
+import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { JwtHelperService } from '@auth0/angular-jwt';
+import { CookieService } from 'ngx-cookie-service';
+import { API_SETTINGS } from 'src/config';
+
+const jwtHelper = new JwtHelperService();
@Injectable({
providedIn: 'root'
})
export class AuthService {
- constructor() { }
+ constructor(private http: HttpClient, private cookie: CookieService) { }
+
+ login(username: string, password: string) {
+ return this.http.post(`${API_SETTINGS.apiURL}/login`, { username, password });
+ }
+
+ register(user: any) {
+ return this.http.post(`${API_SETTINGS.apiURL}/register`, user);
+ }
+
+ isAuthenticated(): boolean {
+ if (this.cookie.check('token')) {
+ var token = this.cookie.get('token');
+ return !jwtHelper.isTokenExpired(token);
+ }
+ return false;
+ }
}
diff --git a/frontend/src/app/_services/register.service.ts b/frontend/src/app/_services/register.service.ts
deleted file mode 100644
index 93074c06..00000000
--- a/frontend/src/app/_services/register.service.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable({
- providedIn: 'root'
-})
-export class RegisterService {
-
- constructor() { }
-}