Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

assignement_ponz #5

Open
wants to merge 29 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0de8fa7
initial setup
gregfilipczak Aug 16, 2017
5649eee
broken
KaraThrash Aug 16, 2017
876debc
login
gregfilipczak Aug 16, 2017
d655b74
middlewareeeeeeee work pleaser
KaraThrash Aug 16, 2017
77d1937
working routes
gregfilipczak Aug 16, 2017
4c93532
math time
KaraThrash Aug 16, 2017
2978ea4
mo mo money
KaraThrash Aug 16, 2017
be47c83
mony mony mony
KaraThrash Aug 16, 2017
12b1b36
working on recursive display
gregfilipczak Aug 16, 2017
571acf4
populate?
KaraThrash Aug 16, 2017
903a1c0
bugs bugs
gregfilipczak Aug 16, 2017
814d389
problem with populate
KaraThrash Aug 16, 2017
07994e9
score one for underscore
KaraThrash Aug 16, 2017
1447d16
scrum
gregfilipczak Aug 16, 2017
389f306
working on looping issue
gregfilipczak Aug 17, 2017
a999941
or is this already ruined
KaraThrash Aug 17, 2017
80fcb61
loop works, promise all ice crteam
KaraThrash Aug 17, 2017
a932819
recursive nightmare
gregfilipczak Aug 17, 2017
02f3d52
async problems math works
KaraThrash Aug 17, 2017
2734bcc
back to not working
gregfilipczak Aug 17, 2017
9a4f123
its working!
KaraThrash Aug 17, 2017
05d35c0
t
gregfilipczak Aug 17, 2017
a9e3963
fixing views
gregfilipczak Aug 17, 2017
aa9b43f
the trappp....azoid
KaraThrash Aug 17, 2017
a9a60c2
style garbage
KaraThrash Aug 17, 2017
67b1265
shop and purchases up
gregfilipczak Aug 17, 2017
decd114
Merge branch 'master' of https://github.com/gregfilipczak/project_ponz
KaraThrash Aug 17, 2017
a50bc17
the illuminati
KaraThrash Aug 17, 2017
e57f6ee
Update README.md
KaraThrash Aug 17, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
Greg and Dan


# Ponz.io
Building Ponz.io, with its endearingly upside-down-triangle-shaped business model.
14 changes: 14 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!doctype html>
<html>


<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="styles.css">


<div id="trapezoid1"> <p>1</p></div>
<div id="trapezoid2"><p>1</p> </div>
<div id="trapezoid3"> <p>1</p></div>
<div id="trapezoid4"> <p>1</p></div>
<div id="trapezoid5"> <p>1</p></div>
</html>
119 changes: 119 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
const express = require("express");
const app = express();
const cookieParser = require("cookie-parser");
const bodyParser = require("body-parser");
const expressSession = require("express-session");
const exphbs = require("express-handlebars");
const shop = require("./routers/shop");
const pyramid = require("./pyramid");
const {
createSignedSessionId,
loginMiddleware,
loggedInOnly,
loggedOutOnly
} = require("./session/Session.js");

var flash = require("express-flash-messages");
app.use(flash());
var payOut = require("./moneyLogic");
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(`${__dirname}/public`));
app.use(
expressSession({
secret: process.env.secret || "keyboard cat",
saveUninitialized: false,
resave: false
})
);

app.engine(
"handlebars",
exphbs({ defaultLayout: "main", partialsDir: "views/partials" })
);
app.set("view engine", "handlebars");
app.use(loginMiddleware);
const User = require("./models/User");
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/project_ponz");

app.use("/shop", shop);

app.get("/", loggedInOnly, (req, res) => {
console.log(req.user);
User.findOne({ username: req.user.username }).then(user => {
pyramid(user._id).then(results => {
console.log(JSON.stringify(results, null, 2));
return res.render("index2", { results, user });
});
});
});
app.get("/pyramid", loggedInOnly, (req, res) => {
console.log(req.user);
User.findOne({ username: req.user.username }).then(user => {
pyramid(user._id).then(results => {
console.log(JSON.stringify(results, null, 2));
return res.render("index", { results, user });
});
});
});
app.get("/login", loggedOutOnly, (req, res) => {
res.render("login");
});
app.get("/money", loggedInOnly, (req, res) => {
payOut(req.user.referrerId);

// res.render("login");
});
app.get("/logout", loggedInOnly, (req, res) => {
res.cookie("sessionId", "");
res.redirect("/");
});

app.get("/register/:id", (req, res) => {
res.render("register", { id: req.params.id });
});

app.post("/register/:id", loggedOutOnly, (req, res) => {
User.findOne({ username: req.body.username }).then(foundUser => {
if (foundUser === null) {
let newUser = {};
newUser.username = req.body.username;
newUser.password = req.body.password;
newUser.referrals = [];
newUser.AnkhMorporkDollars = -100;
if (req.params.id !== "new") {
newUser.referrerId = req.params.id;
} else {
newUser.referrerId = 1;
}
User.create(newUser).then(newUser => {
const sessionId = createSignedSessionId(newUser.username);
res.cookie("sessionId", sessionId);
payOut(newUser.referrerId, newUser.id);
return res.redirect("/");
});
} else {
return res.redirect("/login");
}
});
});

app.post("/login", loggedOutOnly, (req, res) => {
User.findOne({ username: req.body.username }).then(foundUser => {
if (foundUser === null) {
return res.redirect("/login");
}
if (foundUser.validatePassword(req.body.password)) {
const sessionId = createSignedSessionId(foundUser.username);
res.cookie("sessionId", sessionId);
return res.redirect("/");
} else {
return res.redirect("/login");
}
});
});

app.listen(3000, "0.0.0.0", (req, res) => {
console.log("listening on port 3000");
});
34 changes: 34 additions & 0 deletions models/User.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const mongoose = require("mongoose");
var bluebird = require("bluebird");
mongoose.Promise = bluebird;
const Schema = mongoose.Schema;
const bcrypt = require("bcrypt");
const uniqueValidator = require("mongoose-unique-validator");

const UserSchema = new Schema(
{
username: { type: String, unique: true, required: true },
passwordHash: { type: String, require: true },
referrerId: String,
referrals: [{ type: Schema.Types.ObjectId, ref: "User" }],
AnkhMorporkDollars: Number,
goodies: []
},
{
timestamps: true
}
);

UserSchema.plugin(uniqueValidator);

UserSchema.virtual("password").set(function(value) {
this.passwordHash = bcrypt.hashSync(value, 2);
});

UserSchema.methods.validatePassword = function(password) {
return bcrypt.compareSync(password, this.passwordHash);
};

const User = mongoose.model("User", UserSchema);

module.exports = User;
27 changes: 27 additions & 0 deletions moneyLogic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const User = require("./models/User");
var payOut = async function(referrerId, referralId) {
try {
var zref = await User.update(
{ _id: referrerId },
{ $push: { referrals: referralId } }
);
} catch (e) {}
let currentPayout = 40;
while (referrerId != 1) {
let foundReferrer = await User.findOne({ _id: referrerId });
let newTotal = foundReferrer.AnkhMorporkDollars + currentPayout;

try {
var z = await User.update(
{ _id: referrerId },
{ AnkhMorporkDollars: newTotal }
);
} catch (e) {}
referrerId = foundReferrer.referrerId;
currentPayout *= 0.5;
if (currentPayout < 1) {
currentPayout = 1;
}
}
};
module.exports = payOut;
Loading