Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
asteriskayush007 committed Jun 3, 2024
0 parents commit 292dce9
Show file tree
Hide file tree
Showing 10 changed files with 5,621 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
node_modules
134 changes: 134 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
const express = require('express');
const app = express();
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken')
const userModel = require('./models/user');
const postModel = require('./models/post')
const cookieParser = require('cookie-parser');
const { posts } = require('moongose/models');

app.set("view engine", "ejs");
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cookieParser());

app.get('/',function(req,res){
res.render('index');
})

app.get('/login',function(req,res){
res.render('login');
})

app.post('/register',async (req,res)=>{
let {username, name, age, email, password} = req.body;

let user = await userModel.findOne({email})
if(user) return res.status(500).send("User already created");

bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(password, salt, async (err, hash)=>{
// console.log(hash)
let user = await userModel.create({
username,
name,
age,
email,
password:hash
});

let token = jwt.sign({email: email, userid: user._id}, "ahhahahah");
res.cookie("token",token);
res.send("Created...")
});
})
})

app.post('/login',async (req,res)=>{
let {username, name, age, email, password} = req.body;

let user = await userModel.findOne({email})
if(!user) return res.status(500).send("Something Went Wrong");

bcrypt.compare(password, user.password, function(err, result){

if(result) {
let token = jwt.sign({email: email, userid: user._id}, "ahhahahah");
res.cookie("token",token);
res.status(200).redirect("profile");
}
else return res.redirect("/login")
})
})


app.get('/logout',function(req,res){
res.cookie("token","");
res.redirect("/login")
})

app.get('/profile', isLoggedIn , async function(req,res){
let user = await userModel.findOne({email: req.user.email}).populate("posts");
// console.log(user)

res.render("profile", {user})
});

app.get('/like/:id', isLoggedIn , async function(req,res){
let post = await postModel.findOne({_id: req.params.id}).populate("user");
if(post.likes.indexOf(req.user.userid) === -1){
post.likes.push(req.user.userid);
}
else{
post.likes.splice(post.likes.indexOf(req.user.userid),1);
}

await post.save()
res.redirect("/profile")
})


app.get('/edit/:id', isLoggedIn , async function(req,res){
let post = await postModel.findOne({_id: req.params.id}).populate("user");

res.render("edit", {post});
})


app.post('/update/:id', isLoggedIn , async function(req,res){
let post = await postModel.findOneAndUpdate({_id: req.params.id}, {content: req.body.content});

res.redirect("/profile");
})



app.post('/post', isLoggedIn , async function(req,res){
let user = await userModel.findOne({email: req.user.email});
// console.log(user)
let {content} = req.body;
let post = await postModel.create({
user: user._id,
content
});
user.posts.push(post._id);
await user.save();
res.redirect("/profile")
})





function isLoggedIn(req,res, next){
if (req.cookies.token === "") {
res.redirect("/login")
}
else{
let data = jwt.verify(req.cookies.token, "ahhahahah");
req.user = data;
next();
}
}

app.listen(3000);
21 changes: 21 additions & 0 deletions models/post.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const { name } = require("ejs");
const mongoose = require("mongoose");

const postSchema = mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "user"
},
date: {
type: Date,
default: Date.now(),

},
content: String,
likes: [{
type: mongoose.Schema.Types.ObjectId,
ref: "user"
}]
});

module.exports = mongoose.model("post", postSchema);
17 changes: 17 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const { name } = require('ejs');
const mongoose = require('mongoose');
const { posts } = require('moongose/models');
const strictQuery = mongoose.set('strictQuery', true);

mongoose.connect("mongodb://127.0.0.1:27017/authapp")

const userSchema = mongoose.Schema({
username: String,
name: String,
age: Number,
email: String,
password: String,
posts : [{type: mongoose.Schema.Types.ObjectId, ref: "post"}],
})

module.exports = mongoose.model('user',userSchema);
Loading

0 comments on commit 292dce9

Please sign in to comment.