diff --git a/common/Utils.ts b/common/Utils.ts index 52172790..f807251c 100644 --- a/common/Utils.ts +++ b/common/Utils.ts @@ -41,5 +41,19 @@ export class Utils { } }); } + + public static enumToArray(EnumType):Array<{key:number;value:string;}>{ + let arr:Array<{key:number;value:string;}> = []; + for(let enumMember in EnumType){ + if(!EnumType.hasOwnProperty(enumMember)){ + continue; + } + let key = parseInt(enumMember, 10); + if (key >= 0) { + arr.push({key: key, value: EnumType[enumMember]}); + } + } + return arr; + } } diff --git a/common/entities/User.ts b/common/entities/User.ts index dc93c4e0..43d723b9 100644 --- a/common/entities/User.ts +++ b/common/entities/User.ts @@ -3,9 +3,10 @@ export enum UserRoles{ Guest = 1, User = 2, Admin = 3, - Developer = 4 + Developer = 4, + } -export class User { +export class User { constructor(public id?:number,public name?:string,public email?:string, public password?:string, public role?:UserRoles){} } \ No newline at end of file diff --git a/frontend/app/admin/admin.component.html b/frontend/app/admin/admin.component.html index b8f7e3a1..a0995c3e 100644 --- a/frontend/app/admin/admin.component.html +++ b/frontend/app/admin/admin.component.html @@ -5,7 +5,41 @@

User management

- + +
+ + + + + diff --git a/frontend/app/admin/admin.component.ts b/frontend/app/admin/admin.component.ts index bab5c71c..b0930ea0 100644 --- a/frontend/app/admin/admin.component.ts +++ b/frontend/app/admin/admin.component.ts @@ -1,27 +1,44 @@ /// -import {Component, OnInit} from 'angular2/core'; +import {Component, OnInit} from "angular2/core"; import {AuthenticationService} from "../model/network/authentication.service.ts"; import {Router} from "angular2/router"; import {FrameComponent} from "../frame/frame.component"; - +import {User, UserRoles} from "../../../common/entities/User"; +import {FORM_DIRECTIVES} from "angular2/common"; +import {Utils} from "../../../common/Utils"; +import {AdminService} from "./admin.service"; + @Component({ selector: 'admin', templateUrl: 'app/admin/admin.component.html', - styleUrls:['app/admin/admin.component.css'], - directives:[FrameComponent] + styleUrls: ['app/admin/admin.component.css'], + directives: [FrameComponent, FORM_DIRECTIVES], + providers: [AdminService] }) -export class AdminComponent implements OnInit{ - constructor(private _authService: AuthenticationService, private _router: Router) { +export class AdminComponent implements OnInit { + + private newUser = new User(); + private userRoles:Array; + + constructor(private _authService:AuthenticationService, private _router:Router, private _adminService:AdminService) { + this.userRoles = Utils.enumToArray(UserRoles); } - ngOnInit(){ - if (!this._authService.isAuthenticated()) { + ngOnInit() { + if (!this._authService.isAuthenticated() || this._authService.getUser().role < UserRoles.Admin) { this._router.navigate(['Login']); return; } } + initNewUser() { + this.newUser = new User(); + this.newUser.role = UserRoles.User; + } + addNewUser(){ + this._adminService.createUser(this.newUser); + } } diff --git a/frontend/app/admin/admin.service.ts b/frontend/app/admin/admin.service.ts index 382592a9..ed6c9873 100644 --- a/frontend/app/admin/admin.service.ts +++ b/frontend/app/admin/admin.service.ts @@ -3,19 +3,19 @@ import {Injectable} from 'angular2/core'; import {NetworkService} from "../model/network/network.service.ts"; import {Http} from "angular2/http"; -import {Message} from "../../../common/entities/Message"; -import {Directory} from "../../../common/entities/Directory"; +import {Message} from "../../../common/entities/Message"; +import {User} from "../../../common/entities/User"; @Injectable() -export class GalleryService extends NetworkService{ +export class AdminService extends NetworkService{ constructor(_http:Http){ super(_http); } - public getDirectory(directoryName:string): Promise>{ - return this.getJson("/gallery/"+directoryName); + public createUser(user:User): Promise>{ + return this.putJson("/user",{newUser:user}); } diff --git a/frontend/app/admin/newuser/new.user.admin.component.html b/frontend/app/admin/newuser/new.user.admin.component.html index a355eb82..8b137891 100644 --- a/frontend/app/admin/newuser/new.user.admin.component.html +++ b/frontend/app/admin/newuser/new.user.admin.component.html @@ -1,9 +1 @@ - - - User management - - - - - diff --git a/frontend/app/login/login.component.html b/frontend/app/login/login.component.html index 9c89e100..ba7fddcb 100644 --- a/frontend/app/login/login.component.html +++ b/frontend/app/login/login.component.html @@ -1,11 +1,11 @@
- diff --git a/frontend/app/model/network/authentication.service.ts b/frontend/app/model/network/authentication.service.ts index 0619c929..6f57ac82 100644 --- a/frontend/app/model/network/authentication.service.ts +++ b/frontend/app/model/network/authentication.service.ts @@ -62,6 +62,9 @@ export class AuthenticationService{ return (this._user && this._user != null) ? true : false; } + public getUser(){ + return this._user; + } } diff --git a/test/backend/initMongo.ts b/test/backend/initMongo.ts index e197f7ea..a737c823 100644 --- a/test/backend/initMongo.ts +++ b/test/backend/initMongo.ts @@ -12,4 +12,9 @@ DatabaseManager.getInstance((err)=>{ DatabaseManager.getInstance().disconnect(); process.exit() }); + + userManager.createUser(new User(0,"admin","admin@admin.hu","admin",UserRoles.Developer),(err)=>{ + DatabaseManager.getInstance().disconnect(); + process.exit() + }); }); \ No newline at end of file