diff --git a/backend/server.ts b/backend/server.ts index 2be3e8df..cde74f13 100644 --- a/backend/server.ts +++ b/backend/server.ts @@ -26,7 +26,6 @@ export class Server { this.app.use(_express.static(path.resolve(__dirname, './../frontend'))); this.app.use('/node_modules',_express.static(path.resolve(__dirname, './../node_modules'))); - this.app.use('/common',_express.static(path.resolve(__dirname, './../common'))); //TODO:remove after adding webpack var renderIndex = (req: _express.Request, res: _express.Response) => { res.sendFile(path.resolve(__dirname, './../frontend/index.html')); diff --git a/common/MessageTypes.ts b/common/MessageTypes.ts new file mode 100644 index 00000000..3372953e --- /dev/null +++ b/common/MessageTypes.ts @@ -0,0 +1,14 @@ +export var MessageTypes = { + Client:{ + Login:{ + Authenticate:"Authenticate" + } + + }, + Server:{ + Login:{ + Authenticated:"Authenticated" + } + + } +}; \ No newline at end of file diff --git a/common/Utils.ts b/common/Utils.ts new file mode 100644 index 00000000..d8970e21 --- /dev/null +++ b/common/Utils.ts @@ -0,0 +1,10 @@ +/// + +export class Utils { + + static clone(object:T):T { + return JSON.parse(JSON.stringify(object)); + } + + +} diff --git a/common/enities/User.ts b/common/enities/User.ts deleted file mode 100644 index 722acf57..00000000 --- a/common/enities/User.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class User { - constructor(private name?:string = null,private email?:string = null, private password?:string = null){} -} \ No newline at end of file diff --git a/common/entities/Error.ts b/common/entities/Error.ts new file mode 100644 index 00000000..d6129cba --- /dev/null +++ b/common/entities/Error.ts @@ -0,0 +1,3 @@ +export class Error{ + +} \ No newline at end of file diff --git a/common/entities/LoginCredential.ts b/common/entities/LoginCredential.ts new file mode 100644 index 00000000..2d6d587e --- /dev/null +++ b/common/entities/LoginCredential.ts @@ -0,0 +1,5 @@ +export class LoginCredential{ + constructor(public username?:string, public password?:string){ + + } +} \ No newline at end of file diff --git a/common/entities/Message.ts b/common/entities/Message.ts new file mode 100644 index 00000000..47871d11 --- /dev/null +++ b/common/entities/Message.ts @@ -0,0 +1,5 @@ +import {Error} from "./Error"; + +export class Message{ + constructor(public error:Error,public result:T){} +} \ No newline at end of file diff --git a/common/entities/User.ts b/common/entities/User.ts new file mode 100644 index 00000000..996e33a5 --- /dev/null +++ b/common/entities/User.ts @@ -0,0 +1,3 @@ +export class User { + constructor(public name?:string,public email?:string, public password?:string){} +} \ No newline at end of file diff --git a/frontend/app/app.component.ts b/frontend/app/app.component.ts index 5b6bbc68..e8d12f61 100644 --- a/frontend/app/app.component.ts +++ b/frontend/app/app.component.ts @@ -3,6 +3,8 @@ import { Component } from 'angular2/core'; import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router'; import {LoginComponent} from "./login/login.component"; +import {NetworkService} from "./model/network.service"; +import {LoginService} from "./login/login.service"; @@ -12,7 +14,9 @@ import {LoginComponent} from "./login/login.component"; template: ``, directives: [ROUTER_DIRECTIVES], providers: [ - ROUTER_PROVIDERS + ROUTER_PROVIDERS, + NetworkService, + LoginService ] }) @RouteConfig([ diff --git a/frontend/app/login/login.component.html b/frontend/app/login/login.component.html index 175eb481..1a31f1d9 100644 --- a/frontend/app/login/login.component.html +++ b/frontend/app/login/login.component.html @@ -1,7 +1,7 @@
- - + +
diff --git a/frontend/app/login/login.component.ts b/frontend/app/login/login.component.ts index dd14f9e3..312cd6e8 100644 --- a/frontend/app/login/login.component.ts +++ b/frontend/app/login/login.component.ts @@ -1,7 +1,8 @@ /// import { Component, OnInit } from 'angular2/core'; -import {User} from '../../../common/enities/User'; +import {LoginCredential} from '../../../common/entities/LoginCredential'; +import {LoginService} from "./login.service"; @Component({ selector: 'login', @@ -9,9 +10,9 @@ import {User} from '../../../common/enities/User'; styleUrls: ['app/login/login.component.css'] }) export class LoginComponent{ - user:User; - constructor() { - this.user = new User(); + user: LoginCredential; + constructor(private _loginService: LoginService) { + this.user = new LoginCredential(); } } diff --git a/frontend/app/login/login.service.ts b/frontend/app/login/login.service.ts new file mode 100644 index 00000000..176ab78e --- /dev/null +++ b/frontend/app/login/login.service.ts @@ -0,0 +1,35 @@ +/// + +import {Injectable} from 'angular2/core'; +import {NetworkService} from "../model/network.service"; +import {OnInit} from "angular2/core"; +import {MessageTypes} from "../../../common/MessageTypes"; +import {Utils} from "../../../common/Utils"; +import {LoginCredential} from "../../../common/entities/LoginCredential"; +import {User} from "../../../common/entities/User"; +import {Message} from "../../../common/entities/Message"; + +@Injectable() +export class LoginService implements OnInit{ + + private _authenticating:LoginCredential; + constructor(private _networkService: NetworkService){ + + } + + ngOnInit() { + this._networkService.socketIO.on(MessageTypes.Server.Login.Authenticated, (message:Message) => { + if(message.result.name == this._authenticating.username || message.result.email == this._authenticating.username){ + + } + }); + } + + public login(user:LoginCredential):Promise { + this._networkService.socketIO.emit(MessageTypes.Client.Login.Authenticate, user); + this._authenticating = Utils.clone(user); + } + + + +} \ No newline at end of file diff --git a/frontend/app/model/network.service.ts b/frontend/app/model/network.service.ts new file mode 100644 index 00000000..e78e907c --- /dev/null +++ b/frontend/app/model/network.service.ts @@ -0,0 +1,20 @@ +/// + +import * as io from 'socket.io-client'; +import {Injectable} from 'angular2/core'; +import {OnInit} from "angular2/core"; + +@Injectable() +export class NetworkService implements OnInit{ + + private _socketIO: SocketIOClient.Socket; + + ngOnInit() { + this._socketIO = io(); + } + + + get socketIO():SocketIOClient.Socket { + return this._socketIO; + } +} diff --git a/package.json b/package.json index 129d8e9c..ad6582f8 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "reflect-metadata": "~0.1.2", "rxjs": "^5.0.0-beta.2", "socket.io": "^1.4.5", + "socket.io-client": "^1.4.5", "ts-loader": "^0.8.1", "webpack": "^1.12.14", "zone.js": "^0.5.15" diff --git a/tsd.json b/tsd.json index 33b2c0ed..2ac1d1a5 100644 --- a/tsd.json +++ b/tsd.json @@ -19,6 +19,12 @@ }, "serve-static/serve-static.d.ts": { "commit": "0d622d857f97d44ea7dcad2b3edec1f23c48fe9e" + }, + "socket.io/socket.io.d.ts": { + "commit": "d22516f9f089de107d7e7d5938566377370631f6" + }, + "socket.io-client/socket.io-client.d.ts": { + "commit": "d22516f9f089de107d7e7d5938566377370631f6" } } }