Skip to content
Snippets Groups Projects
Commit 92fcd952 authored by L4072's avatar L4072
Browse files

Corrected database and started role controller

parent ccd6dc96
No related branches found
No related tags found
2 merge requests!59Development to master,!19Corrected database and started role controller
......@@ -13,6 +13,7 @@ import {
GameEntity,
} from './game.entity';
import { FactionEntity } from './faction.entity';
import { type } from 'os';
@Entity('MapDrawing')
export class MapDrawingEntity {
......@@ -22,9 +23,20 @@ import {
@Column({ type: 'json', nullable: true }) data: JSON;
@ManyToOne(type => FactionEntity, faction => faction.mapDrawings)
@ManyToOne(type => FactionEntity, faction => faction.factionId)
faction: FactionEntity;
@ManyToOne(type => GameEntity, gameEntity => gameEntity.id)
gameId: GameEntity;
}
@Entity('Game_Person_MapDrawing')
export class Game_Person_MapDrawingEntity {
@PrimaryGeneratedColumn('uuid') GPmapDrawingId: string;
@Column({ type: 'timestamp' }) GPCTimeStamp: Timestamp;
@ManyToOne(type => Game_PersonEntity, game_person => game_person.gamepersonId)
game_person: Game_PersonEntity;
@ManyToOne(type => MapDrawingEntity, map_drawing => map_drawing.mapDrawingId)
map_drawing: MapDrawingEntity;
}
\ No newline at end of file
......@@ -19,18 +19,8 @@ export class FactionEntity {
@Column({ type: 'text' }) factionPassword: string;
@Column({ type: 'float' }) multiplier: number;
@OneToMany(type => MapDrawingEntity, mapDrawings => mapDrawings.faction)
mapDrawings: MapDrawingEntity[];
@OneToMany(type => ScoreEntity, scores => scores.faction)
scores: ScoreEntity[];
@OneToMany(type => PowerUpEntity, powerUps => powerUps.factions)
powerUps: Faction_PowerUpEntity[];
@OneToMany(type => TaskEntity, tasks => tasks.faction)
tasks: TaskEntity[];
@OneToMany(type => Game_PersonEntity, game_persons => game_persons.faction)
game_persons: Game_PersonEntity[];
@ManyToOne(type => GameEntity, game => game.factions)
game: GameEntity;
@ManyToOne(type => GameEntity, gameEntity => gameEntity.id)
gameId: GameEntity;
}
@Entity('PowerUp')
......@@ -40,21 +30,16 @@ export class PowerUpEntity {
@Column({ type: 'text' }) powerUpDescription: string;
@Column({ type: 'int' }) amount: number;
@Column({ type: 'time' }) cooldown: string;
@OneToMany(type => FactionEntity, factions => factions.powerUps)
factions: Faction_PowerUpEntity[];
}
@Entity('Faction_PowerUp')
export class Faction_PowerUpEntity {
@PrimaryGeneratedColumn('uuid') faction_powerUpId: string;
@ManyToOne(type => FactionEntity, faction => faction.powerUps)
@ManyToOne(type => FactionEntity, faction => faction.factionId)
faction: FactionEntity;
@ManyToOne(type => PowerUpEntity, powerUp => powerUp.factions)
@ManyToOne(type => PowerUpEntity, powerUp => powerUp.powerUpId)
powerUp: PowerUpEntity;
@OneToMany(type => FP_HistoryEntity, histories => histories.faction_PowerUp)
histories: FP_HistoryEntity[];
}
@Entity('FP_History')
......@@ -64,7 +49,7 @@ export class FP_HistoryEntity {
@ManyToOne(
type => Faction_PowerUpEntity,
faction_PowerUp => faction_PowerUp.histories,
faction_PowerUp => faction_PowerUp.faction_powerUpId,
)
faction_PowerUp: Faction_PowerUpEntity;
}
......@@ -75,7 +60,7 @@ export class ScoreEntity {
@Column({ type: 'float' }) score: number;
@Column({ type: 'timestamp' }) scoreTimeStamp: Timestamp;
@ManyToOne(type => FactionEntity, factionName => factionName.scores)
@ManyToOne(type => FactionEntity, factionName => factionName.factionId)
faction: FactionEntity;
}
......@@ -87,8 +72,8 @@ export class TaskEntity {
@Column({ type: 'text' }) taskWinner: string;
@Column({ type: 'bool' }) taskIsActive: boolean;
@ManyToOne(type => FactionEntity, faction => faction.tasks)
@ManyToOne(type => FactionEntity, faction => faction.factionId)
faction: FactionEntity;
/* @ManyToOne(type => PersonEntity, person => person.tasks)
person: PersonEntity; */
@ManyToOne(type => Game_PersonEntity, person => person.gamepersonId)
personId: Game_PersonEntity;
}
......@@ -11,8 +11,8 @@ import {
import { PersonEntity } from '../user/user.entity';
import { GameGroupEntity } from './group.entity';
import { FactionEntity } from './faction.entity';
import { MapDrawingEntity } from './coordinate.entity';
import { FactionEntity, TaskEntity } from './faction.entity';
import { MapDrawingEntity, Game_Person_MapDrawingEntity } from './coordinate.entity';
// table that stores all created games
@Entity('Game')
......@@ -24,8 +24,7 @@ export class GameEntity {
@Column({ type: 'json', nullable: true }) map: JSON;
@Column('timestamp') startdate: Timestamp;
@Column('timestamp') enddate: Timestamp;
@OneToMany(type => FactionEntity, faction => faction.game)
factions: FactionEntity[];
@OneToMany(type => Game_PersonEntity, game_persons => game_persons.game)
game_persons: Game_PersonEntity[];
@OneToMany(type => GameGroupEntity, group => group.game)
......@@ -47,11 +46,11 @@ export class GameEntity {
export class Game_PersonEntity {
@PrimaryGeneratedColumn('uuid') gamepersonId: string;
@Column({ type: 'text', nullable: true }) role: string;
@ManyToOne(type => FactionEntity, faction => faction.game_persons)
@ManyToOne(type => FactionEntity, faction => faction.factionId)
faction: FactionEntity;
@ManyToOne(type => GameEntity, game => game.game_persons)
@ManyToOne(type => GameEntity, game => game.id)
game: GameEntity;
@ManyToOne(type => PersonEntity, person => person.game_persons)
@ManyToOne(type => PersonEntity, person => person.id)
person: PersonEntity;
@OneToOne(type => GameGroupEntity, group => group.leader, {
onDelete: 'CASCADE',
......@@ -75,11 +74,6 @@ export class ObjectivePointEntity {
coordinate: MapDrawingEntity;
@ManyToOne(type => GameEntity, game => game.objective_points)
game: GameEntity;
@OneToMany(
type => ObjectivePoint_HistoryEntity,
op_history => op_history.objective_point,
)
op_history: Game_PersonEntity[];
}
@Entity('ObjectivePoint_History')
......@@ -90,7 +84,7 @@ export class ObjectivePoint_HistoryEntity {
@ManyToOne(
type => ObjectivePointEntity,
objective_point => objective_point.op_history,
objective_point => objective_point.objectivePointId,
)
objective_point: ObjectivePointEntity;
}
......@@ -7,20 +7,21 @@ import {
} from 'typeorm';
import { PersonEntity } from '../user/user.entity';
import { GameEntity, Game_PersonEntity } from 'src/game/game.entity';
/*
Entity: MapMarker
- represents data that database contains on mapmarker
*/
@Entity('MapMarker')
/* @Entity('MapMarker')
export class MapMarkerEntity {
@PrimaryGeneratedColumn('uuid') id: string;
@Column({ type: 'text', nullable: true }) latitude: string;
@Column({ type: 'text', nullable: true }) longitude: string;
@Column({ type: 'timestamp' }) timestamp: Timestamp;
@Column({ type: 'json', nullable: true }) features: JSON;
@ManyToOne(type => PersonEntity, player => player.markers)
player: PersonEntity;
@ManyToOne(type => Game_PersonEntity, player => player.markers)
player: Game_PersonEntity;
}
\ No newline at end of file
*/
\ No newline at end of file
const AccessControl = require('accesscontrol');
const grants = {
admin: {
mapmarker: {
"create:any": [],
"delete:any": [],
"read:any": [],
"update:any": []
},
powerup: {
"create:any": [],
"delete:any": [],
"read:any": [],
"update:any": []
},
faction: {
"create:any": [],
"delete:any": [],
"read:any": [],
"update:any": []
},
players: {
"create:any": [],
"delete:any": [],
"read:any": [],
"update:any": []
}
},
faction_leader: {
mapmarker: {
"create:own": [],
"delete:own": [],
"read:own": []
},
powerup: {
"read:own": []
},
faction: {
"read:own": [],
"update:own": []
},
players: {
"read:own": [],
"update:own": []
}
}
};
const ac = new AccessControl(grants);
/*const express = require ('express');
const router express.Router;
*/
/*const ac = new AccessControl();
ac.grant('faction_leader') // define new or modify existing role. also takes an array.
.createOwn('mapmarker') // equivalent to .createOwn('video', ['*'])
.deleteOwn('mapmarker')
.readOwn('mapmarker')
.grant('admin') // switch to another role without breaking the chain
.extend('user') // inherit role capabilities. also takes an array
.updateAny('mapmarker', ['title']) // explicitly defined attributes
.deleteAny('mapmarker')
.readAny('mapmarker');
/*const*//*let permission = ac.can('user').createOwn('mapmarker');
console.log(permission.granted); // —> true
console.log(permission.attributes); // —> ['*'] (all attributes)
permission = ac.can('admin').updateAny('mapmarker');
console.log(permission.granted); // —> true
console.log(permission.attributes); // —> ['title']
/*router.get('/videos/:title', function (req, res, next) {
const permission = ac.can(req.user.role).readAny('video');
if (permission.granted) {
Video.find(req.params.title, function (err, data) {
if (err || !data) return res.status(404).end();
// filter data by permission attributes and send.
res.json(permission.filter(data));
});
} else {
// resource is forbidden for this user/role
res.status(403).end();
}
});*/
\ No newline at end of file
......@@ -7,8 +7,6 @@ import {
} from 'typeorm';
import * as bcrypt from 'bcryptjs';
import * as jwt from 'jsonwebtoken';
import { MapMarkerEntity } from 'src/mapmarkers/mapmarker.entity';
import {TaskEntity} from '../game/faction.entity'
import {Game_PersonEntity} from '../game/game.entity'
@Entity('Person')
......@@ -16,8 +14,7 @@ export class PersonEntity {
@PrimaryGeneratedColumn('uuid') id: string;
@Column({ type: 'text', unique: true }) name: string;
@Column('text') password: string;
@OneToMany(type => MapMarkerEntity, marker => marker.player)
markers: MapMarkerEntity[];
@OneToMany(type => Game_PersonEntity, game_persons => game_persons.person)
game_persons: Game_PersonEntity[];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment