1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2025-01-26 05:27:35 +02:00

implementing user creation at admin page

This commit is contained in:
Braun Patrik 2016-05-01 21:30:43 +02:00
parent 5b00de3c10
commit 67d4d2be71
9 changed files with 94 additions and 28 deletions

View File

@ -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;
}
}

View File

@ -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){}
}

View File

@ -5,7 +5,41 @@
<h3 class="panel-title">User management</h3>
</div>
<div class="panel-body">
<button class="button button-primary" (click)="addUser()">+ add user</button>
<button class="btn btn-default" data-toggle="modal" data-target="#myModal" (click)="initNewUser()">+ add
user
</button>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<form (ngSubmit)="onSubmit()" #NewUserForm="ngForm">
<div class="modal-body">
<input type="text" class="form-control" placeholder="Username" autofocus
[(ngModel)]="newUser.name" ngControl="name" #name="ngForm" required>
<input type="password" class="form-control" placeholder="Password"
[(ngModel)]="newUser.password" ngControl="password" #name="ngForm" required>
<select class="form-control" [(ngModel)]="newUser.role" required>
<option *ngFor="let repository of userRoles" [value]="repository.key">{{repository.value}}
</option>
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" data-dismiss="modal"
(click)="addNewUser()"
[disabled]="!NewUserForm.form.valid">Add User
</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -1,27 +1,44 @@
///<reference path="../../browser.d.ts"/>
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<any>;
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);
}
}

View File

@ -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<Message<Directory>>{
return this.getJson("/gallery/"+directoryName);
public createUser(user:User): Promise<Message<string>>{
return this.putJson("/user",{newUser:user});
}

View File

@ -1,9 +1 @@
<app-frame>
<md-card>
<md-card-title>User management</md-card-title>
<md-card-content>
<button md-button (click)="addUser()">+ add user</button>
</md-card-content>
</md-card>
</app-frame>

View File

@ -1,11 +1,11 @@
<div class="container">
<div class="col-sm-offset-3 col-sm-6 col-lg-4 col-lg-offset-4">
<form class="form-signin" (ngSubmit)="onSubmit()" #LoginForm="ngForm">
<form class="form-signin" #LoginForm="ngForm">
<h2 class="form-signin-heading">Please sign in</h2>
<input type="email" class="form-control" placeholder="Email address" autofocus
[(value)]="loginCredential.username" ngControl="name" #name="ngForm" required>
<input type="text" class="form-control" placeholder="Username" autofocus
[(ngModel)]="loginCredential.username" ngControl="name" #name="ngForm" required>
<input type="password" class="form-control" placeholder="Password"
[(value)]="loginCredential.password" ngControl="password" #name="ngForm" required>
[(ngModel)]="loginCredential.password" ngControl="password" #name="ngForm" required>
<br/>
<button class="btn btn-lg btn-primary btn-block" [disabled]="!LoginForm.form.valid" (click)="onLogin()">Sign in</button>
</form>

View File

@ -62,6 +62,9 @@ export class AuthenticationService{
return (this._user && this._user != null) ? true : false;
}
public getUser(){
return this._user;
}
}

View File

@ -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()
});
});