diff --git a/Front/skydivelogs-app/src/app/app.component.ts b/Front/skydivelogs-app/src/app/app.component.ts
index 2faf334..57d3f34 100644
--- a/Front/skydivelogs-app/src/app/app.component.ts
+++ b/Front/skydivelogs-app/src/app/app.component.ts
@@ -18,14 +18,10 @@ export class AppComponent implements OnInit {
public currentUser: User;
public version: string;
- constructor(
- private router: Router,
- private authenticationService: AuthenticationService,
- private serviceComm: ServiceComm
- ) {
- this.authenticationService.currentUser.subscribe(
- x => (this.currentUser = x)
- );
+ constructor(private router: Router,
+ private authenticationService: AuthenticationService,
+ private serviceComm: ServiceComm) {
+ this.authenticationService.currentUser.subscribe(user => { this.currentUser = user; });
ConfigurationHelper.settings.subscribe(settings =>
{
diff --git a/Front/skydivelogs-app/src/app/app.module.ts b/Front/skydivelogs-app/src/app/app.module.ts
index 6578800..7bc2429 100644
--- a/Front/skydivelogs-app/src/app/app.module.ts
+++ b/Front/skydivelogs-app/src/app/app.module.ts
@@ -68,42 +68,42 @@ const appRoutes: Routes = [
{
path: "summary",
component: SummaryComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "jumps",
component: ListOfJumpsComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "dzs",
component: ListOfDzsComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "newjump",
component: NewJumpComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "aircrafts",
component: ListOfAircraftsComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "jumpTypes",
component: ListOfJumpTypesComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "gears",
component: ListOfGearsComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{
path: "user",
component: UserProfileComponent,
- canActivate: [AuthGuardService],
+ canActivate: [AuthGuardService]
},
{ path: "login", component: LoginComponent },
diff --git a/Front/skydivelogs-app/src/app/create-user/create-user.component.ts b/Front/skydivelogs-app/src/app/create-user/create-user.component.ts
index 48832c5..0b4a43d 100644
--- a/Front/skydivelogs-app/src/app/create-user/create-user.component.ts
+++ b/Front/skydivelogs-app/src/app/create-user/create-user.component.ts
@@ -58,7 +58,6 @@ export class CreateUserComponent implements OnInit {
this.invalidForm = false;
this.submitted = true;
- // stop here if form is invalid
if (this.createForm.invalid) {
this.invalidForm = true;
return;
diff --git a/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.html b/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.html
index 32993be..ce66488 100644
--- a/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.html
+++ b/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.html
@@ -1,6 +1,6 @@
-
+
diff --git a/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.ts b/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.ts
index 63b0dea..1b9041a 100644
--- a/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.ts
+++ b/Front/skydivelogs-app/src/app/list-of-aircrafts/list-of-aircrafts.component.ts
@@ -3,11 +3,12 @@ import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from '@angular/material/dialog';
-import { AircraftResp } from '../../models/aircraft';
import { AircraftService } from '../../services/aircraft.service';
import { ServiceComm } from '../../services/service-comm.service';
+import { AuthenticationService } from '../../services/authentication.service';
import { NewAircraftComponent } from '../new-aircraft/new-aircraft.component';
import { AddAction } from '../../models/add-action.enum';
+import { AircraftResp } from '../../models/aircraft';
@Component({
selector: 'app-list-of-aircrafts',
@@ -18,13 +19,15 @@ export class ListOfAircraftsComponent implements OnInit {
public displayedColumns: Array = ['id', 'name', 'imageData'];
public dataSourceTable: MatTableDataSource;
public resultsLength = 0;
+ public isUserAdmin: boolean;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
- constructor(
- private serviceApi: AircraftService,
- private serviceComm: ServiceComm,
- public dialog: MatDialog
- ) { }
+ constructor(private serviceApi: AircraftService,
+ private serviceComm: ServiceComm,
+ private authenticationService: AuthenticationService,
+ public dialog: MatDialog) {
+ this.isUserAdmin = this.authenticationService.currentUserValue.IsAdmin;
+ }
ngOnInit() {
this.serviceComm.refreshRequest.subscribe(action => {
diff --git a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html
index 3ea27e3..b6747d6 100644
--- a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html
+++ b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html
@@ -1,6 +1,6 @@
-
+
diff --git a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts
index 82b2b9f..21c70e6 100644
--- a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts
+++ b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts
@@ -7,6 +7,7 @@ import { AddAction } from '../../models/add-action.enum';
import { DropZoneResp } from '../../models/dropzone';
import { DropzoneService } from '../../services/dropzone.service';
import { ServiceComm } from '../../services/service-comm.service';
+import { AuthenticationService } from '../../services/authentication.service';
import { NewDropZoneComponent } from '../new-drop-zone/new-drop-zone.component';
@Component({
@@ -23,14 +24,16 @@ export class ListOfDzsComponent implements OnInit {
'type',
];
public dataSourceTable: MatTableDataSource;
+ public isUserAdmin: boolean;
public resultsLength = 0;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
- constructor(
- private serviceApi: DropzoneService,
- private serviceComm: ServiceComm,
- public dialog: MatDialog
- ) { }
+ constructor(private serviceApi: DropzoneService,
+ private serviceComm: ServiceComm,
+ private authenticationService: AuthenticationService,
+ public dialog: MatDialog) {
+ this.isUserAdmin = this.authenticationService.currentUserValue.IsAdmin;
+ }
ngOnInit() {
this.serviceComm.refreshRequest.subscribe((action) => {
diff --git a/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.html b/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.html
index 8941959..532a90d 100644
--- a/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.html
+++ b/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.html
@@ -1,6 +1,6 @@
-
+
diff --git a/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.ts b/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.ts
index 06fb945..e0e13ab 100644
--- a/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.ts
+++ b/Front/skydivelogs-app/src/app/list-of-jump-types/list-of-jump-types.component.ts
@@ -7,6 +7,7 @@ import { AddAction } from "../../models/add-action.enum";
import { JumpTypeResp } from "../../models/jumpType";
import { JumpTypeService } from "../../services/jump-type.service";
import { ServiceComm } from "../../services/service-comm.service";
+import { AuthenticationService } from '../../services/authentication.service';
import { NewJumpTypeComponent } from "../new-jump-type/new-jump-type.component";
@Component({
@@ -17,14 +18,16 @@ import { NewJumpTypeComponent } from "../new-jump-type/new-jump-type.component";
export class ListOfJumpTypesComponent implements OnInit {
public displayedColumns: Array = ["id", "name"];
public dataSourceTable: MatTableDataSource;
+ public isUserAdmin: boolean;
public resultsLength = 0;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
- constructor(
- private serviceApi: JumpTypeService,
- private serviceComm: ServiceComm,
- public dialog: MatDialog
- ) {}
+ constructor(private serviceApi: JumpTypeService,
+ private serviceComm: ServiceComm,
+ private authenticationService: AuthenticationService,
+ public dialog: MatDialog) {
+ this.isUserAdmin = this.authenticationService.currentUserValue.IsAdmin;
+ }
ngOnInit() {
this.serviceComm.refreshRequest.subscribe(action => {
diff --git a/Front/skydivelogs-app/src/app/login-user/login-user.component.ts b/Front/skydivelogs-app/src/app/login-user/login-user.component.ts
index 6bbe913..dd815bd 100644
--- a/Front/skydivelogs-app/src/app/login-user/login-user.component.ts
+++ b/Front/skydivelogs-app/src/app/login-user/login-user.component.ts
@@ -43,7 +43,7 @@ export class LoginUserComponent implements OnInit, AfterViewInit {
password: [
'',
[
- Validators.required /*, Validators.pattern("^[A-Za-z0-9_-]{8,15}$")*/
+ Validators.required
]
]
},
diff --git a/Front/skydivelogs-app/src/models/stats.ts b/Front/skydivelogs-app/src/models/stats.ts
index bf8349c..6879c8e 100644
--- a/Front/skydivelogs-app/src/models/stats.ts
+++ b/Front/skydivelogs-app/src/models/stats.ts
@@ -85,10 +85,8 @@ export class StatsByYearResp {
}
export class StatsForLastYearResp {
- constructor(
- dataByDz: Array,
- dataByJumpType: Array
- ) {
+ constructor(dataByDz: Array,
+ dataByJumpType: Array) {
this.byDz = new Array();
this.byJumpType = new Array();
@@ -101,10 +99,8 @@ export class StatsForLastYearResp {
}
export class StatsForLastMonthResp {
- constructor(
- dataByDz: Array,
- dataByJumpType: Array
- ) {
+ constructor(dataByDz: Array,
+ dataByJumpType: Array) {
this.byDz = new Array();
this.byJumpType = new Array();
diff --git a/Front/skydivelogs-app/src/models/user.ts b/Front/skydivelogs-app/src/models/user.ts
index 4034f76..df89a32 100644
--- a/Front/skydivelogs-app/src/models/user.ts
+++ b/Front/skydivelogs-app/src/models/user.ts
@@ -5,6 +5,9 @@ export class User {
firstName: string;
lastName: string;
email: string;
+ roles: string;
authdata?: string;
token?: string;
+
+ get IsAdmin() { return this.roles === "admin"; }
}
diff --git a/Front/skydivelogs-app/src/services/auth-guard.service.ts b/Front/skydivelogs-app/src/services/auth-guard.service.ts
index e2aa522..e715b2b 100644
--- a/Front/skydivelogs-app/src/services/auth-guard.service.ts
+++ b/Front/skydivelogs-app/src/services/auth-guard.service.ts
@@ -1,23 +1,14 @@
import { Injectable } from "@angular/core";
-import {
- CanActivate,
- Router,
- ActivatedRouteSnapshot,
- RouterStateSnapshot
-} from "@angular/router";
+import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router";
import { AuthenticationService } from "./authentication.service";
@Injectable({ providedIn: "root" })
export class AuthGuardService implements CanActivate {
- constructor(
- private router: Router,
- private authenticationService: AuthenticationService
- ) {}
+ constructor(private router: Router,
+ private authenticationService: AuthenticationService) {}
- public canActivate(
- route: ActivatedRouteSnapshot,
- state: RouterStateSnapshot
- ) {
+ public canActivate(route: ActivatedRouteSnapshot,
+ state: RouterStateSnapshot) {
const currentUser = this.authenticationService.currentUserValue;
if (currentUser) {
// logged in so return true
@@ -25,10 +16,9 @@ export class AuthGuardService implements CanActivate {
}
// not logged in so redirect to login page with the return url
- this.router.navigate(["/login"], {
- skipLocationChange: true,
- queryParams: { returnUrl: state.url }
- });
+ this.router.navigate(["/login"],
+ {skipLocationChange: true, queryParams: { returnUrl: state.url }});
+
return false;
}
}
diff --git a/Front/skydivelogs-app/src/services/authentication.service.ts b/Front/skydivelogs-app/src/services/authentication.service.ts
index 4b6de4e..54bc853 100644
--- a/Front/skydivelogs-app/src/services/authentication.service.ts
+++ b/Front/skydivelogs-app/src/services/authentication.service.ts
@@ -34,36 +34,31 @@ export class AuthenticationService extends BaseService {
password: password
};
- return this.http
- .post(`${this.apiUrl}/User/Authenticate`, bodyLogin, {
- headers: this.headers
- })
- .pipe(
- map(user => {
- this.pushUserToken(username, password, user);
- return user;
- })
- );
+ return this.http.post(`${this.apiUrl}/User/Authenticate`,
+ bodyLogin,
+ { headers: this.headers })
+ .pipe(map(user => {
+ this.pushUserToken(username, password, user);
+ return user;
+ }));
}
public create(newUser: User) {
- return this.http
- .post(`${this.apiUrl}/User`, newUser, {
- headers: this.headers
- })
- .pipe(
- map(user => {
- this.pushUserToken(newUser.login, newUser.password, user);
- return user;
- })
- );
+ return this.http.post(`${this.apiUrl}/User`,
+ newUser,
+ { headers: this.headers })
+ .pipe(map(user => {
+ this.pushUserToken(newUser.login, newUser.password, user);
+ return user;
+ }));
}
- private pushUserToken(login: string, password: string, user: any){
- // store user details and basic auth credentials in local storage to keep user logged in between page refreshes
- user.authdata = window.btoa(login + ":" + password);
- localStorage.setItem("currentUser", JSON.stringify(user));
- this.currentUserSubject.next(user);
+ private pushUserToken(login: string, password: string, user: User){
+ if (user && user.token) {
+ user.authdata = window.btoa(login + ":" + password);
+ localStorage.setItem("currentUser", JSON.stringify(user));
+ this.currentUserSubject.next(user);
+ }
}
private alwaysLogin() {
@@ -73,7 +68,6 @@ export class AuthenticationService extends BaseService {
}
logout() {
- // remove user from local storage to log user out
localStorage.removeItem("currentUser");
this.currentUserSubject.next(null);
}
diff --git a/Front/skydivelogs-app/src/services/base.service.ts b/Front/skydivelogs-app/src/services/base.service.ts
index dd374c0..42bd921 100644
--- a/Front/skydivelogs-app/src/services/base.service.ts
+++ b/Front/skydivelogs-app/src/services/base.service.ts
@@ -18,16 +18,5 @@ export class BaseService {
this.apiUrl = tmpApiUrl + '/api';
}
});
-
- // const config: ConfigurationHelper = injector.get(ConfigurationHelper);
- // config.load(environment.env)
- // .then(() => {
- // let tmpApiUrl : string = ConfigurationHelper.settings.apiUrl;
-
- // this.headers = new HttpHeaders({
- // 'Access-Control-Allow-Origin': tmpApiUrl
- // });
- // this.apiUrl = tmpApiUrl + '/api';
- // });
}
}