Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions Server/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
const express = require('express');
const app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var path = require('path');

var session = require('express-session');
var router = require('./router');
var bodyParser = require('body-parser');
var cors = require('cors');

app.use(session({secret : 'userSession'}));
app.use('/static', express.static(path.join(__dirname, '../public/src/app')));
// app.get('/', function (req, res) {
// res.sendFile(__dirname + '/html/Chat.html');
// });

app.use('/', router);

// var corsOptions = {
// origin: 'http://localhost:4200',
// "methods": "GET,HEAD,PUT,PATCH,POST,DELETE"
// };

//app.use('*',cors(corsOptions));


var userSession;
var allUsers = [{"username": "Orel"}];

io.on('connection', function(socket){
socket.on('chat message', function(user, msg, color){
console.log(user + ': ' + msg);
io.emit('chat message', user, msg, color);
});
});

http.listen(3000, function(){
console.log('app is running on *:3000');
});

module.exports.app = app;
// module.exports.cors = cors;
// module.exports.corsOptions = corsOptions;
module.exports.allUsers = allUsers;
module.exports.userSession = userSession;
31 changes: 31 additions & 0 deletions Server/login.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

var fs = require('fs');
var app = require('./app');

exports.login = function(username, password, session){

var loggedIn = false;

var usersList = JSON.parse(fs.readFileSync('users.json', 'utf8'));

for (var index = 0; index < (usersList.length) && (!loggedIn); index++){

// If the username and password are correct
if ((usersList[index].username === username) &&
(usersList[index].password === password)){
loggedIn = true;
}
}

if (loggedIn){
// TODO: Create session

app.userSession = session;
app.userSession.username = username;

app.allUsers.push({"username" : username});

}

return (loggedIn);
};
59 changes: 59 additions & 0 deletions Server/router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
var express = require('express');
var router = express.Router();
var path = require('path');

var signIn = require('./signin');
var login = require('./login');

var app = require('./app');



router.get('/login', loginRouter);
router.get('/', Authentication, homePage);
router.post('/signup', Authentication, signUpRouter);


function Authentication(req, res, next){

if (app.userSession == undefined){
res.redirect('/login');
}
else {
next();
}
}

function homePage(req, res){
//res.sendFile(path.join(__dirname + '/portal-client/dist/index.html'));
res.send('Home page');
}

function loginRouter(req, res){

var username = req.query.username;
var password = req.query.password;


//res.sendFile(path.join(__dirname , '../public/src/app/' + 'app.component.html'));

var result = login.login(username, password, req.session);

res.send(result);
}

function signUpRouter(req, res){

var username = req.body.username;
var password = req.body.password;

if (signIn.signIn(username, password)){
res.send('Signed in');
}
// Username already exist
else {
res.send('Username already exist');
}
}

module.exports = router;
27 changes: 27 additions & 0 deletions Server/signin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

var fs = require('fs');
var usersJsonFile = 'users.json';

exports.signIn = function(username, password){

var userNameExist = false;

var usersList = JSON.parse(fs.readFileSync(usersJsonFile, 'utf8'));

for (var index = 0; index < (usersList.length) && (!userNameExist); index++){

if (usersList[index].username === username){
userNameExist = true;
}
}

if (userNameExist){
return false;
}
else{
// Add the user
fs.appendFile(usersJsonFile, JSON.stringify({"username" : username, "password" : password}));

return true;
}
};
22 changes: 22 additions & 0 deletions Server/users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[
{
"username" : "Orel",
"password" : "123456"
},
{
"username" : "Assaf",
"password" : "123456"
},
{
"username" : "Omer",
"password" : "123456"
},
{
"username" : "Saar",
"password" : "123456"
},
{
"username" : "Aviv",
"password" : "123456"
}
]
60 changes: 60 additions & 0 deletions public/.angular-cli.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"project": {
"name": "team-chat"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"project": "src/tsconfig.app.json",
"exclude": "**/node_modules/**"
},
{
"project": "src/tsconfig.spec.json",
"exclude": "**/node_modules/**"
},
{
"project": "e2e/tsconfig.e2e.json",
"exclude": "**/node_modules/**"
}
],
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"component": {}
}
}
13 changes: 13 additions & 0 deletions public/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false
44 changes: 44 additions & 0 deletions public/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist
/tmp
/out-tsc

# dependencies
/node_modules

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
testem.log
/typings

# e2e
/e2e/*.js
/e2e/*.map

# System Files
.DS_Store
Thumbs.db

.idea
27 changes: 27 additions & 0 deletions public/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# TeamChat

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.5.0.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
14 changes: 14 additions & 0 deletions public/e2e/app.e2e-spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { AppPage } from './app.po';

describe('team-chat App', () => {
let page: AppPage;

beforeEach(() => {
page = new AppPage();
});

it('should display welcome message', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('Welcome to app!');
});
});
11 changes: 11 additions & 0 deletions public/e2e/app.po.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { browser, by, element } from 'protractor';

export class AppPage {
navigateTo() {
return browser.get('/');
}

getParagraphText() {
return element(by.css('app-root h1')).getText();
}
}
14 changes: 14 additions & 0 deletions public/e2e/tsconfig.e2e.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}
Loading