Skip to content

Commit

Permalink
Almost Final edit (#82)
Browse files Browse the repository at this point in the history
* Almost Final edit

* Final
  • Loading branch information
Vojtech-Sassmann authored Dec 18, 2017
1 parent 4484db7 commit d3e0e64
Show file tree
Hide file tree
Showing 17 changed files with 1,014 additions and 181 deletions.
31 changes: 27 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,29 @@ Wiki: https://github.com/VECTOUN/pa165project/wiki
`cd creatures-hunting-rest-with-gui`
`mvn tomcat7:run`

Then the app is located at localhost:8080/pa165
# Testing GUI

The app is located at localhost:8080/pa165.
First, you need to login.

Admin account:
* Email: [email protected]
* Password: admin

Regular user account:
* Email: [email protected]
* Password: regular



# Testing REST

The secured REST is located at localhost:8080/pa165/rest/auth/*
The unsecured REST is located at localhost:8080/pa165/rest/unsecured/*

To test the unsecured rest u can use Curl.
The unsecured REST is created so you can test it with curl. It is not possible to use curl on secured rest (it will always
return error 403).


Curl examples:

Expand All @@ -46,7 +63,13 @@ Delete monster:
`curl -i -X DELETE http://localhost:8080/pa165/rest/notsecured/monsters/1`

Update monster:
`curl -i -X PUT -H "Content-Type: application/json" - 40.2}' http://localhost:8080/pa165/rest/notsecured/monsters/2`
`curl -i -X PUT -H "Content-Type: application/json" --data '{"agility": "FAST","name": "Zidan", "height": 160.2, "weight": 40.2}' http://localhost:8080/pa165/rest/notsecured/monsters/2`

Get the most widespread monsters:
`curl -i -X DELETE http://localhost:8080/pa165/rest/notsecured/monsters/filter/mostWidespread`
`curl -i -X GET http://localhost:8080/pa165/rest/notsecured/monsters/filter/mostWidespread`

Add monster to area:
`curl -i -X POST -H "Content-Type: application/json" http://localhost:8080/pa165/rest/notsecured/areas/13/addMonsterToArea?id=2`

Remove monster from area:
`curl -i -X POST -H "Content-Type: application/json" http://localhost:8080/pa165/rest/notsecured/areas/13/removeMonsterFromArea?id=2`
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import {Component, Inject, OnInit} from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {AreasComponent} from "../areas/areas.component";
import {Router} from "@angular/router";
import {Area} from "../../entity.module";
import {CookieService} from "ngx-cookie-service";
import {ApplicationConfig, CONFIG_TOKEN} from "../../app-config";

import {FormControl, Validators} from "@angular/forms";

import {ErrorDialogComponent} from "../../error-dialog/error-dialog.component";
import {MatDialog} from "@angular/material";


@Component({
selector: 'app-area-create',
templateUrl: './area-create.component.html',
Expand All @@ -22,11 +26,20 @@ export class AreaCreateComponent implements OnInit {
constructor(private http: HttpClient,
private cookieService: CookieService,
private router: Router,
private dialog: MatDialog,
@Inject(CONFIG_TOKEN) private config: ApplicationConfig) {
}

ngOnInit() {
this.cookie = this.cookieService.check('creatures-token');
if (!this.cookie) {
this.router.navigate(['/pa165/login']);
this.dialog.open(ErrorDialogComponent, {
width: '600px',
data: ["User is not logged in."],
});
return;
}
this.checkIfCookieExist();
this.nameFormControl = new FormControl('', [
Validators.required,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {CookieService} from "ngx-cookie-service";
import {AddMonstersToAreaComponent} from "../../add-monsters-to-area-dialog/add-monsters-to-area-dialog.component";
import {ApplicationConfig, CONFIG_TOKEN} from "../../app-config";
import {FormControl, Validators} from "@angular/forms";
import {ErrorDialogComponent} from "../../error-dialog/error-dialog.component";

@Component({
selector: 'app-area-detail',
Expand Down Expand Up @@ -40,6 +41,14 @@ export class AreaDetailComponent implements OnInit {

ngOnInit() {
this.cookie = this.cookieService.check('creatures-token');
if (!this.cookie) {
this.router.navigate(['/pa165/login']);
this.dialog.open(ErrorDialogComponent, {
width: '600px',
data: ["User is not logged in."],
});
return;
}
this.checkIsAdminCookie();
this.loadData();
this.nameFormControl = new FormControl('', [
Expand Down Expand Up @@ -96,7 +105,7 @@ export class AreaDetailComponent implements OnInit {
removeMonsterFromArea(monsterId){
this.cookie = this.cookieService.check('creatures-token');
this.checkIfCookieExist();
this.http.put(this.config.apiEndpoint + '/pa165/rest/auth/areas/' + this.areaId + '/removeMonsterFromArea?monsterId='+ monsterId , null, {responseType: 'text', withCredentials: true}).subscribe(
this.http.post(this.config.apiEndpoint + '/pa165/rest/auth/areas/' + this.areaId + '/removeMonsterFromArea?id='+ monsterId , null, {responseType: 'text', withCredentials: true}).subscribe(
data => {
console.log("Removing monster with id: " + monsterId + " from area with id: " + this.areaId + "was successful.");
this.loadData();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import {Component, Inject, OnInit} from '@angular/core';
import { MatTableDataSource } from '@angular/material';
import {MatDialog, MatTableDataSource} from '@angular/material';
import { HttpClient } from '@angular/common/http';
import { Area } from '../../entity.module';
import {Router} from "@angular/router";
import {CookieService} from "ngx-cookie-service";
import {ApplicationConfig, CONFIG_TOKEN} from "../../app-config";
import {ErrorDialogComponent} from "../../error-dialog/error-dialog.component";

@Component({
selector: 'app-areas',
Expand All @@ -23,10 +24,19 @@ export class AreasComponent implements OnInit {
constructor(private http: HttpClient,
private cookieService: CookieService,
private router: Router,
private dialog: MatDialog,
@Inject(CONFIG_TOKEN) private config: ApplicationConfig) {}

ngOnInit() {
this.cookie = this.cookieService.check('creatures-token');
if (!this.cookie) {
this.router.navigate(['/pa165/login']);
this.dialog.open(ErrorDialogComponent, {
width: '600px',
data: ["User is not logged in."],
});
return;
}
this.checkIsAdminCookie();
this.loadAreas();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,6 @@ export class HomeComponent implements OnInit {
this.cookie = this.cookieService.check('creatures-token');
if (!this.cookie) {
this.router.navigate(['/pa165/login']);
this.dialog.open(ErrorDialogComponent, {
width: '600px',
data: ["User is not logged in."],
});
return;
}
this.loadMostDangerousAreas();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
</div>
<div>
<mat-form-field>
<input matInput #weight placeholder="Weight" value="{{monster.weight}}" disabled="{{!isAdmin}}"
<input disabled="{{!isAdmin}}" matInput #weight placeholder="Weight" value="{{monster.weight}}"
pattern="^(([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)|([0-9]*))$" [formControl]="weightFormControl">
<mat-error *ngIf="weightFormControl.hasError('pattern')">
This is not valid number!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
}

.previousButtons{
margin-right: 35.5%;
margin-right: 30.5%;
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@

@RestController
@RequestMapping(ApiUris.ROOT_URI_AREAS)
public class AreaController {
public class AreasController {

private final static Logger log = LoggerFactory.getLogger(AreaController.class);
private final static Logger log = LoggerFactory.getLogger(AreasController.class);

private final AreaFacade areaFacade;
private final MonsterFacade monsterFacade;
private final RoleResolver roleResolver;

@Inject
public AreaController(AreaFacade areaFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
public AreasController(AreaFacade areaFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
this.areaFacade = areaFacade;
this.monsterFacade = monsterFacade;
this.roleResolver = roleResolver;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
*/
@RestController
@RequestMapping(ApiUris.ROOT_URI_WEAPONS)
public class WeaponController {
private static final Logger log = LoggerFactory.getLogger(WeaponController.class);
public class WeaponsController {
private static final Logger log = LoggerFactory.getLogger(WeaponsController.class);

private final WeaponFacade weaponFacade;

Expand All @@ -43,7 +43,7 @@ public class WeaponController {
private final RoleResolver roleResolver;

@Inject
public WeaponController(WeaponFacade weaponFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
public WeaponsController(WeaponFacade weaponFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
this.weaponFacade = weaponFacade;
this.monsterFacade = monsterFacade;
this.roleResolver = roleResolver;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package cz.fi.muni.pa165.rest.controllers.unsecured;

import cz.fi.muni.pa165.facade.AreaFacade;
import cz.fi.muni.pa165.facade.MonsterFacade;
import cz.fi.muni.pa165.rest.ApiUris;
import cz.fi.muni.pa165.rest.controllers.AreasController;
import cz.fi.muni.pa165.rest.security.RoleResolver;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author Vojtech Sassmann &lt;[email protected]&gt;
*/
@RestController
@RequestMapping(ApiUris.ROOT_URI_UNSECURED_AREAS)
public class NotSecuredAreasController extends AreasController {
public NotSecuredAreasController(AreaFacade areaFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
super(areaFacade, monsterFacade, roleResolver);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
*/
@RestController
@RequestMapping(ApiUris.ROOT_URI_UNSECURED_MONSTERS)
public class UnsecuredMonstersController extends MonstersController {
public UnsecuredMonstersController(MonsterFacade monsterFacade, RoleResolver roleResolver) {
public class NotSecuredMonstersController extends MonstersController {
public NotSecuredMonstersController(MonsterFacade monsterFacade, RoleResolver roleResolver) {
super(monsterFacade, roleResolver);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
*/
@RestController
@RequestMapping(ApiUris.ROOT_URI_UNSECURED_USERS)
public class UnsecuredUsersController extends UsersController {
public UnsecuredUsersController(UserFacade monsterFacade, RoleResolver roleResolver) {
public class NotSecuredUsersController extends UsersController {
public NotSecuredUsersController(UserFacade monsterFacade, RoleResolver roleResolver) {
super(monsterFacade, roleResolver);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package cz.fi.muni.pa165.rest.controllers.unsecured;

import cz.fi.muni.pa165.facade.MonsterFacade;
import cz.fi.muni.pa165.facade.WeaponFacade;
import cz.fi.muni.pa165.rest.ApiUris;
import cz.fi.muni.pa165.rest.controllers.WeaponsController;
import cz.fi.muni.pa165.rest.security.RoleResolver;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author Vojtech Sassmann &lt;[email protected]&gt;
*/
@RestController
@RequestMapping(ApiUris.ROOT_URI_UNSECURED_WEAPONS)
public class NotSecuredWeaponsController extends WeaponsController {
public NotSecuredWeaponsController(WeaponFacade weaponFacade, MonsterFacade monsterFacade, RoleResolver roleResolver) {
super(weaponFacade, monsterFacade, roleResolver);
}
}
Loading

0 comments on commit d3e0e64

Please sign in to comment.