@@ -0,0 +1,153 @@
//************************************************************
// login.js //
// Active Learning 2110 //
// //
// Created by Jeremy Carter on 10/08/16. //
// Copyright © 2016 Odell Mizrahi. All rights reserved. //
// //
// Date Name Description //
// ------- --------- -------------- //
// 08Oct16 J. Carter Initial Design //
// 16Nov16 J. Carter Added AJAX calles to API for //
// login and register //
//************************************************************

$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function()
{
if (o[this.name] !== undefined)
{
if (!o[this.name].push)
{
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
}
else
{
o[this.name] = this.value || '';
}
});
return o;
};

Dominar.Validator.register('passConfirmation', function(confirmPassword) {
return document.getElementById('register-form').password.value === confirmPassword;
});

document.getElementById('login-form').addEventListener('dominarSubmitPassed', function(event)
{
event.preventDefault();

$.ajax(
{
type: 'POST',
url: '/users/login',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify($('#login-form').serializeObject()),
dataType: 'json',
success: function (data)
{
window.location.href = '/dashboard';
},
error: function (e)
{
handleError(e.status);
}
});
});

document.getElementById('register-form').addEventListener('dominarSubmitPassed', function(event)
{
event.preventDefault();

var o = $('#register-form').serializeObject();
o.role = $("#instructor").prop('checked') ? 'instructor' : 'student';
delete o.confirmPassword;
$.ajax(
{
type: 'POST',
url: '/users/',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(o),
dataType: 'json',
success: function (data)
{
alert(JSON.stringify(data));
},
error: function (e)
{
alert(JSON.stringify(e));
alert(JSON.stringify(e.responseJSON));
}
});
});

function handleError(error)
{
switch (error)
{
case 404:
{
alert('Username not found.');
$('#login-form input[id=username]').focus();
$('#login-form input[id=username]').val('');
$('#login-form input[id=username]').blur();
break;
}
case 401:
{
alert('Password incorrect.');
$('#login-form input[id=password]').focus();
$('#login-form input[id=password]').val('');
$('#login-form input[id=password]').blur();
break;
}
}
}

var logval = new Dominar(document.getElementById('login-form'),
{
username:
{
rules: 'required|min:12',
triggers: ['keyup', 'change', 'focusout'],
feedback: false,
message: false
},
password:
{
rules: 'required|min:5|max:20',
triggers: ['keyup', 'change', 'focusout'],
feedback: false,
message: false
}
});

var regval = new Dominar(document.getElementById('register-form'),
{
username:
{
rules: 'required|min:12',
triggers: ['keyup', 'change', 'focusout'],
feedback: false,
message: false
},
password:
{
rules: 'required|min:5|max:20',
triggers: ['keyup', 'change', 'focusout'],
feedback: false,
message: false
},
confirmPassword:
{
rules: 'required|min:5|max:20|passConfirmation',
triggers: ['keyup', 'change', 'focusout'],
feedback: false,
message: false
}
});
@@ -0,0 +1,10 @@
extends default

block content
+navmenu('main-nav', 'left', 'custom')
+img-circle-label('//lh3.googleusercontent.com/-6V8xOA6M7BA/AAAAAAAAAAI/AAAAAAAAAAA/rzlHcD0KYwo/photo.jpg?sz=120', '', 'Keep it 100')
+navbar-menu('Active Learning 2110', 'main-nav')
.container
h1.text-center #{username}
h1.text-center #{id}
h1.text-center #{role}
@@ -0,0 +1,8 @@
extends bootstrap

block body
.login-container
.header.clearfix
block content
footer.footer.voffset3
p.text-center © 2B||!2B
@@ -0,0 +1,45 @@
extends default

block content
h1.text-center #{title}
.row.voffset5
.col-sm-6.col-sm-offset-3.login-box
+tab-list-justified(['Login', 'Register'], 0)
+tab('Login', 'active')
form(id='login-form')
div.input-group.voffset3
span.input-group-addon
+icon('envelope')
+input-simple('email', 'username', 'name@gatech.edu')
div.input-group.voffset3
span.input-group-addon
+icon('lock')
+input-simple('password', 'password', 'password')
div.text-center.voffset5
+submit('Login')
+tab('Register')
form(id='register-form')
div.input-group.voffset3
span.input-group-addon
+icon('envelope')
+input-simple('email', 'username', 'name@gatech.edu')
div.input-group.voffset3
span.input-group-addon
+icon('lock')
+input-simple('password', 'password', 'password')
div.input-group.voffset3
span.input-group-addon
+icon('check')
+input-simple('password', 'confirmPassword', 'confirm password')
div.input-group.voffset4.container-fluid
row.toggle-group
.center-items
.col-xs-6.vcenter
p.paddingt1 Instructor
.col-xs-6.vcenter
input#instructor.tgl.tgl-ios(type="checkbox")
label.tgl-btn(for="instructor")
div.text-center.voffset5
+submit('Register')
block extraScripts
script(src='./scripts/login.js')