Skip to content
This repository was archived by the owner on Jul 28, 2018. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
71cacf9
LoginTask1
dukadiesel Nov 21, 2017
7b93947
service adapter
dukadiesel Nov 21, 2017
c16359f
create authentication service
dukadiesel Nov 21, 2017
134c6af
Merge pull request #7 from nikolaneskovic/login
marina-workco Nov 21, 2017
11a3e93
Merge pull request #8 from nikolaneskovic/serviceAdapter
marina-workco Nov 21, 2017
0299f1f
post method fixed
dukadiesel Nov 22, 2017
ad25ea7
task4
dukadiesel Nov 22, 2017
be3619d
#5
dukadiesel Nov 22, 2017
a2afd5e
Merge pull request #10 from nikolaneskovic/logInRegisterUser
marina-workco Nov 22, 2017
c117364
Merge branch 'master' into dandrugi
nikolaneskovic Nov 22, 2017
d4815a2
Merge pull request #11 from nikolaneskovic/dandrugi
nikolaneskovic Nov 22, 2017
6e19248
error handler
dukadiesel Nov 22, 2017
22f0571
userAuthentication
dukadiesel Nov 22, 2017
ea5ed0a
validate client
dukadiesel Nov 22, 2017
1fc6ec9
error client side
dukadiesel Nov 23, 2017
b7454af
Merge pull request #14 from nikolaneskovic/6_scenario_error_handler
nikolaneskovic Nov 23, 2017
4ce416d
redirection to home page
dukadiesel Nov 23, 2017
b96cab6
error handler client side
dukadiesel Nov 23, 2017
22e9a5e
Merge pull request #15 from nikolaneskovic/6_scenario_error_handler
nikolaneskovic Nov 23, 2017
8b283fc
task7 deo
dukadiesel Nov 23, 2017
646ef61
Merge branch 'master' into task7
nikolaneskovic Nov 23, 2017
fd18ca8
Merge pull request #16 from nikolaneskovic/task7
nikolaneskovic Nov 23, 2017
e79c554
taskNo7
dukadiesel Nov 23, 2017
9c64010
Merge pull request #17 from nikolaneskovic/task7
nikolaneskovic Nov 23, 2017
ac96da1
imported profoile data
dukadiesel Nov 23, 2017
953fc5d
Merge pull request #18 from nikolaneskovic/8_profilePage
nikolaneskovic Nov 23, 2017
e306365
modalBox created
dukadiesel Nov 23, 2017
4e1d00d
Merge pull request #21 from nikolaneskovic/8_profilePage
nikolaneskovic Nov 24, 2017
5c2632a
edit user profile
dukadiesel Nov 24, 2017
654d7f1
Merge pull request #23 from nikolaneskovic/9_task_extendDataService
nikolaneskovic Nov 24, 2017
4979b7a
error handler refactoring
dukadiesel Nov 24, 2017
ec5bb14
people page created
dukadiesel Nov 25, 2017
ae30962
user-profile-linkCreated
dukadiesel Nov 25, 2017
7f48c83
user profile available
dukadiesel Nov 25, 2017
945a21d
css style
marina-workco Nov 26, 2017
e98000c
css styling
marina-workco Nov 26, 2017
55ae746
css style1
marina-workco Nov 26, 2017
abde1f7
Merge pull request #25 from nikolaneskovic/9_task_extendDataService
nikolaneskovic Nov 27, 2017
96c5526
filterUsers
dukadiesel Nov 27, 2017
2ae470c
Merge pull request #26 from nikolaneskovic/12_task_feedPage
nikolaneskovic Nov 27, 2017
9e9454c
insant jos malo
dukadiesel Nov 27, 2017
9e4bd6c
Merge pull request #27 from nikolaneskovic/task111
nikolaneskovic Nov 27, 2017
e4e98cb
search button
dukadiesel Nov 27, 2017
53d7d94
Merge pull request #28 from nikolaneskovic/13-task-searchButton
nikolaneskovic Nov 27, 2017
31735d0
Upload search!
dukadiesel Nov 27, 2017
e93746e
upload search - finished
dukadiesel Nov 27, 2017
32e8ce5
input polja
dukadiesel Nov 27, 2017
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
3,412 changes: 2,371 additions & 1,041 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
"author": "BIT",
"license": "ISC",
"dependencies": {
"axios": "^0.17.1",
"babel-polyfill": "^6.26.0",
"react": "^16.1.0",
"react-dom": "^16.1.0",
"react-modal": "^3.1.3",
"react-router-dom": "^4.2.2"
},
"devDependencies": {
Expand Down
5 changes: 5 additions & 0 deletions reminder.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-izvuci podatke za svakog user-a preko profile DTO
-uradi validaciju edit profile forme
-sa stranice People do svog naloga treba da dodjes na stranicu profile koja ima edit dugme, a ne na stranicu People/:userID
-sredi Search dugme
-sredi div za error na login formi i na register formi
24 changes: 22 additions & 2 deletions src/components/app.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
import React from "react";
import LoginPage from "./login/loginPage";
import LoginForm from "./login/loginForm";
import RegisterForm from "./login/registerForm";
import { Switch, Route, Redirect } from "react-router-dom";
import MainPage from "./common/mainPage";
import AuthenticationService from "./../services/authenticationService";

import HelloWorld from "./helloWorld/helloWorld";

class App extends React.Component {
constructor(props) {
super(props);
this.authenticationService = new AuthenticationService();
}


render() {
return <HelloWorld />;

if (!this.authenticationService.isUserAuthenticated()) {
return (
<Switch>
<Redirect exact from="/" to="/login" />
<Route exact path="/login" component={LoginPage} />
<Route exact path="/register" component={LoginPage} />
</Switch>

);
}

return <MainPage />;
}
}


export default App;
12 changes: 12 additions & 0 deletions src/components/common/footer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from "react";

const Footer = () => {
return (

<footer className="footer">
Copyright Ⓒ <span > Team Candies </span>
</footer>
);

};
export default Footer;
36 changes: 36 additions & 0 deletions src/components/common/header.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import React from "react";
import LogOutButton from "../common/logOutButton";
import { Link } from "react-router-dom";

const Header = () => {

return (
<div className="navbar navbar-expand-lg navbar-dark bg-primary">
<div className='container'>
<Link className="navbar-brand" to="/feed">Bitbook</Link>

<div className="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul className="navbar-nav mr-auto mt-2 mt-lg-0">
<li className="nav-item active">
<Link className="nav-link" to="/profile">Profile<span className="sr-only">(current)</span></Link>
</li>
<li className="nav-item active">
<Link className="nav-link" to="/people">People<span className="sr-only">(current)</span></Link>
</li>
<li className="nav-item active">
<Link className="nav-link" to="/feed">Feed<span className="sr-only">(current)</span></Link>
</li>
</ul>

<LogOutButton />
</div>
</div>
</div>




);
};

export default Header;
26 changes: 26 additions & 0 deletions src/components/common/logOutButton.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from "react";
import AuthenticationService from "../../services/authenticationService";

class LogOutButton extends React.Component {
constructor(props) {
super(props);
this.authenticationService = new AuthenticationService();
this.handleClickLogOut = this.handleClickLogOut.bind(this);
}

handleClickLogOut() {
this.authenticationService.logOut();
}

render() {
return (<button className="btn btn-secondary btn" type="button" name="action" id="logout" onClick={this.handleClickLogOut}>
LogOut</button>);
}
}

export default LogOutButton;





33 changes: 33 additions & 0 deletions src/components/common/mainPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React from "react";
import Header from "./header";
import Footer from "./footer";
import ProfilePage from "../profile/profilePage";
import { Switch, Route } from "react-router-dom";
import People from "../peoplePage/people";
import UserProfile from "../peoplePage/userProfile";
import FeedPage from "../feed/feedPage";

class MainPage extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<Header />

<Switch>
<Route exact path="/profile" component={ProfilePage} />
<Route exact path="/people" component={People} />
<Route path="/people/:id" component={UserProfile} />
<Route path="/feed" component={FeedPage} />

</Switch>

<Footer />
</div>
);
}
};

export default MainPage;
32 changes: 32 additions & 0 deletions src/components/common/searchInput.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from "react";
import PropTypes from "prop-types";


export default class Search extends React.Component {
constructor(props) {
super(props);
this.state = {
searchString: ""
};
this.handleChange = this.handleChange.bind(this);
}

handleChange(event) {
const value = event.target.value;
this.setState({ searchString: value });

this.props.useSearchString(value);
}

render() {
return (<div className="col-12">
<input className="searchInput" value={this.state.searchString} onChange={this.handleChange} placeholder="Search" />
</div>
);
}

}
Search.propTypes = {
useSearchString: PropTypes.func,
};

12 changes: 12 additions & 0 deletions src/components/feed/feedPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from "react";

class FeedPage extends React.Component {
constructor(props) {
super(props);
}
render() {
return (<div></div>);
}
}

export default FeedPage;
13 changes: 0 additions & 13 deletions src/components/helloWorld/helloWorld.js

This file was deleted.

111 changes: 111 additions & 0 deletions src/components/login/loginForm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import React from "react";
import { Link } from "react-router-dom";

import FetchDataService from "../../services/fetchDataService";
import AuthenticationService from "../../services/authenticationService";
import RedirectionService from "../../services/redirectService";
import HandleErrorService from "../../services/handleError";

class LoginForm extends React.Component {
constructor(props) {
super(props);
this.state = {
username: "",
password: "",
emptyInput: "",
passLength: "",
invalidEmail: "",
errorMsgServer: ""
};
this.importClasses();
this.bindFunction();
}

importClasses() {
this.dataService = new FetchDataService();
this.authenticationService = new AuthenticationService();
this.redirectionService = new RedirectionService();
this.handleErrorService = new HandleErrorService();
}

bindFunction() {
this.handleClick = this.handleClick.bind(this);
this.handleChange = this.handleChange.bind(this);
}

handleChange(event) {
const name = event.target.name;
this.setState({
[name]: event.target.value
});

}

handleClick() {

const data = {
username: this.state.username,
password: this.state.password
};

const emptyInput = this.handleErrorService.validateEmptyField(data);
const passLength = this.handleErrorService.validateInputLength(data.password, 1);
const invalidEmail = this.handleErrorService.validateEmail(data.username);

this.setState({
emptyInput: emptyInput,
passLength: passLength,
invalidEmail: invalidEmail
});

if (emptyInput || passLength || invalidEmail) {
return;
} else {
this.authenticationService.logIn(data, (success) => {
this.redirectionService.redirect("/");

}, (errorMsg) => {
this.setState({ errorMsgServer: errorMsg });
});
}
}

render() {
return (
<div className="row">

<div className="col s12" id="form">
<div className="row">

<div className="input-field col s6">
<label className="login-form"> Username </label> <br />
<input id="input_text" type="text" data-length="25" name="username"
value={this.state.username} onChange={this.handleChange}
/>
</div><br />
<div>{this.state.invalidEmail}</div>


</div>
<div className="row">
<div className="input-field col s6">
<label className="login-form"> Password </label><br />
<input id="input_text" type="password" data-length="25" name="password"
value={this.state.password} onChange={this.handleChange}
/>
</div><br />
<div>{this.state.passLength}</div>
</div>
<div>{this.state.emptyInput}</div>
<button className="btn btn-secondary btn-lg" type="submit" name="action" id="login" onClick={this.handleClick}>
Login
</button>< br />

</div>
</div>
);

}
}

export default LoginForm;
52 changes: 52 additions & 0 deletions src/components/login/loginPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import React from "react";
import LoginForm from "./loginForm";
import RegisterForm from "./registerForm";
import { Switch, Route } from "react-router-dom";
import { Link } from "react-router-dom";


// console.log("Stop! This is a browser feature intended for developers. If someone told you to copy-paste something here to enable a Facebook feature or hack someones account, it is a scam and will give them access to your Facebook account. See bitbook website for more information");

const LoginPage = (props) => {
return (

<div className='container-fluid logInPage'>
<div className="container logInForm">
<div className="row" >
<div className="col-lg-6 welcome" >

<h1>Welcome to BitBook</h1>
<p>Lorem ipsum dolor sit amet, ad vis mazim legere virtute. Per ne labore graecis menandri. Vel mutat causae ut, ferri debet omnium vim et. Ea mel delenit consetetur, ne convenire philosophia pri, equidem omittam blandit no est. Id dicta nostro qui. Reque iisque nominavi sed in, eam in nulla consequat, sea philosophia definitionem et</p>
</div>

<div className="col-lg-6">



<div className="table">

<div className="row" id="thead">
<div className="col-sm-6 btnBlue radiusBtnLeft">
<Link to="/login">Login</Link>
</div>
<div className="col-sm-6 btnBlue radiusBtnRight">
<Link to="/register">Register</Link>
</div>
</div>
<div className="col-lg-12">
<Switch>
<Route exact path="/" component={LoginForm} />
<Route path="/login" component={LoginForm} />
<Route path="/register" component={RegisterForm} />
</Switch>
</div>
</div>
</div>
</div>
</div>
</div>
);
};


export default LoginPage;
Loading