@@ -1,12 +1,18 @@
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var User = mongoose.model('User');
var jwt = require('express-jwt');
var auth = jwt({secret: 'SECRET', userProperty: 'payload'});
//put secret here...payload try npm start here

/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});

var mongoose = require('mongoose');
var passport = require('passport');

var Post = mongoose.model('Post');
var Comment = mongoose.model('Comment');

@@ -17,9 +23,11 @@ router.get('/posts', function(req, res, next) {
res.json(posts);
});
});

router.post('/posts', function(req, res, next) {
//create a new comment
router.post('/posts', auth, function(req, res, next) {
var post = new Post(req.body);
post.author = req.payload.username;
//putting our post.author here = req.payload.usernme;

post.save(function(err, post){
if(err){ return next(err); }
@@ -80,16 +88,16 @@ router.param('comment', function(req, res, next, id) {
});


//
router.put('/posts/:post/upvote', function(req, res, next) {
// upvoting a new post
router.put('/posts/:post/upvote', auth, function(req, res, next) {
req.post.upvote(function(err, post){
if (err) { return next(err); }

res.json(post);
});
});

router.put('/posts/:post/comments/:comment/upvote', function(req, res, next) {
//upvoting a comment
router.put('/posts/:post/comments/:comment/upvote', auth, function(req, res, next) {
req.comment.upvote(function(err, comment){
if (err) { return next(err); }

@@ -98,9 +106,11 @@ router.put('/posts/:post/comments/:comment/upvote', function(req, res, next) {
});
//56cb6cca8d2aaaff04d7030c

router.post('/posts/:post/comments', function(req, res, next) {
router.post('/posts/:post/comments', auth, function(req, res, next) {
var comment = new Comment(req.body);
comment.post = req.post;
comment.author = req.payload.username;
//creating a username here

comment.save(function(err, comment){
if(err){ return next(err); }
@@ -110,6 +120,44 @@ router.post('/posts/:post/comments', function(req, res, next) {
if(err){ return next(err); }

res.json(comment);

});

});
});

});

router.post('/register', function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields'});
}

var user = new User();

user.username = req.body.username;

user.setPassword(req.body.password);

user.save(function (err){
if(err){ return next(err); }

return res.json({token: user.generateJWT()});
});
});
router.post('/login', function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields'});
}

passport.authenticate('local', function(err, user, info){
if(err){ return next(err); }

if(user){
return res.json({token: user.generateJWT()});
} else {
return res.status(401).json(info);
}
})(req, res, next);
});

module.exports = router;
@@ -10,6 +10,14 @@
<style> .align-int { text-align: right }</style>
</head>
<body ng-app="flapperNews">
<nav class="navbar navbar-default pull-right" ng-controller="NavCtrl">
<ul class="nav navbar-nav">
<li ng-show="isLoggedIn()"><a>{{ currentUser() }}</a></li>
<li ng-show="isLoggedIn()"><a href="" ng-click="logOut()">Log Out</a></li>
<li ng-hide="isLoggedIn()"><a href="/#/login">Log In</a></li>
<li ng-hide="isLoggedIn()"><a href="/#/register">Register</a></li>
</ul>
</nav>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<ui-view></ui-view>
@@ -39,8 +47,12 @@
<a href="#/posts/{{post._id}}">Comments</a>
</span>
</div>
<div ng-hide="isLoggedIn()">
<h3>You need to <a href="/#/login">Log In</a> or <a href="/#/register">Register</a> before you can add a post.</h3>
</div>

<form ng-submit="addPost()"
ng-show="isLoggedIn()"
style="margin-top:30px;">
<h3>Add a new post</h3>

@@ -69,6 +81,9 @@
<span ng-hide="post.link">
{{post.title}}
</span>
<span ng-show="post.author">
posted by <a>{{post.author}}</a> |
</span>
</h3>
</div>

@@ -94,5 +109,65 @@
<button type="submit" class="btn btn-primary">Post</button>
</form>
</script>

<script type="text/ng-template" id="/register.html">
<div class="page-header">
<h1>Flapper News</h1>
</div>

<div ng-show="error" class="alert alert-danger row">
<span>{{ error.message }}</span>
</div>

<form ng-submit="register()"
style="margin-top:30px;">
<h3>Register</h3>

<div class="form-group">
<input type="text"
class="form-control"
placeholder="Username"
ng-model="user.username"></input>
</div>
<div class="form-group">
<input type="password"
class="form-control"
placeholder="Password"
ng-model="user.password"></input>
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
</script>

<script type="text/ng-template" id="/login.html">
<div class="page-header">
<h1>Flapper News</h1>
</div>

<div ng-show="error" class="alert alert-danger row">
<span>{{ error.message }}</span>
</div>

<form ng-submit="logIn()"
style="margin-top:30px;">
<h3>Log In</h3>

<div class="form-group">
<input type="text"
class="form-control"
placeholder="Username"
ng-model="user.username"></input>
</div>
<div class="form-group">
<input type="password"
class="form-control"
placeholder="Password"
ng-model="user.password"></input>
</div>
<button type="submit" class="btn btn-primary">Log In</button>
</form>
</script>

</body>
</html>
</html>