Commit 148735bcc77063b3daef55beb3ec787f8d9413e9

Authored by Tetranoir
1 parent 6f2c93016e

added resetpassword

Showing 5 changed files with 69 additions and 3 deletions Inline Diff

angular.module('flashy', [ 1 1 angular.module('flashy', [
'flashy.LogoutController', 2 2 'flashy.LogoutController',
'flashy.LoginController', 3 3 'flashy.LoginController',
'flashy.RootController', 4 4 'flashy.RootController',
'flashy.FeedController', 5 5 'flashy.FeedController',
'flashy.DeckController', 6 6 'flashy.DeckController',
'flashy.ClassAddController', 7 7 'flashy.ClassAddController',
'flashy.RequestResetController', 8 8 'flashy.RequestResetController',
'flashy.UserService', 9 9 'flashy.UserService',
10 'flashy.ResetPasswordController',
'ngCookies']). 10 11 'ngCookies']).
config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 11 12 config(['$stateProvider', '$urlRouterProvider', '$httpProvider',
'$locationProvider', 12 13 '$locationProvider',
function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) { 13 14 function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) {
'use strict'; 14 15 'use strict';
$httpProvider.defaults.withCredentials = true; 15 16 $httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.xsrfCookieName = 'csrftoken'; 16 17 $httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 17 18 $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$locationProvider.html5Mode(true); 18 19 $locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/home'); 19 20 $urlRouterProvider.otherwise('/home');
$stateProvider. 20 21 $stateProvider.
state('login', { 21 22 state('login', {
url: '/login', 22 23 url: '/login',
templateUrl: 'templates/login.html', 23 24 templateUrl: 'templates/login.html',
controller: 'LoginController' 24 25 controller: 'LoginController'
}). 25 26 }).
state('logout', { 26 27 state('logout', {
url: '/logout', 27 28 url: '/logout',
templateUrl: 'templates/logout.html', 28 29 templateUrl: 'templates/logout.html',
controller: 'LogoutController' 29 30 controller: 'LogoutController'
}). 30 31 }).
state('root', { 31 32 state('root', {
url: '/', 32 33 url: '/',
templateUrl: 'templates/root.html', 33 34 templateUrl: 'templates/root.html',
controller: 'RootController' 34 35 controller: 'RootController'
}). 35 36 }).
state('feed', { 36 37 state('feed', {
url: '/feed', 37 38 url: '/feed',
templateUrl: 'templates/feed.html', 38 39 templateUrl: 'templates/feed.html',
controller: 'FeedController' 39 40 controller: 'FeedController'
}). 40 41 }).
state('addclass', { 41 42 state('addclass', {
url: '/addclass', 42 43 url: '/addclass',
templateUrl: 'templates/addclass.html', 43 44 templateUrl: 'templates/addclass.html',
controller: 'ClassAddController' 44 45 controller: 'ClassAddController'
}). 45 46 }).
state('deck', { 46 47 state('deck', {
url: '/deck', 47 48 url: '/deck',
templateUrl: 'templates/deck.html', 48 49 templateUrl: 'templates/deck.html',
controller: 'DeckController' 49 50 controller: 'DeckController'
}). 50 51 }).
state('requestpasswordreset', { 51 52 state('requestpasswordreset', {
url: '/requestpasswordreset', 52 53 url: '/requestpasswordreset',
templateUrl: 'templates/requestpasswordreset.html', 53 54 templateUrl: 'templates/requestpasswordreset.html',
controller: 'RequestResetController' 54 55 controller: 'RequestResetController'
}); 55 56 }).
57 state('resetpassword', {
58 url: '/resetpassword',
59 templateUrl: 'templates/resetpassword.html',
60 controller: 'ResetPasswordController'
61 });
56 62
}]); 57 63 }]);
<!DOCTYPE html> 1 1 <!DOCTYPE html>
<html ng-app="flashy"> 2 2 <html ng-app="flashy">
<base href="/app/"> 3 3 <base href="/app/">
<head> 4 4 <head>
<link type="text/css" rel="stylesheet" href="styles/materialize.min.css" media="screen,projection"/> 5 5 <link type="text/css" rel="stylesheet" href="styles/materialize.min.css" media="screen,projection"/>
<!--<link rel="stylesheet" href="styles/bootstrap-3.3.4-dist/css/bootstrap.css"/>--> 6 6 <!--<link rel="stylesheet" href="styles/bootstrap-3.3.4-dist/css/bootstrap.css"/>-->
<link rel="stylesheet" href="flashy.css"/> 7 7 <link rel="stylesheet" href="flashy.css"/>
</head> 8 8 </head>
9 9
<body ng-controller="RootController"> 10 10 <body ng-controller="RootController">
11 11
<ul id="nav" class="side-nav fixed"> 12 12 <ul id="nav" class="side-nav fixed">
<li class="bold"><a ui-sref="login">Login</a></li> 13 13 <li class="bold"><a ui-sref="login">Login</a></li>
<li class="bold"><a ui-sref="addclass">Add Class</a></li> 14 14 <li class="bold"><a ui-sref="addclass">Add Class</a></li>
</ul> 15 15 </ul>
<div class="container" ui-view></div> 16 16 <div class="container" ui-view></div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script> 17 17 <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.14/angular-ui-router.js"></script> 18 18 <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.14/angular-ui-router.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-cookies.js"></script> 19 19 <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-cookies.js"></script>
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script> 20 20 <script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="scripts/materialize.min.js"></script> 21 21 <script type="text/javascript" src="scripts/materialize.min.js"></script>
22 22
<script src="config.js"></script> 23 23 <script src="config.js"></script>
24 24
<script src="scripts/FeedController.js"></script> 25 25 <script src="scripts/FeedController.js"></script>
<script src="scripts/RootController.js"></script> 26 26 <script src="scripts/RootController.js"></script>
<script src="scripts/LoginController.js"></script> 27 27 <script src="scripts/LoginController.js"></script>
<script src="scripts/LogoutController.js"></script> 28 28 <script src="scripts/LogoutController.js"></script>
<script src="scripts/DeckController.js"></script> 29 29 <script src="scripts/DeckController.js"></script>
<script src="scripts/RequestResetController.js"></script> 30 30 <script src="scripts/RequestResetController.js"></script>
<script src="scripts/ClassAddController.js"></script> 31 31 <script src="scripts/ClassAddController.js"></script>
<script src="scripts/UserService.js"></script> 32 32 <script src="scripts/UserService.js"></script>
33 <script src="scripts/ResetPasswordController.js"></script>
scripts/ResetPasswordController.js View file @ 148735b
1 angular.module('flashy.ResetPasswordController', ['ui.router']).
2
3 controller('ResetPasswordController', ['$scope', '$state', '$http',
4 function($scope, $state, $http) {
5 'use strict';
6 var url = document.location.href.split("/");
7 var token = url[url.length-1];
8 var uid = url[url.length-2];
9 $scope.error = false;
10 $scope.confirmResetPass = function(newPassword) {
11 $http.post('/api/reset_password', JSON.stringify({
12 'uid': uid,
13 'token': token
14 }))
15 .success(function(data) {
16 $scope.error = false;
17 $state.go('resetpasssuccess');
18 console.log(data);
19 })
20 .error(function(data, status, header, config) {
21 $scope.error = true;
22 console.log(data);
23 });
24 };
25 $scope.cancelReset = function() {
26 $state.go('login');
27 };
28 }
29 ]);
templates/login.html View file @ 148735b
<div class="container"> 1 1 <div class="container">
<div class="row"> 2 2 <div class="row">
<div class="col s6"> 3 3 <div class="col s6">
<ul class="tabs" tabs> 4 4 <ul class="tabs" tabs>
<li class="tab col s3"><a href="#register-tab">Sign Up</a></li> 5 5 <li class="tab col s3"><a href="#register-tab">Sign Up</a></li>
<li class="tab col s3"><a class="active" href="#login-tab">Login</a></li> 6 6 <li class="tab col s3"><a class="active" href="#login-tab">Login</a></li>
</ul> 7 7 </ul>
</div> 8 8 </div>
<!--LOGIN TAB--> 9 9 <!--LOGIN TAB-->
<div id="login-tab" class="col s12"> 10 10 <div id="login-tab" class="col s12">
<div class="check-element animate-show" role="alert" ng-show="loginError"> 11 11 <div class="check-element animate-show" role="alert" ng-show="loginError">
<span style="color:#8E2323">Invalid username or password!!</span> 12 12 <span style="color:#8E2323">Invalid username or password!!</span>
</div> 13 13 </div>
<div class="row"> 14 14 <div class="row">
<div class="input-field col s6"> 15 15 <div class="input-field col s6">
<input type="email" class="validate" ng-model="loginEmail" placeholder="Email" required/> 16 16 <input id="email" type="email" class="validate" ng-model="loginEmail" placeholder="Email" required/>
<label for="email">Email</label> 17 17 <label for="email">Email</label>
</div> 18 18 </div>
</div> 19 19 </div>
<div class="row"> 20 20 <div class="row">
<div class="input-field col s6"> 21 21 <div class="input-field col s6">
<input type="password" class="validate" ng-model="loginPassword" placeholder="Password" required/> 22 22 <input id="password" type="password" class="validate" ng-model="loginPassword" placeholder="Password" required/>
<label for="password">Password</label> 23 23 <label for="password">Password</label>
</div> 24 24 </div>
</div> 25 25 </div>
<div class="row"> 26 26 <div class="row">
<button class="btn waves-effect waves-light right-align" type="submit" name="action" 27 27 <button class="btn waves-effect waves-light right-align" type="submit" name="action"
ng-click="login(loginEmail, loginPassword)">Login 28 28 ng-click="login(loginEmail, loginPassword)">Login
</button> 29 29 </button>
</div> 30 30 </div>
</div> 31 31 </div>
<!--REGISTER TAB--> 32 32 <!--REGISTER TAB-->
<div id="register-tab" class="col s12"> 33 33 <div id="register-tab" class="col s12">
<div class="row"> 34 34 <div class="row">
<div class="input-field col s6"> 35 35 <div class="input-field col s6">
<input type="email" class="validate" ng-model="loginEmail" placeholder="Email" required/> 36 36 <input type="email" class="validate" ng-model="loginEmail" placeholder="Email" required/>
<label for="email">Email</label> 37 37 <label for="email">Email</label>
</div> 38 38 </div>
</div> 39 39 </div>
<div class="row"> 40 40 <div class="row">
<div class="input-field col s6"> 41 41 <div class="input-field col s6">
<input type="password" class="validate" ng-model="registerPassword" placeholder="Password" required/> 42 42 <input type="password" class="validate" ng-model="registerPassword" placeholder="Password" required/>
<label for="password">Password</label> 43 43 <label for="password">Password</label>
</div> 44 44 </div>
</div> 45 45 </div>
<div class="row"> 46 46 <div class="row">
<button class="btn waves-effect waves-light left-align" type="" name="action" 47 47 <button class="btn waves-effect waves-light left-align" type="" name="action"
ng-click="signUp(loginEmail, registerPassword)">Register 48 48 ng-click="signUp(loginEmail, registerPassword)">Register
</button> 49 49 </button>
</div> 50 50 </div>
</div> 51 51 </div>
</div> 52 52 </div>
<a class="trigger-password-reset" ng-click="triggerPasswordReset()" href="#">Forgot Password?</a> 53 53 <a class="trigger-password-reset" ng-click="triggerPasswordReset()" href="#">Forgot Password?</a>
</div> 54 54 </div>
templates/resetpassword.html View file @ 148735b
1 <div class="container">
2 <div class="row">
3 <h1>Reset Password</h1>
4 </div>
5
6 <div class="row">
7 <form class="col s12">
8 <div class="row" ng-show="error" role="alert">
9 <i style="color:#8E2323" class="mdi-alert-error"></i>
10 <span style="color:#8E2323">Please use link from email!</span>
11 </div>
12 <div class="row">
13 <input id="newpassword" type="password" class="validate" ng-model="newPassword" placeholder="New password" required/>
14 <label for="newpassword">New password</label>
15 </div>
16 <div class="row">
17 <input id="confirmpassword" type="password" class="validate" ng-model="confirmPassword" placeholder="Confirm password" required/>
18 <label for="confirmpassword">Confirm password</label>
19 </div>
20 </form>
21 <div class="row">
22 <button class="btn waves-effect waves-light red" type="submit" name="action"
23 ng-click="cancelReset()">Cancel
24 </button>
25 <button class="btn waves-effect waves-light green" type="submit" name="action"
26 ng-click="confirmResetPass(newPassword)">Confirm
27 </button>
28 </div>
29 </div>
30 </div>