summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bowerrc3
-rw-r--r--bower.json9
-rw-r--r--package.json1
-rw-r--r--public/assets/javascripts/ui/signin.js319
-rw-r--r--server/index.js1
-rw-r--r--server/lib/auth.js20
-rw-r--r--server/lib/schemas/User.js8
-rwxr-xr-xviews/app.ejs2
-rw-r--r--views/controls/settings.ejs7
-rwxr-xr-xviews/home.ejs4
-rw-r--r--views/partials/newproject.ejs2
-rw-r--r--views/partials/signin.ejs4
-rw-r--r--views/profile.ejs6
13 files changed, 367 insertions, 19 deletions
diff --git a/.bowerrc b/.bowerrc
new file mode 100644
index 0000000..f21ed66
--- /dev/null
+++ b/.bowerrc
@@ -0,0 +1,3 @@
+{
+ "directory": "public/assets/javascripts/vendor/bower_components"
+}
diff --git a/bower.json b/bower.json
new file mode 100644
index 0000000..ace209e
--- /dev/null
+++ b/bower.json
@@ -0,0 +1,9 @@
+{
+ "name": "vvalls",
+ "version": "1.0.0",
+ "private": true,
+ "dependencies": {
+ "jquery": "1.11.0",
+ "momentjs": "~2.5.1"
+ }
+}
diff --git a/package.json b/package.json
index 554a678..62197f8 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"geolib": "~1.3.5",
"connect-mongo": "~0.4.1",
"passport": "~0.2.0",
+ "passport-local": "~1.0.0",
"passport-twitter": "~1.0.2",
"passport-facebook": "~1.0.3",
"passport.socketio": "~3.0.1",
diff --git a/public/assets/javascripts/ui/signin.js b/public/assets/javascripts/ui/signin.js
index e69de29..06e3d44 100644
--- a/public/assets/javascripts/ui/signin.js
+++ b/public/assets/javascripts/ui/signin.js
@@ -0,0 +1,319 @@
+
+
+var SignIn = function(){
+ var base = this;
+
+ base.init = function(){
+ base.bind()
+ }
+
+ base.bind = function(){
+ $("[data-role='show-signup-modal']").click(function(){
+ $(".mediaDrawer.signup").addClass("active");
+ })
+ }
+
+ base.show = function(){
+ }
+
+ base.hide = function(){
+ }
+
+}
+
+var SignUp = function(){
+ var base = this;
+
+ base.init = function(){
+ base.bind()
+ }
+
+ base.bind = function(){
+ $("[data-role='show-signin-modal']").click(function(){
+ $(".mediaDrawer.signin").addClass("active");
+ })
+ }
+
+ base.show = function(){
+ }
+
+ base.hide = function(){
+ }
+}
+
+ $(".close").click(function(){
+ $(".mediaDrawer, .room1").removeClass("active editing");
+ $("body").removeClass("noOverflow");
+ });
+
+
+
+
+
+/*
+
+
+function bind () {
+
+ if(is_mobile) {
+ $("html").addClass("mobile");
+ }
+ else {
+ $("html").addClass("desktop");
+ }
+
+ $.fn.clickToToggle = function(fn){
+ $(this).click(function(e){
+ e.stopPropagation()
+ var isActive = ! $(this).hasClass("icon-close")
+ disable_mode()
+ fn(isActive)
+ $(this).toggleClass("icon-close", isActive);
+ })
+ }
+
+ $(".addMedia").clickToToggle(function(isActive){
+ $(".mediaDrawer").toggleClass("active", isActive);
+ $(".fileUpload").toggleClass("active", isActive);
+ });
+
+ $(".room1 .editBtn").click(function () {
+ var room = $(this).parent();
+ room.addClass('editing');
+ $(this).siblings('.formHolder').find('[type="submit"]').one('click', function (evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ room.removeClass('editing');
+ });
+ });
+
+ // Place media logic
+ var $floatingImg = $('.floatingImg');
+
+ function placeMedia(evt, img) {
+ // JULES DO YO THANG
+ alert('Place media at (' + evt.pageX + ', ' + evt.pageY + ')');
+ }
+
+ $('.mediaContainer img').mousedown(function(e){
+ e.preventDefault()
+ e.stopPropagation()
+ })
+ $('.mediaContainer img').click(function (e) {
+ e.stopPropagation()
+ $(".mediaDrawer, .fileUpload, .addMedia").removeClass("active icon-close");
+ $floatingImg.attr('src', $(this).attr('src'));
+ function _followCursor(e) {
+ $floatingImg.parent().css({
+ top: (e.pageY - ($floatingImg.height() / 2)) + 'px',
+ left: (e.pageX - ($floatingImg.width() / 2)) + 'px'
+ });
+ }
+ $(window).on('mousemove', _followCursor);
+ $(window, this).one('click', function () {
+ $floatingImg.attr('src', '');
+ $(window).off('mousemove', _followCursor);
+ $floatingImg.parent().removeClass('edit');
+ });
+ $floatingImg.parent().addClass('edit');
+ _followCursor(e);
+ });
+
+ $(".icon-arrow-resize").clickToToggle(function(isActive){
+ $(".image").toggleClass("active", isActive);
+ });
+ $(".icon-map").click(function(){
+ $("#minimap").toggleClass("hide");
+ $(this).toggleClass('hidden');
+ });
+ $(".icon-ios7-keypad-outline").clickToToggle(function(isActive){
+ $(".wallpaper").toggleClass("active", isActive);
+ $("body").removeClass("pastePaper");
+ });
+ $(".paper1").click(function(){
+ $("body").toggleClass("pastePaper");
+ $(this).toggleClass("active");
+ });
+
+ $(".icon-ios7-sunny-outline").clickToToggle(function(isActive){
+ $(".lightcontrol").toggleClass("active", isActive);
+ });
+ $(".delete-image-toggle").clickToToggle(function(isActive){
+ $("body").toggleClass("deleteActive", isActive);
+ });
+ $(".icon-key").clickToToggle(function(isActive){
+ $(".settings").toggleClass("active", isActive);
+ });
+
+
+
+ $(".edit-text-toggle").clickToToggle(function(isActive){
+ $(".image").toggleClass("editText", isActive);
+ });
+
+
+
+ $(".foundToggle").click(function(){
+ $(".foundMedia").addClass("active");
+ $(".myMedia").addClass("inactive");
+ $('a').removeClass("active");
+ $(this).addClass("active");
+ });
+
+ $(".yourMedia").click(function(){
+ $(".foundMedia").removeClass("active");
+ $(".myMedia").removeClass("inactive");
+ $('a').removeClass("active");
+ $(this).addClass("active");
+ });
+
+ $("#deleteMedia").click(function(){
+ $("body").toggleClass("deleteArmed");
+ });
+
+ $("#startpoint").click(function(){
+ $(this).toggleClass("active");
+ $("#startText").toggleClass("hide");
+ $("#moveText").toggleClass("show");
+ });
+
+
+ $(".deleteArmed .mediaContainer").click(function(){
+ $(this).addClass("deleted");
+ });
+
+
+ $("#createProject").click(function(){
+ $(".mediaDrawer.newProject").toggleClass("active");
+ $("body").addClass("noOverflow")
+ });
+
+ $(".templates span").click(function(){
+ $(".templates span").removeClass("active");
+ $(this).toggleClass("active");
+ });
+
+ $(document).on("click", ".icon-close", disable_mode)
+
+ function disable_mode(){
+ $(".icon-close").removeClass("icon-close")
+ $('.mediaDrawer,.fileUpload,.image,.lightcontrol,.settings,.wallpaper').removeClass("active");
+ $(".image").removeClass("editText")
+ $("body").removeClass("deleteArmed")
+ }
+
+ $("#shadow-control").on({
+ mousedown: function(){ app.dragging = true },
+ change: function(){
+ var hex = (~~($(this).int() / 100 * 0xff)).toString(10)
+ if (hex.length == 1) hex = "0" + hex;
+ var color = "rgba(" + [hex, hex, hex, "1.0"] + ")"
+ $(".face").css("border-color", color)
+ }
+ })
+
+ $("#brightness-control").on({
+ mousedown: function(){ app.dragging = true },
+ change: function(){
+ var hex = (~~($(this).int() / 100 * 0xff)).toString(10)
+ var color = "rgba(" + [hex, hex, hex, "0.9"] + ")"
+ $("body,.face").css("background-color", color)
+ }
+ })
+
+
+ //
+ // EDIT IMAGE HOVER MENU
+
+ var hideEditImageMenuTimeout
+ environment.image.el.addEventListener('mouseover', function(e){
+ environment.image.el.classList.add('hover')
+ var offset = $(".image").offset()
+ offset.left = max(0, offset.left + 30)
+ offset.top = max(0, offset.top + 50)
+ $(".edit-image.menu").show().offset( offset )
+ clearTimeout(hideEditImageMenuTimeout)
+ })
+ environment.image.el.addEventListener('mouseout', function(e){
+ environment.image.el.classList.remove('hover')
+ hideEditImageMenuTimeout = setTimeout(function(){
+ $(".edit-image.menu").hide()
+ }, 50)
+ })
+ $(".edit-image.menu").on({
+ mouseover: function(){
+ clearTimeout(hideEditImageMenuTimeout)
+ },
+ mouseout: function(){
+ hideEditImageMenuTimeout = setTimeout(function(){
+ $(".edit-image.menu").hide()
+ }, 50)
+ },
+ mousedown: function(e){
+ e.stopPropagation()
+ },
+ mouseup: function(e){
+ e.stopPropagation()
+ }
+ })
+
+
+ //
+ // EDIT VIDEO HOVER MENU
+
+ var hideEditVideoMenuTimeout
+ environment.video.el.addEventListener('mouseover', function(e){
+ environment.video.el.classList.add('hover')
+ var offset = $(".video").offset()
+ offset.left = max(0, offset.left + 30)
+ offset.top = max(0, offset.top + 50)
+ $(".edit-video.menu").show().offset( offset )
+ clearTimeout(hideEditImageMenuTimeout)
+ })
+ environment.video.el.addEventListener('mouseout', function(e){
+ environment.video.el.classList.remove('hover')
+ hideEditVideoMenuTimeout = setTimeout(function(){
+ $(".edit-video.menu").hide()
+ }, 50)
+ })
+ $(".edit-video.menu").on({
+ mouseover: function(){
+ clearTimeout(hideEditVideoMenuTimeout)
+ },
+ mouseout: function(){
+ hideEditVideoMenuTimeout = setTimeout(function(){
+ $(".edit-video.menu").hide()
+ }, 50)
+ },
+ mousedown: function(e){
+ e.stopPropagation()
+ },
+ mouseup: function(e){
+ e.stopPropagation()
+ }
+ })
+ $(".icon-ios7-reload,.ios7-arrow-forward").click(function(){
+ $(this).toggleClass('toggled')
+ })
+
+ //
+ // ALL DONE
+
+ $('body').removeClass('loading');
+}
+
+
+$(function(){
+
+ var classes = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen'];
+
+ $(".bio").addClass(choice(classes));
+
+ function randomizeList(listObj) {
+ $(listObj).each(function() {
+ $(this).addClass(classes[Math.Random()*classes.size]);
+ });
+ }
+})
+
+*/
diff --git a/server/index.js b/server/index.js
index d5afe6e..59dc7a5 100644
--- a/server/index.js
+++ b/server/index.js
@@ -58,6 +58,7 @@ auth.init()
// Initialize views
app.get('/', views.home);
app.get('/login', views.login);
+app.post('/login', auth.loggedIn('local'));
app.get('/logout', auth.logout);
app.get('/auth/twitter', auth.login('twitter'));
app.get('/auth/twitter/callback', auth.loggedIn('twitter'));
diff --git a/server/lib/auth.js b/server/lib/auth.js
index 22917c3..b7a2772 100644
--- a/server/lib/auth.js
+++ b/server/lib/auth.js
@@ -14,6 +14,8 @@ var auth = {
passport.serializeUser(auth.serializeUser);
passport.deserializeUser(auth.deserializeUser);
+ passport.use(auth.verifyLocalUser)
+
passport.use(new TwitterStrategy({
consumerKey: process.env.VVALLS_TWITTER_KEY || '0L5blfBIapqhpons8bCXdIoGM',
consumerSecret: process.env.VVALLS_TWITTER_SECRET || '5EKW7m7inoODqYSKbp7cadBKFp1FghBl4MBDoXNcUjKtodZfuP',
@@ -56,7 +58,7 @@ var auth = {
accept(null, false);
},
- // technically these returns the login middleware
+ // technically these return the login middleware
login: function (strategy) {
return passport.authenticate(strategy);
},
@@ -83,6 +85,19 @@ var auth = {
});
},
+ verifyLocalUser: function (username, password, done) {
+ User.findOne({ username: username }, function(err, user){
+ if (err) { return done(err); }
+ if (!user) {
+ return done(null, false, { message: 'Incorrect username.' });
+ }
+ if (! user.validPassword(password)) {
+ return done(null, false, { message: 'Incorrect password.' });
+ }
+ return done(null, user);
+ });
+ },
+
insertTwitterUser: function (accessToken, refreshToken, profile, done) {
process.nextTick(function () {
var userData = {
@@ -90,7 +105,7 @@ var auth = {
username: profile.username,
displayName: profile.displayName,
photo: profile.photos[0].value,
- links: ["https://twitter.com/" + profile.username]
+ twitterName: profile.username,
};
User.findOne({twitter_id: profile.id}, function(err, data){
@@ -114,7 +129,6 @@ var auth = {
username: profile.username || profile.displayName.toLowerCase().replace(/ /g,'-'),
displayName: profile.displayName,
photo: "http://graph.facebook.com/" + profile.id + "/picture?type=large",
- links: [profile.profileUrl]
};
User.findOne({facebook_id: profile.id}, function(err, data){
diff --git a/server/lib/schemas/User.js b/server/lib/schemas/User.js
index 9fd07e5..76a1255 100644
--- a/server/lib/schemas/User.js
+++ b/server/lib/schemas/User.js
@@ -59,12 +59,14 @@ var UserSchema = new mongoose.Schema({
type: String,
default: ""
},
- links: [
- { type: String, default: "" }
- ],
+ website: String,
+ twitterName: String,
isAdmin: { type: Boolean, default: false }
});
+UserSchema.methods.validPassword = function (pw) {
+ return this.password !== pw
+}
module.exports = exports = mongoose.model('user', UserSchema);
exports.schema = UserSchema;
diff --git a/views/app.ejs b/views/app.ejs
index 2186129..4a10915 100755
--- a/views/app.ejs
+++ b/views/app.ejs
@@ -9,7 +9,7 @@
<div id="scene"></div>
<div class="rapper">
- <a href="/front.html" class="logo"><img src="/assets/img/logo4.svg"></a>
+ <a href="/" class="logo"><img src="/assets/img/logo4.svg"></a>
<a href="/profile.html"><span class="icon-ios7-person-outline profile"></span></a>
[[ include controls/toolbar ]]
diff --git a/views/controls/settings.ejs b/views/controls/settings.ejs
index 4336ddf..f92d1c7 100644
--- a/views/controls/settings.ejs
+++ b/views/controls/settings.ejs
@@ -23,7 +23,6 @@
<label class="radio-group__label" for="opt_1">
Everyone
</label>
-
<input id="opt_2" class="radio-group__option" type="radio" name="opt">
<label class="radio-group__label" for="opt_2">
Just for me
@@ -34,8 +33,8 @@
<button>Save</button>
</div>
<div class="setting subButtons">
- <a href="#">Clone </a>
- <a href="#">Clear </a>
- <a href="#" id="deleteRoom">Delete </a>
+ <a href="#">Clone</a>
+ <a href="#">Clear</a>
+ <a href="#" id="deleteRoom">Delete</a>
</div>
</div> \ No newline at end of file
diff --git a/views/home.ejs b/views/home.ejs
index 155f2ca..3246523 100755
--- a/views/home.ejs
+++ b/views/home.ejs
@@ -13,8 +13,8 @@
<body class="loading">
<div class="rapper page">
<a href="/" class="logo"><img src="assets/img/logo4.svg"></a>
- <a href="#" class="signUp topLink">Sign Up</span></a>
- <a href="#" class="signIn topLink">Sign In</span></a>
+ <a href="#" data-role="show-signup-modal" class="signUp topLink">Sign Up</span></a>
+ <a href="#" data-role="show-signup-modal" class="signIn topLink">Sign In</span></a>
<table class="demo">
<tr>
<td class="video" style="background-image:url(https://s3.amazonaws.com/luckyplop/6450f5b88c5c043a4551eff8902b1728f813bd66.jpg)">
diff --git a/views/partials/newproject.ejs b/views/partials/newproject.ejs
index 6f99b14..fc34295 100644
--- a/views/partials/newproject.ejs
+++ b/views/partials/newproject.ejs
@@ -1,5 +1,5 @@
<div class="mediaDrawer fixed animate newProject">
- <span class="bigClose">X</span>
+ <span class="close">X</span>
<div class="box">
<div class="templates">
diff --git a/views/partials/signin.ejs b/views/partials/signin.ejs
index 6d5e530..a9a2bba 100644
--- a/views/partials/signin.ejs
+++ b/views/partials/signin.ejs
@@ -1,5 +1,5 @@
<div class="mediaDrawer fixed animate signin">
- <span class="bigClose">X</span>
+ <span class="close">X</span>
<div class="box">
<form id="signIn">
<a href="/auth/facebook" class="facebook"><b class="icon-social-facebook"></b><span>Sign in with Facebook</span></a>
@@ -24,7 +24,7 @@
</div>
<div class="mediaDrawer fixed animate signup">
- <span class="bigClose">X</span>
+ <span class="close">X</span>
<div class="box">
<form id="signUp">
<a href="/auth/facebook" class="facebook"><b class="icon-social-facebook"></b><span>Sign up with Facebook</span></a>
diff --git a/views/profile.ejs b/views/profile.ejs
index 2865274..5ac75c5 100644
--- a/views/profile.ejs
+++ b/views/profile.ejs
@@ -6,8 +6,8 @@
</head>
<body class="loading">
<div class="rapper page">
- <a href="/front.html" class="logo"><img src="assets/img/logo4.svg"></a>
- <a href="/edit-profile.html" class="topLink editProfile">edit profile <span class="icon-ios7-gear-outline \"></span></a>
+ <a href="/" class="logo"><img src="assets/img/logo4.svg"></a>
+ <a href="/edit-profile.html" class="topLink editProfile">edit profile <span class="icon-ios7-gear-outline"></span></a>
<table class="profilepage">
<tr>
@@ -32,7 +32,7 @@
<td class="border room1">
<div class="editBtn">edit</div>
<div class="formHolder fixed animate">
- <span class="bigClose">X</span>
+ <span class="close">X</span>
<div class="formInner">
<form enctype="multipart/form-data" method="post">
<ul>